Home | History | Annotate | Line # | Download | only in ic
      1  1.1  rkujawa /*	$NetBSD: isp1763reg.h,v 1.1 2026/10/11 16:09:06 rkujawa Exp $	*/
      2  1.1  rkujawa 
      3  1.1  rkujawa /*-
      4  1.1  rkujawa  * Copyright (c) 2026 The NetBSD Foundation, Inc.
      5  1.1  rkujawa  * All rights reserved.
      6  1.1  rkujawa  *
      7  1.1  rkujawa  * This code is derived from software contributed to The NetBSD Foundation
      8  1.1  rkujawa  * by Radoslaw Kujawa.
      9  1.1  rkujawa  *
     10  1.1  rkujawa  * Redistribution and use in source and binary forms, with or without
     11  1.1  rkujawa  * modification, are permitted provided that the following conditions
     12  1.1  rkujawa  * are met:
     13  1.1  rkujawa  * 1. Redistributions of source code must retain the above copyright
     14  1.1  rkujawa  *    notice, this list of conditions and the following disclaimer.
     15  1.1  rkujawa  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  rkujawa  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  rkujawa  *    documentation and/or other materials provided with the distribution.
     18  1.1  rkujawa  *
     19  1.1  rkujawa  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  1.1  rkujawa  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  1.1  rkujawa  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  1.1  rkujawa  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  1.1  rkujawa  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  1.1  rkujawa  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  1.1  rkujawa  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  1.1  rkujawa  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  1.1  rkujawa  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  1.1  rkujawa  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  1.1  rkujawa  * POSSIBILITY OF SUCH DAMAGE.
     30  1.1  rkujawa  */
     31  1.1  rkujawa 
     32  1.1  rkujawa /*
     33  1.1  rkujawa  * ISP1763A USB 2.0 host controller.
     34  1.1  rkujawa  */
     35  1.1  rkujawa 
     36  1.1  rkujawa #ifndef _DEV_IC_ISP1763REG_H_
     37  1.1  rkujawa #define	_DEV_IC_ISP1763REG_H_
     38  1.1  rkujawa 
     39  1.1  rkujawa #define	ISP1763_CHIPID		0x70	/* 32 bits */
     40  1.1  rkujawa #define	 ISP1763_CHIPID_VALUE	0x00176320
     41  1.1  rkujawa #define	ISP1763_SCRATCH		0x78
     42  1.1  rkujawa 
     43  1.1  rkujawa /* HCI regs, 32-bit. */
     44  1.1  rkujawa #define	ISP1763_USBCMD		0x8c
     45  1.1  rkujawa #define	 ISP1763_USBCMD_RS	__BIT(0)
     46  1.1  rkujawa #define	 ISP1763_USBCMD_HCRESET	__BIT(1)
     47  1.1  rkujawa #define	 ISP1763_USBCMD_LHCR	__BIT(7)
     48  1.1  rkujawa #define	ISP1763_USBSTS		0x90
     49  1.1  rkujawa #define	 ISP1763_USBSTS_PCD	__BIT(2)
     50  1.1  rkujawa #define	 ISP1763_USBSTS_FLR	__BIT(3)
     51  1.1  rkujawa #define	ISP1763_USBINTR		0x94
     52  1.1  rkujawa #define	 ISP1763_USBINTR_PCDIE	__BIT(2)
     53  1.1  rkujawa #define	ISP1763_FRINDEX		0x98
     54  1.1  rkujawa #define	ISP1763_CONFIGFLAG	0x9c
     55  1.1  rkujawa #define	 ISP1763_CONFIGFLAG_CF	__BIT(0)
     56  1.1  rkujawa #define	ISP1763_PORTSC1		0xa0
     57  1.1  rkujawa #define	 ISP1763_PORTSC_ECCS	__BIT(0)
     58  1.1  rkujawa #define	 ISP1763_PORTSC_ECSC	__BIT(1)
     59  1.1  rkujawa #define	 ISP1763_PORTSC_PED	__BIT(2)
     60  1.1  rkujawa #define	 ISP1763_PORTSC_FPR	__BIT(6)
     61  1.1  rkujawa #define	 ISP1763_PORTSC_SUSP	__BIT(7)
     62  1.1  rkujawa #define	 ISP1763_PORTSC_PR	__BIT(8)
     63  1.1  rkujawa #define	 ISP1763_PORTSC_LS	__BITS(11, 10)
     64  1.1  rkujawa #define	 ISP1763_PORTSC_PP	__BIT(12)
     65  1.1  rkujawa #define	 ISP1763_PORTSC_PO	__BIT(13)
     66  1.1  rkujawa #define	 ISP1763_PORTSC_PTC	__BITS(19, 16)
     67  1.1  rkujawa 
     68  1.1  rkujawa /* Transfer descriptor maps, 16-bits. */
     69  1.1  rkujawa #define	ISP1763_ISO_DONE	0xa4
     70  1.1  rkujawa #define	ISP1763_ISO_SKIP	0xa6
     71  1.1  rkujawa #define	ISP1763_ISO_LAST	0xa8
     72  1.1  rkujawa #define	ISP1763_INT_DONE	0xaa
     73  1.1  rkujawa #define	ISP1763_INT_SKIP	0xac
     74  1.1  rkujawa #define	ISP1763_INT_LAST	0xae
     75  1.1  rkujawa #define	ISP1763_ATL_DONE	0xb0
     76  1.1  rkujawa #define	ISP1763_ATL_SKIP	0xb2
     77  1.1  rkujawa #define	ISP1763_ATL_LAST	0xb4
     78  1.1  rkujawa 
     79  1.1  rkujawa /* Configuration registers, 16 bits. */
     80  1.1  rkujawa #define	ISP1763_HWMODE		0xb6
     81  1.1  rkujawa #define	 ISP1763_HWMODE_GLINTEN	__BIT(0)
     82  1.1  rkujawa #define	 ISP1763_HWMODE_INTLEVEL	__BIT(1)	/* 1 = edge */
     83  1.1  rkujawa #define	 ISP1763_HWMODE_INTPOL	__BIT(2)	/* 1 = active high */
     84  1.1  rkujawa #define	 ISP1763_HWMODE_INTFLOCK	__BIT(3)
     85  1.1  rkujawa #define	 ISP1763_HWMODE_BUS8	__BIT(4)
     86  1.1  rkujawa #define	ISP1763_SWRESET		0xb8
     87  1.1  rkujawa #define	 ISP1763_SWRESET_ALL	__BIT(0)
     88  1.1  rkujawa #define	 ISP1763_SWRESET_HC	__BIT(1)
     89  1.1  rkujawa #define	 ISP1763_SWRESET_ATX	__BIT(3)
     90  1.1  rkujawa #define	ISP1763_BUFSTS		0xba
     91  1.1  rkujawa #define	 ISP1763_BUFSTS_ATL	__BIT(0)
     92  1.1  rkujawa #define	 ISP1763_BUFSTS_INT	__BIT(1)
     93  1.1  rkujawa #define	 ISP1763_BUFSTS_ISO	__BIT(2)
     94  1.1  rkujawa #define	ISP1763_MEMORY		0xc4
     95  1.1  rkujawa #define	ISP1763_DATAPORT	0xc6
     96  1.1  rkujawa 
     97  1.1  rkujawa /* Interrupt registers, 16 bits. */
     98  1.1  rkujawa #define	ISP1763_HCINT		0xd4
     99  1.1  rkujawa #define	ISP1763_HCINTEN		0xd6
    100  1.1  rkujawa #define	 ISP1763_HCINT_OPR	__BIT(4)
    101  1.1  rkujawa #define	 ISP1763_HCINT_INT	__BIT(7)
    102  1.1  rkujawa #define	 ISP1763_HCINT_ATL	__BIT(8)
    103  1.1  rkujawa #define	 ISP1763_HCINT_ISO	__BIT(9)
    104  1.1  rkujawa #define	 ISP1763_HCINT_ALL	__BITS(10, 0)
    105  1.1  rkujawa #define	ISP1763_ISO_ORMASK	0xd8
    106  1.1  rkujawa #define	ISP1763_INT_ORMASK	0xda
    107  1.1  rkujawa #define	ISP1763_ATL_ORMASK	0xdc
    108  1.1  rkujawa #define	ISP1763_ISO_ANDMASK	0xde
    109  1.1  rkujawa #define	ISP1763_INT_ANDMASK	0xe0
    110  1.1  rkujawa #define	ISP1763_ATL_ANDMASK	0xe2
    111  1.1  rkujawa 
    112  1.1  rkujawa /* OTG control. */
    113  1.1  rkujawa #define	ISP1763_OTGCTL_SET	0xe4
    114  1.1  rkujawa #define	ISP1763_OTGCTL_CLR	0xe6
    115  1.1  rkujawa #define	 ISP1763_OTGCTL_SWSELHC	__BIT(7)	/* clear = port 1 to host */
    116  1.1  rkujawa #define	 ISP1763_OTGCTL_OTGDIS	__BIT(10)
    117  1.1  rkujawa #define	 ISP1763_OTGCTL_HC2DIS	__BIT(15)
    118  1.1  rkujawa 
    119  1.1  rkujawa /* Memory map. */
    120  1.1  rkujawa #define	ISP1763_PTD_SIZE	32
    121  1.1  rkujawa #define	ISP1763_NSLOTS		16
    122  1.1  rkujawa #define	ISP1763_ISO_PTD_BASE	0x0400
    123  1.1  rkujawa #define	ISP1763_INT_PTD_BASE	0x0800
    124  1.1  rkujawa #define	ISP1763_ATL_PTD_BASE	0x0c00
    125  1.1  rkujawa #define	ISP1763_PAYLOAD_BASE	0x1000
    126  1.1  rkujawa #define	ISP1763_MEM_END		0x6000
    127  1.1  rkujawa 
    128  1.1  rkujawa /* Payload */
    129  1.1  rkujawa #define	ISP1763_PTD_ADDR(a)	(((a) - 0x400) >> 3)
    130  1.1  rkujawa 
    131  1.1  rkujawa /*
    132  1.1  rkujawa  * Transfer descriptor.
    133  1.1  rkujawa  */
    134  1.1  rkujawa #define	ISP1763_PTD_DW0_V	__BIT(0)
    135  1.1  rkujawa #define	ISP1763_PTD_DW0_NBYTES	__BITS(17, 3)
    136  1.1  rkujawa #define	ISP1763_PTD_DW0_MPS	__BITS(28, 18)
    137  1.1  rkujawa #define	ISP1763_PTD_DW0_MULT	__BITS(30, 29)
    138  1.1  rkujawa #define	ISP1763_PTD_DW0_EP0	__BIT(31)
    139  1.1  rkujawa 
    140  1.1  rkujawa #define	ISP1763_PTD_DW1_EP31	__BITS(2, 0)
    141  1.1  rkujawa #define	ISP1763_PTD_DW1_ADDR	__BITS(9, 3)
    142  1.1  rkujawa #define	ISP1763_PTD_DW1_TOKEN	__BITS(11, 10)
    143  1.1  rkujawa #define	 ISP1763_TOKEN_OUT	0
    144  1.1  rkujawa #define	 ISP1763_TOKEN_IN	1
    145  1.1  rkujawa #define	 ISP1763_TOKEN_SETUP	2
    146  1.1  rkujawa #define	ISP1763_PTD_DW1_EPTYPE	__BITS(13, 12)
    147  1.1  rkujawa #define	 ISP1763_EPTYPE_CTRL	0
    148  1.1  rkujawa #define	 ISP1763_EPTYPE_ISOC	1
    149  1.1  rkujawa #define	 ISP1763_EPTYPE_BULK	2
    150  1.1  rkujawa #define	 ISP1763_EPTYPE_INTR	3
    151  1.1  rkujawa #define	ISP1763_PTD_DW1_SPLIT	__BIT(14)
    152  1.1  rkujawa #define	ISP1763_PTD_DW1_RETIRE	__BIT(15)
    153  1.1  rkujawa #define	ISP1763_PTD_DW1_SE	__BITS(17, 16)
    154  1.1  rkujawa #define	 ISP1763_SE_FULL	0
    155  1.1  rkujawa #define	 ISP1763_SE_LOW		2
    156  1.1  rkujawa #define	ISP1763_PTD_DW1_PORT	__BITS(24, 18)
    157  1.1  rkujawa #define	ISP1763_PTD_DW1_HUB	__BITS(31, 25)
    158  1.1  rkujawa 
    159  1.1  rkujawa #define	ISP1763_PTD_DW2_UFRAME	__BITS(7, 0)
    160  1.1  rkujawa #define	ISP1763_PTD_DW2_DATA	__BITS(23, 8)
    161  1.1  rkujawa #define	ISP1763_PTD_DW2_RL	__BITS(28, 25)
    162  1.1  rkujawa 
    163  1.1  rkujawa #define	ISP1763_PTD_DW3_NDONE	__BITS(14, 0)
    164  1.1  rkujawa #define	ISP1763_PTD_DW3_NDONE_SPLIT	__BITS(11, 0)
    165  1.1  rkujawa #define	ISP1763_PTD_DW3_NAKCNT	__BITS(22, 19)
    166  1.1  rkujawa #define	ISP1763_PTD_DW3_CERR	__BITS(24, 23)
    167  1.1  rkujawa #define	ISP1763_PTD_DW3_DT	__BIT(25)
    168  1.1  rkujawa #define	ISP1763_PTD_DW3_PING	__BIT(26)
    169  1.1  rkujawa #define	ISP1763_PTD_DW3_SC	__BIT(27)
    170  1.1  rkujawa #define	ISP1763_PTD_DW3_X	__BIT(28)
    171  1.1  rkujawa #define	ISP1763_PTD_DW3_B	__BIT(29)
    172  1.1  rkujawa #define	ISP1763_PTD_DW3_H	__BIT(30)
    173  1.1  rkujawa #define	ISP1763_PTD_DW3_A	__BIT(31)
    174  1.1  rkujawa 
    175  1.1  rkujawa #define	ISP1763_PTD_DW4_USA	__BITS(7, 0)
    176  1.1  rkujawa #define	ISP1763_PTD_DW5_USCS	__BITS(7, 0)
    177  1.1  rkujawa 
    178  1.1  rkujawa #endif /* !_DEV_IC_ISP1763REG_H_ */
    179