xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-mxs/regs-usb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Freescale i.MX28 USB OTG Register Definitions
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
5*4882a593Smuzhiyun  * on behalf of DENX Software Engineering GmbH
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef __REGS_USB_H__
11*4882a593Smuzhiyun #define __REGS_USB_H__
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun struct mxs_usb_regs {
14*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_id;			/* 0x000 */
15*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hwgeneral;		/* 0x004 */
16*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hwhost;		/* 0x008 */
17*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hwdevice;		/* 0x00c */
18*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hwtxbuf;		/* 0x010 */
19*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hwrxbuf;		/* 0x014 */
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 	uint32_t		reserved1[26];
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_gptimer0ld;		/* 0x080 */
24*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_gptimer0ctrl;	/* 0x084 */
25*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_gptimer1ld;		/* 0x088 */
26*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_gptimer1ctrl;	/* 0x08c */
27*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_sbuscfg;		/* 0x090 */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	uint32_t		reserved2[27];
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_caplength;		/* 0x100 */
32*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hcsparams;		/* 0x104 */
33*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_hccparams;		/* 0x108 */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	uint32_t		reserved3[5];
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_dciversion;		/* 0x120 */
38*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_dccparams;		/* 0x124 */
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 	uint32_t		reserved4[6];
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_usbcmd;		/* 0x140 */
43*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_usbsts;		/* 0x144 */
44*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_usbintr;		/* 0x148 */
45*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_frindex;		/* 0x14c */
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun 	uint32_t		reserved5;
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun 	union {
50*4882a593Smuzhiyun 		uint32_t	hw_usbctrl_periodiclistbase;	/* 0x154 */
51*4882a593Smuzhiyun 		uint32_t	hw_usbctrl_deviceaddr;		/* 0x154 */
52*4882a593Smuzhiyun 	};
53*4882a593Smuzhiyun 	union {
54*4882a593Smuzhiyun 		uint32_t	hw_usbctrl_asynclistaddr;	/* 0x158 */
55*4882a593Smuzhiyun 		uint32_t	hw_usbctrl_endpointlistaddr;	/* 0x158 */
56*4882a593Smuzhiyun 	};
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_ttctrl;		/* 0x15c */
59*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_burstsize;		/* 0x160 */
60*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_txfilltuning;	/* 0x164 */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 	uint32_t		reserved6;
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_ic_usb;		/* 0x16c */
65*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_ulpi;		/* 0x170 */
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun 	uint32_t		reserved7;
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptnak;		/* 0x178 */
70*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptnaken;		/* 0x17c */
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun 	uint32_t		reserved8;
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_portsc1;		/* 0x184 */
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun 	uint32_t		reserved9[7];
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_otgsc;		/* 0x1a4 */
79*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_usbmode;		/* 0x1a8 */
80*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptsetupstat;	/* 0x1ac */
81*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptprime;		/* 0x1b0 */
82*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptflush;		/* 0x1b4 */
83*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptstat;		/* 0x1b8 */
84*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptcomplete;	/* 0x1bc */
85*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl0;		/* 0x1c0 */
86*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl1;		/* 0x1c4 */
87*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl2;		/* 0x1c8 */
88*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl3;		/* 0x1cc */
89*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl4;		/* 0x1d0 */
90*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl5;		/* 0x1d4 */
91*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl6;		/* 0x1d8 */
92*4882a593Smuzhiyun 	uint32_t		hw_usbctrl_endptctrl7;		/* 0x1dc */
93*4882a593Smuzhiyun };
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #define	CLKCTRL_PLL0CTRL0_LFR_SEL_MASK		(0x3 << 28)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define	HW_USBCTRL_ID_CIVERSION_OFFSET		29
98*4882a593Smuzhiyun #define	HW_USBCTRL_ID_CIVERSION_MASK		(0x7 << 29)
99*4882a593Smuzhiyun #define	HW_USBCTRL_ID_VERSION_OFFSET		25
100*4882a593Smuzhiyun #define	HW_USBCTRL_ID_VERSION_MASK		(0xf << 25)
101*4882a593Smuzhiyun #define	HW_USBCTRL_ID_REVISION_OFFSET		21
102*4882a593Smuzhiyun #define	HW_USBCTRL_ID_REVISION_MASK		(0xf << 21)
103*4882a593Smuzhiyun #define	HW_USBCTRL_ID_TAG_OFFSET		16
104*4882a593Smuzhiyun #define	HW_USBCTRL_ID_TAG_MASK			(0x1f << 16)
105*4882a593Smuzhiyun #define	HW_USBCTRL_ID_NID_OFFSET		8
106*4882a593Smuzhiyun #define	HW_USBCTRL_ID_NID_MASK			(0x3f << 8)
107*4882a593Smuzhiyun #define	HW_USBCTRL_ID_ID_OFFSET			0
108*4882a593Smuzhiyun #define	HW_USBCTRL_ID_ID_MASK			(0x3f << 0)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_SM_OFFSET		9
111*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_SM_MASK		(0x3 << 9)
112*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_PHYM_OFFSET	6
113*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_PHYM_MASK		(0x7 << 6)
114*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_PHYW_OFFSET	4
115*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_PHYW_MASK		(0x3 << 4)
116*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_BWT		(1 << 3)
117*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_CLKC_OFFSET	1
118*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_CLKC_MASK		(0x3 << 1)
119*4882a593Smuzhiyun #define	HW_USBCTRL_HWGENERAL_RT			(1 << 0)
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_TTPER_OFFSET		24
122*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_TTPER_MASK		(0xff << 24)
123*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_TTASY_OFFSET		16
124*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_TTASY_MASK		(0xff << 19)
125*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_NPORT_OFFSET		1
126*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_NPORT_MASK		(0x7 << 1)
127*4882a593Smuzhiyun #define	HW_USBCTRL_HWHOST_HC			(1 << 0)
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #define	HW_USBCTRL_HWDEVICE_DEVEP_OFFSET	1
130*4882a593Smuzhiyun #define	HW_USBCTRL_HWDEVICE_DEVEP_MASK		(0x1f << 1)
131*4882a593Smuzhiyun #define	HW_USBCTRL_HWDEVICE_DC			(1 << 0)
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXLCR		(1 << 31)
134*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXCHANADD_OFFSET	16
135*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXCHANADD_MASK	(0xff << 16)
136*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXADD_OFFSET		8
137*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXADD_MASK		(0xff << 8)
138*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXBURST_OFFSET	0
139*4882a593Smuzhiyun #define	HW_USBCTRL_HWTXBUF_TXBURST_MASK		0xff
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun #define	HW_USBCTRL_HWRXBUF_RXADD_OFFSET		8
142*4882a593Smuzhiyun #define	HW_USBCTRL_HWRXBUF_RXADD_MASK		(0xff << 8)
143*4882a593Smuzhiyun #define	HW_USBCTRL_HWRXBUF_RXBURST_OFFSET	0
144*4882a593Smuzhiyun #define	HW_USBCTRL_HWRXBUF_RXBURST_MASK		0xff
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERLD_GPTLD_OFFSET	0
147*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERLD_GPTLD_MASK		0xffffff
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERCTRL_GPTRUN		(1 << 31)
150*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERCTRL_GPTRST		(1 << 30)
151*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERCTRL_GPTMODE		(1 << 24)
152*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERCTRL_GPTCNT_OFFSET	0
153*4882a593Smuzhiyun #define	HW_USBCTRL_GPTIMERCTRL_GPTCNT_MASK	0xffffff
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_OFFSET	0
156*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_MASK	0x7
157*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_U_INCR	0x0
158*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_S_INCR4	0x1
159*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_S_INCR8	0x2
160*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_S_INCR16	0x3
161*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_U_INCR4	0x5
162*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_U_INCR8	0x6
163*4882a593Smuzhiyun #define	HW_USBCTRL_SBUSCFG_AHBBURST_U_INCR16	0x7
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #endif	/* __REGS_USB_H__ */
166