xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef BCM63XX_REGS_H_
3*4882a593Smuzhiyun #define BCM63XX_REGS_H_
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun /*************************************************************************
6*4882a593Smuzhiyun  * _REG relative to RSET_PERF
7*4882a593Smuzhiyun  *************************************************************************/
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun /* Chip Identifier / Revision register */
10*4882a593Smuzhiyun #define PERF_REV_REG			0x0
11*4882a593Smuzhiyun #define REV_CHIPID_SHIFT		16
12*4882a593Smuzhiyun #define REV_CHIPID_MASK			(0xffff << REV_CHIPID_SHIFT)
13*4882a593Smuzhiyun #define REV_REVID_SHIFT			0
14*4882a593Smuzhiyun #define REV_REVID_MASK			(0xff << REV_REVID_SHIFT)
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* Clock Control register */
17*4882a593Smuzhiyun #define PERF_CKCTL_REG			0x4
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define CKCTL_3368_MAC_EN		(1 << 3)
20*4882a593Smuzhiyun #define CKCTL_3368_TC_EN		(1 << 5)
21*4882a593Smuzhiyun #define CKCTL_3368_US_TOP_EN		(1 << 6)
22*4882a593Smuzhiyun #define CKCTL_3368_DS_TOP_EN		(1 << 7)
23*4882a593Smuzhiyun #define CKCTL_3368_APM_EN		(1 << 8)
24*4882a593Smuzhiyun #define CKCTL_3368_SPI_EN		(1 << 9)
25*4882a593Smuzhiyun #define CKCTL_3368_USBS_EN		(1 << 10)
26*4882a593Smuzhiyun #define CKCTL_3368_BMU_EN		(1 << 11)
27*4882a593Smuzhiyun #define CKCTL_3368_PCM_EN		(1 << 12)
28*4882a593Smuzhiyun #define CKCTL_3368_NTP_EN		(1 << 13)
29*4882a593Smuzhiyun #define CKCTL_3368_ACP_B_EN		(1 << 14)
30*4882a593Smuzhiyun #define CKCTL_3368_ACP_A_EN		(1 << 15)
31*4882a593Smuzhiyun #define CKCTL_3368_EMUSB_EN		(1 << 17)
32*4882a593Smuzhiyun #define CKCTL_3368_ENET0_EN		(1 << 18)
33*4882a593Smuzhiyun #define CKCTL_3368_ENET1_EN		(1 << 19)
34*4882a593Smuzhiyun #define CKCTL_3368_USBU_EN		(1 << 20)
35*4882a593Smuzhiyun #define CKCTL_3368_EPHY_EN		(1 << 21)
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define CKCTL_3368_ALL_SAFE_EN		(CKCTL_3368_MAC_EN | \
38*4882a593Smuzhiyun 					 CKCTL_3368_TC_EN | \
39*4882a593Smuzhiyun 					 CKCTL_3368_US_TOP_EN | \
40*4882a593Smuzhiyun 					 CKCTL_3368_DS_TOP_EN | \
41*4882a593Smuzhiyun 					 CKCTL_3368_APM_EN | \
42*4882a593Smuzhiyun 					 CKCTL_3368_SPI_EN | \
43*4882a593Smuzhiyun 					 CKCTL_3368_USBS_EN | \
44*4882a593Smuzhiyun 					 CKCTL_3368_BMU_EN | \
45*4882a593Smuzhiyun 					 CKCTL_3368_PCM_EN | \
46*4882a593Smuzhiyun 					 CKCTL_3368_NTP_EN | \
47*4882a593Smuzhiyun 					 CKCTL_3368_ACP_B_EN | \
48*4882a593Smuzhiyun 					 CKCTL_3368_ACP_A_EN | \
49*4882a593Smuzhiyun 					 CKCTL_3368_EMUSB_EN | \
50*4882a593Smuzhiyun 					 CKCTL_3368_USBU_EN)
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define CKCTL_6328_PHYMIPS_EN		(1 << 0)
53*4882a593Smuzhiyun #define CKCTL_6328_ADSL_QPROC_EN	(1 << 1)
54*4882a593Smuzhiyun #define CKCTL_6328_ADSL_AFE_EN		(1 << 2)
55*4882a593Smuzhiyun #define CKCTL_6328_ADSL_EN		(1 << 3)
56*4882a593Smuzhiyun #define CKCTL_6328_MIPS_EN		(1 << 4)
57*4882a593Smuzhiyun #define CKCTL_6328_SAR_EN		(1 << 5)
58*4882a593Smuzhiyun #define CKCTL_6328_PCM_EN		(1 << 6)
59*4882a593Smuzhiyun #define CKCTL_6328_USBD_EN		(1 << 7)
60*4882a593Smuzhiyun #define CKCTL_6328_USBH_EN		(1 << 8)
61*4882a593Smuzhiyun #define CKCTL_6328_HSSPI_EN		(1 << 9)
62*4882a593Smuzhiyun #define CKCTL_6328_PCIE_EN		(1 << 10)
63*4882a593Smuzhiyun #define CKCTL_6328_ROBOSW_EN		(1 << 11)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define CKCTL_6328_ALL_SAFE_EN		(CKCTL_6328_PHYMIPS_EN |	\
66*4882a593Smuzhiyun 					CKCTL_6328_ADSL_QPROC_EN |	\
67*4882a593Smuzhiyun 					CKCTL_6328_ADSL_AFE_EN |	\
68*4882a593Smuzhiyun 					CKCTL_6328_ADSL_EN |		\
69*4882a593Smuzhiyun 					CKCTL_6328_SAR_EN  |		\
70*4882a593Smuzhiyun 					CKCTL_6328_PCM_EN  |		\
71*4882a593Smuzhiyun 					CKCTL_6328_USBD_EN |		\
72*4882a593Smuzhiyun 					CKCTL_6328_USBH_EN |		\
73*4882a593Smuzhiyun 					CKCTL_6328_ROBOSW_EN |		\
74*4882a593Smuzhiyun 					CKCTL_6328_PCIE_EN)
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun #define CKCTL_6338_ADSLPHY_EN		(1 << 0)
77*4882a593Smuzhiyun #define CKCTL_6338_MPI_EN		(1 << 1)
78*4882a593Smuzhiyun #define CKCTL_6338_DRAM_EN		(1 << 2)
79*4882a593Smuzhiyun #define CKCTL_6338_ENET_EN		(1 << 4)
80*4882a593Smuzhiyun #define CKCTL_6338_USBS_EN		(1 << 4)
81*4882a593Smuzhiyun #define CKCTL_6338_SAR_EN		(1 << 5)
82*4882a593Smuzhiyun #define CKCTL_6338_SPI_EN		(1 << 9)
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun #define CKCTL_6338_ALL_SAFE_EN		(CKCTL_6338_ADSLPHY_EN |	\
85*4882a593Smuzhiyun 					CKCTL_6338_MPI_EN |		\
86*4882a593Smuzhiyun 					CKCTL_6338_ENET_EN |		\
87*4882a593Smuzhiyun 					CKCTL_6338_SAR_EN |		\
88*4882a593Smuzhiyun 					CKCTL_6338_SPI_EN)
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun /* BCM6345 clock bits are shifted by 16 on the left, because of the test
91*4882a593Smuzhiyun  * control register which is 16-bits wide. That way we do not have any
92*4882a593Smuzhiyun  * specific BCM6345 code for handling clocks, and writing 0 to the test
93*4882a593Smuzhiyun  * control register is fine.
94*4882a593Smuzhiyun  */
95*4882a593Smuzhiyun #define CKCTL_6345_CPU_EN		(1 << 16)
96*4882a593Smuzhiyun #define CKCTL_6345_BUS_EN		(1 << 17)
97*4882a593Smuzhiyun #define CKCTL_6345_EBI_EN		(1 << 18)
98*4882a593Smuzhiyun #define CKCTL_6345_UART_EN		(1 << 19)
99*4882a593Smuzhiyun #define CKCTL_6345_ADSLPHY_EN		(1 << 20)
100*4882a593Smuzhiyun #define CKCTL_6345_ENET_EN		(1 << 23)
101*4882a593Smuzhiyun #define CKCTL_6345_USBH_EN		(1 << 24)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define CKCTL_6345_ALL_SAFE_EN		(CKCTL_6345_ENET_EN |	\
104*4882a593Smuzhiyun 					CKCTL_6345_USBH_EN |	\
105*4882a593Smuzhiyun 					CKCTL_6345_ADSLPHY_EN)
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #define CKCTL_6348_ADSLPHY_EN		(1 << 0)
108*4882a593Smuzhiyun #define CKCTL_6348_MPI_EN		(1 << 1)
109*4882a593Smuzhiyun #define CKCTL_6348_SDRAM_EN		(1 << 2)
110*4882a593Smuzhiyun #define CKCTL_6348_M2M_EN		(1 << 3)
111*4882a593Smuzhiyun #define CKCTL_6348_ENET_EN		(1 << 4)
112*4882a593Smuzhiyun #define CKCTL_6348_SAR_EN		(1 << 5)
113*4882a593Smuzhiyun #define CKCTL_6348_USBS_EN		(1 << 6)
114*4882a593Smuzhiyun #define CKCTL_6348_USBH_EN		(1 << 8)
115*4882a593Smuzhiyun #define CKCTL_6348_SPI_EN		(1 << 9)
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define CKCTL_6348_ALL_SAFE_EN		(CKCTL_6348_ADSLPHY_EN |	\
118*4882a593Smuzhiyun 					CKCTL_6348_M2M_EN |		\
119*4882a593Smuzhiyun 					CKCTL_6348_ENET_EN |		\
120*4882a593Smuzhiyun 					CKCTL_6348_SAR_EN |		\
121*4882a593Smuzhiyun 					CKCTL_6348_USBS_EN |		\
122*4882a593Smuzhiyun 					CKCTL_6348_USBH_EN |		\
123*4882a593Smuzhiyun 					CKCTL_6348_SPI_EN)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define CKCTL_6358_ENET_EN		(1 << 4)
126*4882a593Smuzhiyun #define CKCTL_6358_ADSLPHY_EN		(1 << 5)
127*4882a593Smuzhiyun #define CKCTL_6358_PCM_EN		(1 << 8)
128*4882a593Smuzhiyun #define CKCTL_6358_SPI_EN		(1 << 9)
129*4882a593Smuzhiyun #define CKCTL_6358_USBS_EN		(1 << 10)
130*4882a593Smuzhiyun #define CKCTL_6358_SAR_EN		(1 << 11)
131*4882a593Smuzhiyun #define CKCTL_6358_EMUSB_EN		(1 << 17)
132*4882a593Smuzhiyun #define CKCTL_6358_ENET0_EN		(1 << 18)
133*4882a593Smuzhiyun #define CKCTL_6358_ENET1_EN		(1 << 19)
134*4882a593Smuzhiyun #define CKCTL_6358_USBSU_EN		(1 << 20)
135*4882a593Smuzhiyun #define CKCTL_6358_EPHY_EN		(1 << 21)
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #define CKCTL_6358_ALL_SAFE_EN		(CKCTL_6358_ENET_EN |		\
138*4882a593Smuzhiyun 					CKCTL_6358_ADSLPHY_EN |		\
139*4882a593Smuzhiyun 					CKCTL_6358_PCM_EN |		\
140*4882a593Smuzhiyun 					CKCTL_6358_SPI_EN |		\
141*4882a593Smuzhiyun 					CKCTL_6358_USBS_EN |		\
142*4882a593Smuzhiyun 					CKCTL_6358_SAR_EN |		\
143*4882a593Smuzhiyun 					CKCTL_6358_EMUSB_EN |		\
144*4882a593Smuzhiyun 					CKCTL_6358_ENET0_EN |		\
145*4882a593Smuzhiyun 					CKCTL_6358_ENET1_EN |		\
146*4882a593Smuzhiyun 					CKCTL_6358_USBSU_EN |		\
147*4882a593Smuzhiyun 					CKCTL_6358_EPHY_EN)
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #define CKCTL_6362_ADSL_QPROC_EN	(1 << 1)
150*4882a593Smuzhiyun #define CKCTL_6362_ADSL_AFE_EN		(1 << 2)
151*4882a593Smuzhiyun #define CKCTL_6362_ADSL_EN		(1 << 3)
152*4882a593Smuzhiyun #define CKCTL_6362_MIPS_EN		(1 << 4)
153*4882a593Smuzhiyun #define CKCTL_6362_WLAN_OCP_EN		(1 << 5)
154*4882a593Smuzhiyun #define CKCTL_6362_SWPKT_USB_EN		(1 << 7)
155*4882a593Smuzhiyun #define CKCTL_6362_SWPKT_SAR_EN		(1 << 8)
156*4882a593Smuzhiyun #define CKCTL_6362_SAR_EN		(1 << 9)
157*4882a593Smuzhiyun #define CKCTL_6362_ROBOSW_EN		(1 << 10)
158*4882a593Smuzhiyun #define CKCTL_6362_PCM_EN		(1 << 11)
159*4882a593Smuzhiyun #define CKCTL_6362_USBD_EN		(1 << 12)
160*4882a593Smuzhiyun #define CKCTL_6362_USBH_EN		(1 << 13)
161*4882a593Smuzhiyun #define CKCTL_6362_IPSEC_EN		(1 << 14)
162*4882a593Smuzhiyun #define CKCTL_6362_SPI_EN		(1 << 15)
163*4882a593Smuzhiyun #define CKCTL_6362_HSSPI_EN		(1 << 16)
164*4882a593Smuzhiyun #define CKCTL_6362_PCIE_EN		(1 << 17)
165*4882a593Smuzhiyun #define CKCTL_6362_FAP_EN		(1 << 18)
166*4882a593Smuzhiyun #define CKCTL_6362_PHYMIPS_EN		(1 << 19)
167*4882a593Smuzhiyun #define CKCTL_6362_NAND_EN		(1 << 20)
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #define CKCTL_6362_ALL_SAFE_EN		(CKCTL_6362_PHYMIPS_EN |	\
170*4882a593Smuzhiyun 					CKCTL_6362_ADSL_QPROC_EN |	\
171*4882a593Smuzhiyun 					CKCTL_6362_ADSL_AFE_EN |	\
172*4882a593Smuzhiyun 					CKCTL_6362_ADSL_EN |		\
173*4882a593Smuzhiyun 					CKCTL_6362_SAR_EN  |		\
174*4882a593Smuzhiyun 					CKCTL_6362_PCM_EN  |		\
175*4882a593Smuzhiyun 					CKCTL_6362_IPSEC_EN |		\
176*4882a593Smuzhiyun 					CKCTL_6362_USBD_EN |		\
177*4882a593Smuzhiyun 					CKCTL_6362_USBH_EN |		\
178*4882a593Smuzhiyun 					CKCTL_6362_ROBOSW_EN |		\
179*4882a593Smuzhiyun 					CKCTL_6362_PCIE_EN)
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun #define CKCTL_6368_VDSL_QPROC_EN	(1 << 2)
183*4882a593Smuzhiyun #define CKCTL_6368_VDSL_AFE_EN		(1 << 3)
184*4882a593Smuzhiyun #define CKCTL_6368_VDSL_BONDING_EN	(1 << 4)
185*4882a593Smuzhiyun #define CKCTL_6368_VDSL_EN		(1 << 5)
186*4882a593Smuzhiyun #define CKCTL_6368_PHYMIPS_EN		(1 << 6)
187*4882a593Smuzhiyun #define CKCTL_6368_SWPKT_USB_EN		(1 << 7)
188*4882a593Smuzhiyun #define CKCTL_6368_SWPKT_SAR_EN		(1 << 8)
189*4882a593Smuzhiyun #define CKCTL_6368_SPI_EN		(1 << 9)
190*4882a593Smuzhiyun #define CKCTL_6368_USBD_EN		(1 << 10)
191*4882a593Smuzhiyun #define CKCTL_6368_SAR_EN		(1 << 11)
192*4882a593Smuzhiyun #define CKCTL_6368_ROBOSW_EN		(1 << 12)
193*4882a593Smuzhiyun #define CKCTL_6368_UTOPIA_EN		(1 << 13)
194*4882a593Smuzhiyun #define CKCTL_6368_PCM_EN		(1 << 14)
195*4882a593Smuzhiyun #define CKCTL_6368_USBH_EN		(1 << 15)
196*4882a593Smuzhiyun #define CKCTL_6368_DISABLE_GLESS_EN	(1 << 16)
197*4882a593Smuzhiyun #define CKCTL_6368_NAND_EN		(1 << 17)
198*4882a593Smuzhiyun #define CKCTL_6368_IPSEC_EN		(1 << 18)
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define CKCTL_6368_ALL_SAFE_EN		(CKCTL_6368_SWPKT_USB_EN |	\
201*4882a593Smuzhiyun 					CKCTL_6368_SWPKT_SAR_EN |	\
202*4882a593Smuzhiyun 					CKCTL_6368_SPI_EN |		\
203*4882a593Smuzhiyun 					CKCTL_6368_USBD_EN |		\
204*4882a593Smuzhiyun 					CKCTL_6368_SAR_EN |		\
205*4882a593Smuzhiyun 					CKCTL_6368_ROBOSW_EN |		\
206*4882a593Smuzhiyun 					CKCTL_6368_UTOPIA_EN |		\
207*4882a593Smuzhiyun 					CKCTL_6368_PCM_EN |		\
208*4882a593Smuzhiyun 					CKCTL_6368_USBH_EN |		\
209*4882a593Smuzhiyun 					CKCTL_6368_DISABLE_GLESS_EN |	\
210*4882a593Smuzhiyun 					CKCTL_6368_NAND_EN |		\
211*4882a593Smuzhiyun 					CKCTL_6368_IPSEC_EN)
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun /* System PLL Control register	*/
214*4882a593Smuzhiyun #define PERF_SYS_PLL_CTL_REG		0x8
215*4882a593Smuzhiyun #define SYS_PLL_SOFT_RESET		0x1
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun /* Interrupt Mask register */
218*4882a593Smuzhiyun #define PERF_IRQMASK_3368_REG		0xc
219*4882a593Smuzhiyun #define PERF_IRQMASK_6328_REG(x)	(0x20 + (x) * 0x10)
220*4882a593Smuzhiyun #define PERF_IRQMASK_6338_REG		0xc
221*4882a593Smuzhiyun #define PERF_IRQMASK_6345_REG		0xc
222*4882a593Smuzhiyun #define PERF_IRQMASK_6348_REG		0xc
223*4882a593Smuzhiyun #define PERF_IRQMASK_6358_REG(x)	(0xc + (x) * 0x2c)
224*4882a593Smuzhiyun #define PERF_IRQMASK_6362_REG(x)	(0x20 + (x) * 0x10)
225*4882a593Smuzhiyun #define PERF_IRQMASK_6368_REG(x)	(0x20 + (x) * 0x10)
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun /* Interrupt Status register */
228*4882a593Smuzhiyun #define PERF_IRQSTAT_3368_REG		0x10
229*4882a593Smuzhiyun #define PERF_IRQSTAT_6328_REG(x)	(0x28 + (x) * 0x10)
230*4882a593Smuzhiyun #define PERF_IRQSTAT_6338_REG		0x10
231*4882a593Smuzhiyun #define PERF_IRQSTAT_6345_REG		0x10
232*4882a593Smuzhiyun #define PERF_IRQSTAT_6348_REG		0x10
233*4882a593Smuzhiyun #define PERF_IRQSTAT_6358_REG(x)	(0x10 + (x) * 0x2c)
234*4882a593Smuzhiyun #define PERF_IRQSTAT_6362_REG(x)	(0x28 + (x) * 0x10)
235*4882a593Smuzhiyun #define PERF_IRQSTAT_6368_REG(x)	(0x28 + (x) * 0x10)
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun /* External Interrupt Configuration register */
238*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_3368	0x14
239*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6328	0x18
240*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6338	0x14
241*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6345	0x14
242*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6348	0x14
243*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6358	0x14
244*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6362	0x18
245*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG_6368	0x18
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun #define PERF_EXTIRQ_CFG_REG2_6368	0x1c
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun /* for 6348 only */
250*4882a593Smuzhiyun #define EXTIRQ_CFG_SENSE_6348(x)	(1 << (x))
251*4882a593Smuzhiyun #define EXTIRQ_CFG_STAT_6348(x)		(1 << (x + 5))
252*4882a593Smuzhiyun #define EXTIRQ_CFG_CLEAR_6348(x)	(1 << (x + 10))
253*4882a593Smuzhiyun #define EXTIRQ_CFG_MASK_6348(x)		(1 << (x + 15))
254*4882a593Smuzhiyun #define EXTIRQ_CFG_BOTHEDGE_6348(x)	(1 << (x + 20))
255*4882a593Smuzhiyun #define EXTIRQ_CFG_LEVELSENSE_6348(x)	(1 << (x + 25))
256*4882a593Smuzhiyun #define EXTIRQ_CFG_CLEAR_ALL_6348	(0xf << 10)
257*4882a593Smuzhiyun #define EXTIRQ_CFG_MASK_ALL_6348	(0xf << 15)
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun /* for all others */
260*4882a593Smuzhiyun #define EXTIRQ_CFG_SENSE(x)		(1 << (x))
261*4882a593Smuzhiyun #define EXTIRQ_CFG_STAT(x)		(1 << (x + 4))
262*4882a593Smuzhiyun #define EXTIRQ_CFG_CLEAR(x)		(1 << (x + 8))
263*4882a593Smuzhiyun #define EXTIRQ_CFG_MASK(x)		(1 << (x + 12))
264*4882a593Smuzhiyun #define EXTIRQ_CFG_BOTHEDGE(x)		(1 << (x + 16))
265*4882a593Smuzhiyun #define EXTIRQ_CFG_LEVELSENSE(x)	(1 << (x + 20))
266*4882a593Smuzhiyun #define EXTIRQ_CFG_CLEAR_ALL		(0xf << 8)
267*4882a593Smuzhiyun #define EXTIRQ_CFG_MASK_ALL		(0xf << 12)
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun /* Soft Reset register */
270*4882a593Smuzhiyun #define PERF_SOFTRESET_REG		0x28
271*4882a593Smuzhiyun #define PERF_SOFTRESET_6328_REG		0x10
272*4882a593Smuzhiyun #define PERF_SOFTRESET_6358_REG		0x34
273*4882a593Smuzhiyun #define PERF_SOFTRESET_6362_REG		0x10
274*4882a593Smuzhiyun #define PERF_SOFTRESET_6368_REG		0x10
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #define SOFTRESET_3368_SPI_MASK		(1 << 0)
277*4882a593Smuzhiyun #define SOFTRESET_3368_ENET_MASK	(1 << 2)
278*4882a593Smuzhiyun #define SOFTRESET_3368_MPI_MASK		(1 << 3)
279*4882a593Smuzhiyun #define SOFTRESET_3368_EPHY_MASK	(1 << 6)
280*4882a593Smuzhiyun #define SOFTRESET_3368_USBS_MASK	(1 << 11)
281*4882a593Smuzhiyun #define SOFTRESET_3368_PCM_MASK		(1 << 13)
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun #define SOFTRESET_6328_SPI_MASK		(1 << 0)
284*4882a593Smuzhiyun #define SOFTRESET_6328_EPHY_MASK	(1 << 1)
285*4882a593Smuzhiyun #define SOFTRESET_6328_SAR_MASK		(1 << 2)
286*4882a593Smuzhiyun #define SOFTRESET_6328_ENETSW_MASK	(1 << 3)
287*4882a593Smuzhiyun #define SOFTRESET_6328_USBS_MASK	(1 << 4)
288*4882a593Smuzhiyun #define SOFTRESET_6328_USBH_MASK	(1 << 5)
289*4882a593Smuzhiyun #define SOFTRESET_6328_PCM_MASK		(1 << 6)
290*4882a593Smuzhiyun #define SOFTRESET_6328_PCIE_CORE_MASK	(1 << 7)
291*4882a593Smuzhiyun #define SOFTRESET_6328_PCIE_MASK	(1 << 8)
292*4882a593Smuzhiyun #define SOFTRESET_6328_PCIE_EXT_MASK	(1 << 9)
293*4882a593Smuzhiyun #define SOFTRESET_6328_PCIE_HARD_MASK	(1 << 10)
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun #define SOFTRESET_6338_SPI_MASK		(1 << 0)
296*4882a593Smuzhiyun #define SOFTRESET_6338_ENET_MASK	(1 << 2)
297*4882a593Smuzhiyun #define SOFTRESET_6338_USBH_MASK	(1 << 3)
298*4882a593Smuzhiyun #define SOFTRESET_6338_USBS_MASK	(1 << 4)
299*4882a593Smuzhiyun #define SOFTRESET_6338_ADSL_MASK	(1 << 5)
300*4882a593Smuzhiyun #define SOFTRESET_6338_DMAMEM_MASK	(1 << 6)
301*4882a593Smuzhiyun #define SOFTRESET_6338_SAR_MASK		(1 << 7)
302*4882a593Smuzhiyun #define SOFTRESET_6338_ACLC_MASK	(1 << 8)
303*4882a593Smuzhiyun #define SOFTRESET_6338_ADSLMIPSPLL_MASK (1 << 10)
304*4882a593Smuzhiyun #define SOFTRESET_6338_ALL	 (SOFTRESET_6338_SPI_MASK |		\
305*4882a593Smuzhiyun 				  SOFTRESET_6338_ENET_MASK |		\
306*4882a593Smuzhiyun 				  SOFTRESET_6338_USBH_MASK |		\
307*4882a593Smuzhiyun 				  SOFTRESET_6338_USBS_MASK |		\
308*4882a593Smuzhiyun 				  SOFTRESET_6338_ADSL_MASK |		\
309*4882a593Smuzhiyun 				  SOFTRESET_6338_DMAMEM_MASK |		\
310*4882a593Smuzhiyun 				  SOFTRESET_6338_SAR_MASK |		\
311*4882a593Smuzhiyun 				  SOFTRESET_6338_ACLC_MASK |		\
312*4882a593Smuzhiyun 				  SOFTRESET_6338_ADSLMIPSPLL_MASK)
313*4882a593Smuzhiyun 
314*4882a593Smuzhiyun #define SOFTRESET_6348_SPI_MASK		(1 << 0)
315*4882a593Smuzhiyun #define SOFTRESET_6348_ENET_MASK	(1 << 2)
316*4882a593Smuzhiyun #define SOFTRESET_6348_USBH_MASK	(1 << 3)
317*4882a593Smuzhiyun #define SOFTRESET_6348_USBS_MASK	(1 << 4)
318*4882a593Smuzhiyun #define SOFTRESET_6348_ADSL_MASK	(1 << 5)
319*4882a593Smuzhiyun #define SOFTRESET_6348_DMAMEM_MASK	(1 << 6)
320*4882a593Smuzhiyun #define SOFTRESET_6348_SAR_MASK		(1 << 7)
321*4882a593Smuzhiyun #define SOFTRESET_6348_ACLC_MASK	(1 << 8)
322*4882a593Smuzhiyun #define SOFTRESET_6348_ADSLMIPSPLL_MASK (1 << 10)
323*4882a593Smuzhiyun 
324*4882a593Smuzhiyun #define SOFTRESET_6348_ALL	 (SOFTRESET_6348_SPI_MASK |		\
325*4882a593Smuzhiyun 				  SOFTRESET_6348_ENET_MASK |		\
326*4882a593Smuzhiyun 				  SOFTRESET_6348_USBH_MASK |		\
327*4882a593Smuzhiyun 				  SOFTRESET_6348_USBS_MASK |		\
328*4882a593Smuzhiyun 				  SOFTRESET_6348_ADSL_MASK |		\
329*4882a593Smuzhiyun 				  SOFTRESET_6348_DMAMEM_MASK |		\
330*4882a593Smuzhiyun 				  SOFTRESET_6348_SAR_MASK |		\
331*4882a593Smuzhiyun 				  SOFTRESET_6348_ACLC_MASK |		\
332*4882a593Smuzhiyun 				  SOFTRESET_6348_ADSLMIPSPLL_MASK)
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun #define SOFTRESET_6358_SPI_MASK		(1 << 0)
335*4882a593Smuzhiyun #define SOFTRESET_6358_ENET_MASK	(1 << 2)
336*4882a593Smuzhiyun #define SOFTRESET_6358_MPI_MASK		(1 << 3)
337*4882a593Smuzhiyun #define SOFTRESET_6358_EPHY_MASK	(1 << 6)
338*4882a593Smuzhiyun #define SOFTRESET_6358_SAR_MASK		(1 << 7)
339*4882a593Smuzhiyun #define SOFTRESET_6358_USBH_MASK	(1 << 12)
340*4882a593Smuzhiyun #define SOFTRESET_6358_PCM_MASK		(1 << 13)
341*4882a593Smuzhiyun #define SOFTRESET_6358_ADSL_MASK	(1 << 14)
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun #define SOFTRESET_6362_SPI_MASK		(1 << 0)
344*4882a593Smuzhiyun #define SOFTRESET_6362_IPSEC_MASK	(1 << 1)
345*4882a593Smuzhiyun #define SOFTRESET_6362_EPHY_MASK	(1 << 2)
346*4882a593Smuzhiyun #define SOFTRESET_6362_SAR_MASK		(1 << 3)
347*4882a593Smuzhiyun #define SOFTRESET_6362_ENETSW_MASK	(1 << 4)
348*4882a593Smuzhiyun #define SOFTRESET_6362_USBS_MASK	(1 << 5)
349*4882a593Smuzhiyun #define SOFTRESET_6362_USBH_MASK	(1 << 6)
350*4882a593Smuzhiyun #define SOFTRESET_6362_PCM_MASK		(1 << 7)
351*4882a593Smuzhiyun #define SOFTRESET_6362_PCIE_CORE_MASK	(1 << 8)
352*4882a593Smuzhiyun #define SOFTRESET_6362_PCIE_MASK	(1 << 9)
353*4882a593Smuzhiyun #define SOFTRESET_6362_PCIE_EXT_MASK	(1 << 10)
354*4882a593Smuzhiyun #define SOFTRESET_6362_WLAN_SHIM_MASK	(1 << 11)
355*4882a593Smuzhiyun #define SOFTRESET_6362_DDR_PHY_MASK	(1 << 12)
356*4882a593Smuzhiyun #define SOFTRESET_6362_FAP_MASK		(1 << 13)
357*4882a593Smuzhiyun #define SOFTRESET_6362_WLAN_UBUS_MASK	(1 << 14)
358*4882a593Smuzhiyun 
359*4882a593Smuzhiyun #define SOFTRESET_6368_SPI_MASK		(1 << 0)
360*4882a593Smuzhiyun #define SOFTRESET_6368_MPI_MASK		(1 << 3)
361*4882a593Smuzhiyun #define SOFTRESET_6368_EPHY_MASK	(1 << 6)
362*4882a593Smuzhiyun #define SOFTRESET_6368_SAR_MASK		(1 << 7)
363*4882a593Smuzhiyun #define SOFTRESET_6368_ENETSW_MASK	(1 << 10)
364*4882a593Smuzhiyun #define SOFTRESET_6368_USBS_MASK	(1 << 11)
365*4882a593Smuzhiyun #define SOFTRESET_6368_USBH_MASK	(1 << 12)
366*4882a593Smuzhiyun #define SOFTRESET_6368_PCM_MASK		(1 << 13)
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun /* MIPS PLL control register */
369*4882a593Smuzhiyun #define PERF_MIPSPLLCTL_REG		0x34
370*4882a593Smuzhiyun #define MIPSPLLCTL_N1_SHIFT		20
371*4882a593Smuzhiyun #define MIPSPLLCTL_N1_MASK		(0x7 << MIPSPLLCTL_N1_SHIFT)
372*4882a593Smuzhiyun #define MIPSPLLCTL_N2_SHIFT		15
373*4882a593Smuzhiyun #define MIPSPLLCTL_N2_MASK		(0x1f << MIPSPLLCTL_N2_SHIFT)
374*4882a593Smuzhiyun #define MIPSPLLCTL_M1REF_SHIFT		12
375*4882a593Smuzhiyun #define MIPSPLLCTL_M1REF_MASK		(0x7 << MIPSPLLCTL_M1REF_SHIFT)
376*4882a593Smuzhiyun #define MIPSPLLCTL_M2REF_SHIFT		9
377*4882a593Smuzhiyun #define MIPSPLLCTL_M2REF_MASK		(0x7 << MIPSPLLCTL_M2REF_SHIFT)
378*4882a593Smuzhiyun #define MIPSPLLCTL_M1CPU_SHIFT		6
379*4882a593Smuzhiyun #define MIPSPLLCTL_M1CPU_MASK		(0x7 << MIPSPLLCTL_M1CPU_SHIFT)
380*4882a593Smuzhiyun #define MIPSPLLCTL_M1BUS_SHIFT		3
381*4882a593Smuzhiyun #define MIPSPLLCTL_M1BUS_MASK		(0x7 << MIPSPLLCTL_M1BUS_SHIFT)
382*4882a593Smuzhiyun #define MIPSPLLCTL_M2BUS_SHIFT		0
383*4882a593Smuzhiyun #define MIPSPLLCTL_M2BUS_MASK		(0x7 << MIPSPLLCTL_M2BUS_SHIFT)
384*4882a593Smuzhiyun 
385*4882a593Smuzhiyun /* ADSL PHY PLL Control register */
386*4882a593Smuzhiyun #define PERF_ADSLPLLCTL_REG		0x38
387*4882a593Smuzhiyun #define ADSLPLLCTL_N1_SHIFT		20
388*4882a593Smuzhiyun #define ADSLPLLCTL_N1_MASK		(0x7 << ADSLPLLCTL_N1_SHIFT)
389*4882a593Smuzhiyun #define ADSLPLLCTL_N2_SHIFT		15
390*4882a593Smuzhiyun #define ADSLPLLCTL_N2_MASK		(0x1f << ADSLPLLCTL_N2_SHIFT)
391*4882a593Smuzhiyun #define ADSLPLLCTL_M1REF_SHIFT		12
392*4882a593Smuzhiyun #define ADSLPLLCTL_M1REF_MASK		(0x7 << ADSLPLLCTL_M1REF_SHIFT)
393*4882a593Smuzhiyun #define ADSLPLLCTL_M2REF_SHIFT		9
394*4882a593Smuzhiyun #define ADSLPLLCTL_M2REF_MASK		(0x7 << ADSLPLLCTL_M2REF_SHIFT)
395*4882a593Smuzhiyun #define ADSLPLLCTL_M1CPU_SHIFT		6
396*4882a593Smuzhiyun #define ADSLPLLCTL_M1CPU_MASK		(0x7 << ADSLPLLCTL_M1CPU_SHIFT)
397*4882a593Smuzhiyun #define ADSLPLLCTL_M1BUS_SHIFT		3
398*4882a593Smuzhiyun #define ADSLPLLCTL_M1BUS_MASK		(0x7 << ADSLPLLCTL_M1BUS_SHIFT)
399*4882a593Smuzhiyun #define ADSLPLLCTL_M2BUS_SHIFT		0
400*4882a593Smuzhiyun #define ADSLPLLCTL_M2BUS_MASK		(0x7 << ADSLPLLCTL_M2BUS_SHIFT)
401*4882a593Smuzhiyun 
402*4882a593Smuzhiyun #define ADSLPLLCTL_VAL(n1, n2, m1ref, m2ref, m1cpu, m1bus, m2bus)	\
403*4882a593Smuzhiyun 				(((n1) << ADSLPLLCTL_N1_SHIFT) |	\
404*4882a593Smuzhiyun 				((n2) << ADSLPLLCTL_N2_SHIFT) |		\
405*4882a593Smuzhiyun 				((m1ref) << ADSLPLLCTL_M1REF_SHIFT) |	\
406*4882a593Smuzhiyun 				((m2ref) << ADSLPLLCTL_M2REF_SHIFT) |	\
407*4882a593Smuzhiyun 				((m1cpu) << ADSLPLLCTL_M1CPU_SHIFT) |	\
408*4882a593Smuzhiyun 				((m1bus) << ADSLPLLCTL_M1BUS_SHIFT) |	\
409*4882a593Smuzhiyun 				((m2bus) << ADSLPLLCTL_M2BUS_SHIFT))
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun 
412*4882a593Smuzhiyun /*************************************************************************
413*4882a593Smuzhiyun  * _REG relative to RSET_TIMER
414*4882a593Smuzhiyun  *************************************************************************/
415*4882a593Smuzhiyun 
416*4882a593Smuzhiyun #define BCM63XX_TIMER_COUNT		4
417*4882a593Smuzhiyun #define TIMER_T0_ID			0
418*4882a593Smuzhiyun #define TIMER_T1_ID			1
419*4882a593Smuzhiyun #define TIMER_T2_ID			2
420*4882a593Smuzhiyun #define TIMER_WDT_ID			3
421*4882a593Smuzhiyun 
422*4882a593Smuzhiyun /* Timer irqstat register */
423*4882a593Smuzhiyun #define TIMER_IRQSTAT_REG		0
424*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER_CAUSE(x)	(1 << (x))
425*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER0_CAUSE	(1 << 0)
426*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER1_CAUSE	(1 << 1)
427*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER2_CAUSE	(1 << 2)
428*4882a593Smuzhiyun #define TIMER_IRQSTAT_WDT_CAUSE		(1 << 3)
429*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER_IR_EN(x)	(1 << ((x) + 8))
430*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER0_IR_EN	(1 << 8)
431*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER1_IR_EN	(1 << 9)
432*4882a593Smuzhiyun #define TIMER_IRQSTAT_TIMER2_IR_EN	(1 << 10)
433*4882a593Smuzhiyun 
434*4882a593Smuzhiyun /* Timer control register */
435*4882a593Smuzhiyun #define TIMER_CTLx_REG(x)		(0x4 + (x * 4))
436*4882a593Smuzhiyun #define TIMER_CTL0_REG			0x4
437*4882a593Smuzhiyun #define TIMER_CTL1_REG			0x8
438*4882a593Smuzhiyun #define TIMER_CTL2_REG			0xC
439*4882a593Smuzhiyun #define TIMER_CTL_COUNTDOWN_MASK	(0x3fffffff)
440*4882a593Smuzhiyun #define TIMER_CTL_MONOTONIC_MASK	(1 << 30)
441*4882a593Smuzhiyun #define TIMER_CTL_ENABLE_MASK		(1 << 31)
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun /*************************************************************************
445*4882a593Smuzhiyun  * _REG relative to RSET_WDT
446*4882a593Smuzhiyun  *************************************************************************/
447*4882a593Smuzhiyun 
448*4882a593Smuzhiyun /* Watchdog default count register */
449*4882a593Smuzhiyun #define WDT_DEFVAL_REG			0x0
450*4882a593Smuzhiyun 
451*4882a593Smuzhiyun /* Watchdog control register */
452*4882a593Smuzhiyun #define WDT_CTL_REG			0x4
453*4882a593Smuzhiyun 
454*4882a593Smuzhiyun /* Watchdog control register constants */
455*4882a593Smuzhiyun #define WDT_START_1			(0xff00)
456*4882a593Smuzhiyun #define WDT_START_2			(0x00ff)
457*4882a593Smuzhiyun #define WDT_STOP_1			(0xee00)
458*4882a593Smuzhiyun #define WDT_STOP_2			(0x00ee)
459*4882a593Smuzhiyun 
460*4882a593Smuzhiyun /* Watchdog reset length register */
461*4882a593Smuzhiyun #define WDT_RSTLEN_REG			0x8
462*4882a593Smuzhiyun 
463*4882a593Smuzhiyun /* Watchdog soft reset register (BCM6328 only) */
464*4882a593Smuzhiyun #define WDT_SOFTRESET_REG		0xc
465*4882a593Smuzhiyun 
466*4882a593Smuzhiyun /*************************************************************************
467*4882a593Smuzhiyun  * _REG relative to RSET_GPIO
468*4882a593Smuzhiyun  *************************************************************************/
469*4882a593Smuzhiyun 
470*4882a593Smuzhiyun /* GPIO registers */
471*4882a593Smuzhiyun #define GPIO_CTL_HI_REG			0x0
472*4882a593Smuzhiyun #define GPIO_CTL_LO_REG			0x4
473*4882a593Smuzhiyun #define GPIO_DATA_HI_REG		0x8
474*4882a593Smuzhiyun #define GPIO_DATA_LO_REG		0xC
475*4882a593Smuzhiyun #define GPIO_DATA_LO_REG_6345		0x8
476*4882a593Smuzhiyun 
477*4882a593Smuzhiyun /* GPIO mux registers and constants */
478*4882a593Smuzhiyun #define GPIO_MODE_REG			0x18
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun #define GPIO_MODE_6348_G4_DIAG		0x00090000
481*4882a593Smuzhiyun #define GPIO_MODE_6348_G4_UTOPIA	0x00080000
482*4882a593Smuzhiyun #define GPIO_MODE_6348_G4_LEGACY_LED	0x00030000
483*4882a593Smuzhiyun #define GPIO_MODE_6348_G4_MII_SNOOP	0x00020000
484*4882a593Smuzhiyun #define GPIO_MODE_6348_G4_EXT_EPHY	0x00010000
485*4882a593Smuzhiyun #define GPIO_MODE_6348_G3_DIAG		0x00009000
486*4882a593Smuzhiyun #define GPIO_MODE_6348_G3_UTOPIA	0x00008000
487*4882a593Smuzhiyun #define GPIO_MODE_6348_G3_EXT_MII	0x00007000
488*4882a593Smuzhiyun #define GPIO_MODE_6348_G2_DIAG		0x00000900
489*4882a593Smuzhiyun #define GPIO_MODE_6348_G2_PCI		0x00000500
490*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_DIAG		0x00000090
491*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_UTOPIA	0x00000080
492*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_SPI_UART	0x00000060
493*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_SPI_MASTER	0x00000060
494*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_MII_PCCARD	0x00000040
495*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_MII_SNOOP	0x00000020
496*4882a593Smuzhiyun #define GPIO_MODE_6348_G1_EXT_EPHY	0x00000010
497*4882a593Smuzhiyun #define GPIO_MODE_6348_G0_DIAG		0x00000009
498*4882a593Smuzhiyun #define GPIO_MODE_6348_G0_EXT_MII	0x00000007
499*4882a593Smuzhiyun 
500*4882a593Smuzhiyun #define GPIO_MODE_6358_EXTRACS		(1 << 5)
501*4882a593Smuzhiyun #define GPIO_MODE_6358_UART1		(1 << 6)
502*4882a593Smuzhiyun #define GPIO_MODE_6358_EXTRA_SPI_SS	(1 << 7)
503*4882a593Smuzhiyun #define GPIO_MODE_6358_SERIAL_LED	(1 << 10)
504*4882a593Smuzhiyun #define GPIO_MODE_6358_UTOPIA		(1 << 12)
505*4882a593Smuzhiyun 
506*4882a593Smuzhiyun #define GPIO_MODE_6368_ANALOG_AFE_0	(1 << 0)
507*4882a593Smuzhiyun #define GPIO_MODE_6368_ANALOG_AFE_1	(1 << 1)
508*4882a593Smuzhiyun #define GPIO_MODE_6368_SYS_IRQ		(1 << 2)
509*4882a593Smuzhiyun #define GPIO_MODE_6368_SERIAL_LED_DATA	(1 << 3)
510*4882a593Smuzhiyun #define GPIO_MODE_6368_SERIAL_LED_CLK	(1 << 4)
511*4882a593Smuzhiyun #define GPIO_MODE_6368_INET_LED		(1 << 5)
512*4882a593Smuzhiyun #define GPIO_MODE_6368_EPHY0_LED	(1 << 6)
513*4882a593Smuzhiyun #define GPIO_MODE_6368_EPHY1_LED	(1 << 7)
514*4882a593Smuzhiyun #define GPIO_MODE_6368_EPHY2_LED	(1 << 8)
515*4882a593Smuzhiyun #define GPIO_MODE_6368_EPHY3_LED	(1 << 9)
516*4882a593Smuzhiyun #define GPIO_MODE_6368_ROBOSW_LED_DAT	(1 << 10)
517*4882a593Smuzhiyun #define GPIO_MODE_6368_ROBOSW_LED_CLK	(1 << 11)
518*4882a593Smuzhiyun #define GPIO_MODE_6368_ROBOSW_LED0	(1 << 12)
519*4882a593Smuzhiyun #define GPIO_MODE_6368_ROBOSW_LED1	(1 << 13)
520*4882a593Smuzhiyun #define GPIO_MODE_6368_USBD_LED		(1 << 14)
521*4882a593Smuzhiyun #define GPIO_MODE_6368_NTR_PULSE	(1 << 15)
522*4882a593Smuzhiyun #define GPIO_MODE_6368_PCI_REQ1		(1 << 16)
523*4882a593Smuzhiyun #define GPIO_MODE_6368_PCI_GNT1		(1 << 17)
524*4882a593Smuzhiyun #define GPIO_MODE_6368_PCI_INTB		(1 << 18)
525*4882a593Smuzhiyun #define GPIO_MODE_6368_PCI_REQ0		(1 << 19)
526*4882a593Smuzhiyun #define GPIO_MODE_6368_PCI_GNT0		(1 << 20)
527*4882a593Smuzhiyun #define GPIO_MODE_6368_PCMCIA_CD1	(1 << 22)
528*4882a593Smuzhiyun #define GPIO_MODE_6368_PCMCIA_CD2	(1 << 23)
529*4882a593Smuzhiyun #define GPIO_MODE_6368_PCMCIA_VS1	(1 << 24)
530*4882a593Smuzhiyun #define GPIO_MODE_6368_PCMCIA_VS2	(1 << 25)
531*4882a593Smuzhiyun #define GPIO_MODE_6368_EBI_CS2		(1 << 26)
532*4882a593Smuzhiyun #define GPIO_MODE_6368_EBI_CS3		(1 << 27)
533*4882a593Smuzhiyun #define GPIO_MODE_6368_SPI_SSN2		(1 << 28)
534*4882a593Smuzhiyun #define GPIO_MODE_6368_SPI_SSN3		(1 << 29)
535*4882a593Smuzhiyun #define GPIO_MODE_6368_SPI_SSN4		(1 << 30)
536*4882a593Smuzhiyun #define GPIO_MODE_6368_SPI_SSN5		(1 << 31)
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun 
539*4882a593Smuzhiyun #define GPIO_PINMUX_OTHR_REG		0x24
540*4882a593Smuzhiyun #define GPIO_PINMUX_OTHR_6328_USB_SHIFT 12
541*4882a593Smuzhiyun #define GPIO_PINMUX_OTHR_6328_USB_MASK	(3 << GPIO_PINMUX_OTHR_6328_USB_SHIFT)
542*4882a593Smuzhiyun #define GPIO_PINMUX_OTHR_6328_USB_HOST	(1 << GPIO_PINMUX_OTHR_6328_USB_SHIFT)
543*4882a593Smuzhiyun #define GPIO_PINMUX_OTHR_6328_USB_DEV	(2 << GPIO_PINMUX_OTHR_6328_USB_SHIFT)
544*4882a593Smuzhiyun 
545*4882a593Smuzhiyun #define GPIO_BASEMODE_6368_REG		0x38
546*4882a593Smuzhiyun #define GPIO_BASEMODE_6368_UART2	0x1
547*4882a593Smuzhiyun #define GPIO_BASEMODE_6368_GPIO		0x0
548*4882a593Smuzhiyun #define GPIO_BASEMODE_6368_MASK		0x7
549*4882a593Smuzhiyun /* those bits must be kept as read in gpio basemode register*/
550*4882a593Smuzhiyun 
551*4882a593Smuzhiyun #define GPIO_STRAPBUS_REG		0x40
552*4882a593Smuzhiyun #define STRAPBUS_6358_BOOT_SEL_PARALLEL (1 << 1)
553*4882a593Smuzhiyun #define STRAPBUS_6358_BOOT_SEL_SERIAL	(0 << 1)
554*4882a593Smuzhiyun #define STRAPBUS_6368_BOOT_SEL_MASK	0x3
555*4882a593Smuzhiyun #define STRAPBUS_6368_BOOT_SEL_NAND	0
556*4882a593Smuzhiyun #define STRAPBUS_6368_BOOT_SEL_SERIAL	1
557*4882a593Smuzhiyun #define STRAPBUS_6368_BOOT_SEL_PARALLEL 3
558*4882a593Smuzhiyun 
559*4882a593Smuzhiyun 
560*4882a593Smuzhiyun /*************************************************************************
561*4882a593Smuzhiyun  * _REG relative to RSET_ENET
562*4882a593Smuzhiyun  *************************************************************************/
563*4882a593Smuzhiyun 
564*4882a593Smuzhiyun /* Receiver Configuration register */
565*4882a593Smuzhiyun #define ENET_RXCFG_REG			0x0
566*4882a593Smuzhiyun #define ENET_RXCFG_ALLMCAST_SHIFT	1
567*4882a593Smuzhiyun #define ENET_RXCFG_ALLMCAST_MASK	(1 << ENET_RXCFG_ALLMCAST_SHIFT)
568*4882a593Smuzhiyun #define ENET_RXCFG_PROMISC_SHIFT	3
569*4882a593Smuzhiyun #define ENET_RXCFG_PROMISC_MASK		(1 << ENET_RXCFG_PROMISC_SHIFT)
570*4882a593Smuzhiyun #define ENET_RXCFG_LOOPBACK_SHIFT	4
571*4882a593Smuzhiyun #define ENET_RXCFG_LOOPBACK_MASK	(1 << ENET_RXCFG_LOOPBACK_SHIFT)
572*4882a593Smuzhiyun #define ENET_RXCFG_ENFLOW_SHIFT		5
573*4882a593Smuzhiyun #define ENET_RXCFG_ENFLOW_MASK		(1 << ENET_RXCFG_ENFLOW_SHIFT)
574*4882a593Smuzhiyun 
575*4882a593Smuzhiyun /* Receive Maximum Length register */
576*4882a593Smuzhiyun #define ENET_RXMAXLEN_REG		0x4
577*4882a593Smuzhiyun #define ENET_RXMAXLEN_SHIFT		0
578*4882a593Smuzhiyun #define ENET_RXMAXLEN_MASK		(0x7ff << ENET_RXMAXLEN_SHIFT)
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun /* Transmit Maximum Length register */
581*4882a593Smuzhiyun #define ENET_TXMAXLEN_REG		0x8
582*4882a593Smuzhiyun #define ENET_TXMAXLEN_SHIFT		0
583*4882a593Smuzhiyun #define ENET_TXMAXLEN_MASK		(0x7ff << ENET_TXMAXLEN_SHIFT)
584*4882a593Smuzhiyun 
585*4882a593Smuzhiyun /* MII Status/Control register */
586*4882a593Smuzhiyun #define ENET_MIISC_REG			0x10
587*4882a593Smuzhiyun #define ENET_MIISC_MDCFREQDIV_SHIFT	0
588*4882a593Smuzhiyun #define ENET_MIISC_MDCFREQDIV_MASK	(0x7f << ENET_MIISC_MDCFREQDIV_SHIFT)
589*4882a593Smuzhiyun #define ENET_MIISC_PREAMBLEEN_SHIFT	7
590*4882a593Smuzhiyun #define ENET_MIISC_PREAMBLEEN_MASK	(1 << ENET_MIISC_PREAMBLEEN_SHIFT)
591*4882a593Smuzhiyun 
592*4882a593Smuzhiyun /* MII Data register */
593*4882a593Smuzhiyun #define ENET_MIIDATA_REG		0x14
594*4882a593Smuzhiyun #define ENET_MIIDATA_DATA_SHIFT		0
595*4882a593Smuzhiyun #define ENET_MIIDATA_DATA_MASK		(0xffff << ENET_MIIDATA_DATA_SHIFT)
596*4882a593Smuzhiyun #define ENET_MIIDATA_TA_SHIFT		16
597*4882a593Smuzhiyun #define ENET_MIIDATA_TA_MASK		(0x3 << ENET_MIIDATA_TA_SHIFT)
598*4882a593Smuzhiyun #define ENET_MIIDATA_REG_SHIFT		18
599*4882a593Smuzhiyun #define ENET_MIIDATA_REG_MASK		(0x1f << ENET_MIIDATA_REG_SHIFT)
600*4882a593Smuzhiyun #define ENET_MIIDATA_PHYID_SHIFT	23
601*4882a593Smuzhiyun #define ENET_MIIDATA_PHYID_MASK		(0x1f << ENET_MIIDATA_PHYID_SHIFT)
602*4882a593Smuzhiyun #define ENET_MIIDATA_OP_READ_MASK	(0x6 << 28)
603*4882a593Smuzhiyun #define ENET_MIIDATA_OP_WRITE_MASK	(0x5 << 28)
604*4882a593Smuzhiyun 
605*4882a593Smuzhiyun /* Ethernet Interrupt Mask register */
606*4882a593Smuzhiyun #define ENET_IRMASK_REG			0x18
607*4882a593Smuzhiyun 
608*4882a593Smuzhiyun /* Ethernet Interrupt register */
609*4882a593Smuzhiyun #define ENET_IR_REG			0x1c
610*4882a593Smuzhiyun #define ENET_IR_MII			(1 << 0)
611*4882a593Smuzhiyun #define ENET_IR_MIB			(1 << 1)
612*4882a593Smuzhiyun #define ENET_IR_FLOWC			(1 << 2)
613*4882a593Smuzhiyun 
614*4882a593Smuzhiyun /* Ethernet Control register */
615*4882a593Smuzhiyun #define ENET_CTL_REG			0x2c
616*4882a593Smuzhiyun #define ENET_CTL_ENABLE_SHIFT		0
617*4882a593Smuzhiyun #define ENET_CTL_ENABLE_MASK		(1 << ENET_CTL_ENABLE_SHIFT)
618*4882a593Smuzhiyun #define ENET_CTL_DISABLE_SHIFT		1
619*4882a593Smuzhiyun #define ENET_CTL_DISABLE_MASK		(1 << ENET_CTL_DISABLE_SHIFT)
620*4882a593Smuzhiyun #define ENET_CTL_SRESET_SHIFT		2
621*4882a593Smuzhiyun #define ENET_CTL_SRESET_MASK		(1 << ENET_CTL_SRESET_SHIFT)
622*4882a593Smuzhiyun #define ENET_CTL_EPHYSEL_SHIFT		3
623*4882a593Smuzhiyun #define ENET_CTL_EPHYSEL_MASK		(1 << ENET_CTL_EPHYSEL_SHIFT)
624*4882a593Smuzhiyun 
625*4882a593Smuzhiyun /* Transmit Control register */
626*4882a593Smuzhiyun #define ENET_TXCTL_REG			0x30
627*4882a593Smuzhiyun #define ENET_TXCTL_FD_SHIFT		0
628*4882a593Smuzhiyun #define ENET_TXCTL_FD_MASK		(1 << ENET_TXCTL_FD_SHIFT)
629*4882a593Smuzhiyun 
630*4882a593Smuzhiyun /* Transmit Watermask register */
631*4882a593Smuzhiyun #define ENET_TXWMARK_REG		0x34
632*4882a593Smuzhiyun #define ENET_TXWMARK_WM_SHIFT		0
633*4882a593Smuzhiyun #define ENET_TXWMARK_WM_MASK		(0x3f << ENET_TXWMARK_WM_SHIFT)
634*4882a593Smuzhiyun 
635*4882a593Smuzhiyun /* MIB Control register */
636*4882a593Smuzhiyun #define ENET_MIBCTL_REG			0x38
637*4882a593Smuzhiyun #define ENET_MIBCTL_RDCLEAR_SHIFT	0
638*4882a593Smuzhiyun #define ENET_MIBCTL_RDCLEAR_MASK	(1 << ENET_MIBCTL_RDCLEAR_SHIFT)
639*4882a593Smuzhiyun 
640*4882a593Smuzhiyun /* Perfect Match Data Low register */
641*4882a593Smuzhiyun #define ENET_PML_REG(x)			(0x58 + (x) * 8)
642*4882a593Smuzhiyun #define ENET_PMH_REG(x)			(0x5c + (x) * 8)
643*4882a593Smuzhiyun #define ENET_PMH_DATAVALID_SHIFT	16
644*4882a593Smuzhiyun #define ENET_PMH_DATAVALID_MASK		(1 << ENET_PMH_DATAVALID_SHIFT)
645*4882a593Smuzhiyun 
646*4882a593Smuzhiyun /* MIB register */
647*4882a593Smuzhiyun #define ENET_MIB_REG(x)			(0x200 + (x) * 4)
648*4882a593Smuzhiyun #define ENET_MIB_REG_COUNT		55
649*4882a593Smuzhiyun 
650*4882a593Smuzhiyun 
651*4882a593Smuzhiyun /*************************************************************************
652*4882a593Smuzhiyun  * _REG relative to RSET_ENETDMA
653*4882a593Smuzhiyun  *************************************************************************/
654*4882a593Smuzhiyun #define ENETDMA_CHAN_WIDTH		0x10
655*4882a593Smuzhiyun #define ENETDMA_6345_CHAN_WIDTH		0x40
656*4882a593Smuzhiyun 
657*4882a593Smuzhiyun /* Controller Configuration Register */
658*4882a593Smuzhiyun #define ENETDMA_CFG_REG			(0x0)
659*4882a593Smuzhiyun #define ENETDMA_CFG_EN_SHIFT		0
660*4882a593Smuzhiyun #define ENETDMA_CFG_EN_MASK		(1 << ENETDMA_CFG_EN_SHIFT)
661*4882a593Smuzhiyun #define ENETDMA_CFG_FLOWCH_MASK(x)	(1 << ((x >> 1) + 1))
662*4882a593Smuzhiyun 
663*4882a593Smuzhiyun /* Flow Control Descriptor Low Threshold register */
664*4882a593Smuzhiyun #define ENETDMA_FLOWCL_REG(x)		(0x4 + (x) * 6)
665*4882a593Smuzhiyun 
666*4882a593Smuzhiyun /* Flow Control Descriptor High Threshold register */
667*4882a593Smuzhiyun #define ENETDMA_FLOWCH_REG(x)		(0x8 + (x) * 6)
668*4882a593Smuzhiyun 
669*4882a593Smuzhiyun /* Flow Control Descriptor Buffer Alloca Threshold register */
670*4882a593Smuzhiyun #define ENETDMA_BUFALLOC_REG(x)		(0xc + (x) * 6)
671*4882a593Smuzhiyun #define ENETDMA_BUFALLOC_FORCE_SHIFT	31
672*4882a593Smuzhiyun #define ENETDMA_BUFALLOC_FORCE_MASK	(1 << ENETDMA_BUFALLOC_FORCE_SHIFT)
673*4882a593Smuzhiyun 
674*4882a593Smuzhiyun /* Global interrupt status */
675*4882a593Smuzhiyun #define ENETDMA_GLB_IRQSTAT_REG		(0x40)
676*4882a593Smuzhiyun 
677*4882a593Smuzhiyun /* Global interrupt mask */
678*4882a593Smuzhiyun #define ENETDMA_GLB_IRQMASK_REG		(0x44)
679*4882a593Smuzhiyun 
680*4882a593Smuzhiyun /* Channel Configuration register */
681*4882a593Smuzhiyun #define ENETDMA_CHANCFG_REG(x)		(0x100 + (x) * 0x10)
682*4882a593Smuzhiyun #define ENETDMA_CHANCFG_EN_SHIFT	0
683*4882a593Smuzhiyun #define ENETDMA_CHANCFG_EN_MASK		(1 << ENETDMA_CHANCFG_EN_SHIFT)
684*4882a593Smuzhiyun #define ENETDMA_CHANCFG_PKTHALT_SHIFT	1
685*4882a593Smuzhiyun #define ENETDMA_CHANCFG_PKTHALT_MASK	(1 << ENETDMA_CHANCFG_PKTHALT_SHIFT)
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun /* Interrupt Control/Status register */
688*4882a593Smuzhiyun #define ENETDMA_IR_REG(x)		(0x104 + (x) * 0x10)
689*4882a593Smuzhiyun #define ENETDMA_IR_BUFDONE_MASK		(1 << 0)
690*4882a593Smuzhiyun #define ENETDMA_IR_PKTDONE_MASK		(1 << 1)
691*4882a593Smuzhiyun #define ENETDMA_IR_NOTOWNER_MASK	(1 << 2)
692*4882a593Smuzhiyun 
693*4882a593Smuzhiyun /* Interrupt Mask register */
694*4882a593Smuzhiyun #define ENETDMA_IRMASK_REG(x)		(0x108 + (x) * 0x10)
695*4882a593Smuzhiyun 
696*4882a593Smuzhiyun /* Maximum Burst Length */
697*4882a593Smuzhiyun #define ENETDMA_MAXBURST_REG(x)		(0x10C + (x) * 0x10)
698*4882a593Smuzhiyun 
699*4882a593Smuzhiyun /* Ring Start Address register */
700*4882a593Smuzhiyun #define ENETDMA_RSTART_REG(x)		(0x200 + (x) * 0x10)
701*4882a593Smuzhiyun 
702*4882a593Smuzhiyun /* State Ram Word 2 */
703*4882a593Smuzhiyun #define ENETDMA_SRAM2_REG(x)		(0x204 + (x) * 0x10)
704*4882a593Smuzhiyun 
705*4882a593Smuzhiyun /* State Ram Word 3 */
706*4882a593Smuzhiyun #define ENETDMA_SRAM3_REG(x)		(0x208 + (x) * 0x10)
707*4882a593Smuzhiyun 
708*4882a593Smuzhiyun /* State Ram Word 4 */
709*4882a593Smuzhiyun #define ENETDMA_SRAM4_REG(x)		(0x20c + (x) * 0x10)
710*4882a593Smuzhiyun 
711*4882a593Smuzhiyun /* Broadcom 6345 ENET DMA definitions */
712*4882a593Smuzhiyun #define ENETDMA_6345_CHANCFG_REG	(0x00)
713*4882a593Smuzhiyun 
714*4882a593Smuzhiyun #define ENETDMA_6345_MAXBURST_REG	(0x04)
715*4882a593Smuzhiyun 
716*4882a593Smuzhiyun #define ENETDMA_6345_RSTART_REG		(0x08)
717*4882a593Smuzhiyun 
718*4882a593Smuzhiyun #define ENETDMA_6345_LEN_REG		(0x0C)
719*4882a593Smuzhiyun 
720*4882a593Smuzhiyun #define ENETDMA_6345_IR_REG		(0x14)
721*4882a593Smuzhiyun 
722*4882a593Smuzhiyun #define ENETDMA_6345_IRMASK_REG		(0x18)
723*4882a593Smuzhiyun 
724*4882a593Smuzhiyun #define ENETDMA_6345_FC_REG		(0x1C)
725*4882a593Smuzhiyun 
726*4882a593Smuzhiyun #define ENETDMA_6345_BUFALLOC_REG	(0x20)
727*4882a593Smuzhiyun 
728*4882a593Smuzhiyun /* Shift down for EOP, SOP and WRAP bits */
729*4882a593Smuzhiyun #define ENETDMA_6345_DESC_SHIFT		(3)
730*4882a593Smuzhiyun 
731*4882a593Smuzhiyun /*************************************************************************
732*4882a593Smuzhiyun  * _REG relative to RSET_ENETDMAC
733*4882a593Smuzhiyun  *************************************************************************/
734*4882a593Smuzhiyun 
735*4882a593Smuzhiyun /* Channel Configuration register */
736*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_REG		(0x0)
737*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_EN_SHIFT	0
738*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_EN_MASK	(1 << ENETDMAC_CHANCFG_EN_SHIFT)
739*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_PKTHALT_SHIFT	1
740*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_PKTHALT_MASK	(1 << ENETDMAC_CHANCFG_PKTHALT_SHIFT)
741*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_BUFHALT_SHIFT	2
742*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_BUFHALT_MASK	(1 << ENETDMAC_CHANCFG_BUFHALT_SHIFT)
743*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_CHAINING_SHIFT	2
744*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_CHAINING_MASK	(1 << ENETDMAC_CHANCFG_CHAINING_SHIFT)
745*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_WRAP_EN_SHIFT	3
746*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_WRAP_EN_MASK	(1 << ENETDMAC_CHANCFG_WRAP_EN_SHIFT)
747*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_FLOWC_EN_SHIFT	4
748*4882a593Smuzhiyun #define ENETDMAC_CHANCFG_FLOWC_EN_MASK	(1 << ENETDMAC_CHANCFG_FLOWC_EN_SHIFT)
749*4882a593Smuzhiyun 
750*4882a593Smuzhiyun /* Interrupt Control/Status register */
751*4882a593Smuzhiyun #define ENETDMAC_IR_REG			(0x4)
752*4882a593Smuzhiyun #define ENETDMAC_IR_BUFDONE_MASK	(1 << 0)
753*4882a593Smuzhiyun #define ENETDMAC_IR_PKTDONE_MASK	(1 << 1)
754*4882a593Smuzhiyun #define ENETDMAC_IR_NOTOWNER_MASK	(1 << 2)
755*4882a593Smuzhiyun 
756*4882a593Smuzhiyun /* Interrupt Mask register */
757*4882a593Smuzhiyun #define ENETDMAC_IRMASK_REG		(0x8)
758*4882a593Smuzhiyun 
759*4882a593Smuzhiyun /* Maximum Burst Length */
760*4882a593Smuzhiyun #define ENETDMAC_MAXBURST_REG		(0xc)
761*4882a593Smuzhiyun 
762*4882a593Smuzhiyun 
763*4882a593Smuzhiyun /*************************************************************************
764*4882a593Smuzhiyun  * _REG relative to RSET_ENETDMAS
765*4882a593Smuzhiyun  *************************************************************************/
766*4882a593Smuzhiyun 
767*4882a593Smuzhiyun /* Ring Start Address register */
768*4882a593Smuzhiyun #define ENETDMAS_RSTART_REG		(0x0)
769*4882a593Smuzhiyun 
770*4882a593Smuzhiyun /* State Ram Word 2 */
771*4882a593Smuzhiyun #define ENETDMAS_SRAM2_REG		(0x4)
772*4882a593Smuzhiyun 
773*4882a593Smuzhiyun /* State Ram Word 3 */
774*4882a593Smuzhiyun #define ENETDMAS_SRAM3_REG		(0x8)
775*4882a593Smuzhiyun 
776*4882a593Smuzhiyun /* State Ram Word 4 */
777*4882a593Smuzhiyun #define ENETDMAS_SRAM4_REG		(0xc)
778*4882a593Smuzhiyun 
779*4882a593Smuzhiyun 
780*4882a593Smuzhiyun /*************************************************************************
781*4882a593Smuzhiyun  * _REG relative to RSET_ENETSW
782*4882a593Smuzhiyun  *************************************************************************/
783*4882a593Smuzhiyun 
784*4882a593Smuzhiyun /* Port traffic control */
785*4882a593Smuzhiyun #define ENETSW_PTCTRL_REG(x)		(0x0 + (x))
786*4882a593Smuzhiyun #define ENETSW_PTCTRL_RXDIS_MASK	(1 << 0)
787*4882a593Smuzhiyun #define ENETSW_PTCTRL_TXDIS_MASK	(1 << 1)
788*4882a593Smuzhiyun 
789*4882a593Smuzhiyun /* Switch mode register */
790*4882a593Smuzhiyun #define ENETSW_SWMODE_REG		(0xb)
791*4882a593Smuzhiyun #define ENETSW_SWMODE_FWD_EN_MASK	(1 << 1)
792*4882a593Smuzhiyun 
793*4882a593Smuzhiyun /* IMP override Register */
794*4882a593Smuzhiyun #define ENETSW_IMPOV_REG		(0xe)
795*4882a593Smuzhiyun #define ENETSW_IMPOV_FORCE_MASK		(1 << 7)
796*4882a593Smuzhiyun #define ENETSW_IMPOV_TXFLOW_MASK	(1 << 5)
797*4882a593Smuzhiyun #define ENETSW_IMPOV_RXFLOW_MASK	(1 << 4)
798*4882a593Smuzhiyun #define ENETSW_IMPOV_1000_MASK		(1 << 3)
799*4882a593Smuzhiyun #define ENETSW_IMPOV_100_MASK		(1 << 2)
800*4882a593Smuzhiyun #define ENETSW_IMPOV_FDX_MASK		(1 << 1)
801*4882a593Smuzhiyun #define ENETSW_IMPOV_LINKUP_MASK	(1 << 0)
802*4882a593Smuzhiyun 
803*4882a593Smuzhiyun /* Port override Register */
804*4882a593Smuzhiyun #define ENETSW_PORTOV_REG(x)		(0x58 + (x))
805*4882a593Smuzhiyun #define ENETSW_PORTOV_ENABLE_MASK	(1 << 6)
806*4882a593Smuzhiyun #define ENETSW_PORTOV_TXFLOW_MASK	(1 << 5)
807*4882a593Smuzhiyun #define ENETSW_PORTOV_RXFLOW_MASK	(1 << 4)
808*4882a593Smuzhiyun #define ENETSW_PORTOV_1000_MASK		(1 << 3)
809*4882a593Smuzhiyun #define ENETSW_PORTOV_100_MASK		(1 << 2)
810*4882a593Smuzhiyun #define ENETSW_PORTOV_FDX_MASK		(1 << 1)
811*4882a593Smuzhiyun #define ENETSW_PORTOV_LINKUP_MASK	(1 << 0)
812*4882a593Smuzhiyun 
813*4882a593Smuzhiyun /* MDIO control register */
814*4882a593Smuzhiyun #define ENETSW_MDIOC_REG		(0xb0)
815*4882a593Smuzhiyun #define ENETSW_MDIOC_EXT_MASK		(1 << 16)
816*4882a593Smuzhiyun #define ENETSW_MDIOC_REG_SHIFT		20
817*4882a593Smuzhiyun #define ENETSW_MDIOC_PHYID_SHIFT	25
818*4882a593Smuzhiyun #define ENETSW_MDIOC_RD_MASK		(1 << 30)
819*4882a593Smuzhiyun #define ENETSW_MDIOC_WR_MASK		(1 << 31)
820*4882a593Smuzhiyun 
821*4882a593Smuzhiyun /* MDIO data register */
822*4882a593Smuzhiyun #define ENETSW_MDIOD_REG		(0xb4)
823*4882a593Smuzhiyun 
824*4882a593Smuzhiyun /* Global Management Configuration Register */
825*4882a593Smuzhiyun #define ENETSW_GMCR_REG			(0x200)
826*4882a593Smuzhiyun #define ENETSW_GMCR_RST_MIB_MASK	(1 << 0)
827*4882a593Smuzhiyun 
828*4882a593Smuzhiyun /* MIB register */
829*4882a593Smuzhiyun #define ENETSW_MIB_REG(x)		(0x2800 + (x) * 4)
830*4882a593Smuzhiyun #define ENETSW_MIB_REG_COUNT		47
831*4882a593Smuzhiyun 
832*4882a593Smuzhiyun /* Jumbo control register port mask register */
833*4882a593Smuzhiyun #define ENETSW_JMBCTL_PORT_REG		(0x4004)
834*4882a593Smuzhiyun 
835*4882a593Smuzhiyun /* Jumbo control mib good frame register */
836*4882a593Smuzhiyun #define ENETSW_JMBCTL_MAXSIZE_REG	(0x4008)
837*4882a593Smuzhiyun 
838*4882a593Smuzhiyun 
839*4882a593Smuzhiyun /*************************************************************************
840*4882a593Smuzhiyun  * _REG relative to RSET_OHCI_PRIV
841*4882a593Smuzhiyun  *************************************************************************/
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun #define OHCI_PRIV_REG			0x0
844*4882a593Smuzhiyun #define OHCI_PRIV_PORT1_HOST_SHIFT	0
845*4882a593Smuzhiyun #define OHCI_PRIV_PORT1_HOST_MASK	(1 << OHCI_PRIV_PORT1_HOST_SHIFT)
846*4882a593Smuzhiyun #define OHCI_PRIV_REG_SWAP_SHIFT	3
847*4882a593Smuzhiyun #define OHCI_PRIV_REG_SWAP_MASK		(1 << OHCI_PRIV_REG_SWAP_SHIFT)
848*4882a593Smuzhiyun 
849*4882a593Smuzhiyun 
850*4882a593Smuzhiyun /*************************************************************************
851*4882a593Smuzhiyun  * _REG relative to RSET_USBH_PRIV
852*4882a593Smuzhiyun  *************************************************************************/
853*4882a593Smuzhiyun 
854*4882a593Smuzhiyun #define USBH_PRIV_SWAP_6358_REG		0x0
855*4882a593Smuzhiyun #define USBH_PRIV_SWAP_6368_REG		0x1c
856*4882a593Smuzhiyun 
857*4882a593Smuzhiyun #define USBH_PRIV_SWAP_USBD_SHIFT	6
858*4882a593Smuzhiyun #define USBH_PRIV_SWAP_USBD_MASK	(1 << USBH_PRIV_SWAP_USBD_SHIFT)
859*4882a593Smuzhiyun #define USBH_PRIV_SWAP_EHCI_ENDN_SHIFT	4
860*4882a593Smuzhiyun #define USBH_PRIV_SWAP_EHCI_ENDN_MASK	(1 << USBH_PRIV_SWAP_EHCI_ENDN_SHIFT)
861*4882a593Smuzhiyun #define USBH_PRIV_SWAP_EHCI_DATA_SHIFT	3
862*4882a593Smuzhiyun #define USBH_PRIV_SWAP_EHCI_DATA_MASK	(1 << USBH_PRIV_SWAP_EHCI_DATA_SHIFT)
863*4882a593Smuzhiyun #define USBH_PRIV_SWAP_OHCI_ENDN_SHIFT	1
864*4882a593Smuzhiyun #define USBH_PRIV_SWAP_OHCI_ENDN_MASK	(1 << USBH_PRIV_SWAP_OHCI_ENDN_SHIFT)
865*4882a593Smuzhiyun #define USBH_PRIV_SWAP_OHCI_DATA_SHIFT	0
866*4882a593Smuzhiyun #define USBH_PRIV_SWAP_OHCI_DATA_MASK	(1 << USBH_PRIV_SWAP_OHCI_DATA_SHIFT)
867*4882a593Smuzhiyun 
868*4882a593Smuzhiyun #define USBH_PRIV_UTMI_CTL_6368_REG	0x10
869*4882a593Smuzhiyun #define USBH_PRIV_UTMI_CTL_NODRIV_SHIFT 12
870*4882a593Smuzhiyun #define USBH_PRIV_UTMI_CTL_NODRIV_MASK	(0xf << USBH_PRIV_UTMI_CTL_NODRIV_SHIFT)
871*4882a593Smuzhiyun #define USBH_PRIV_UTMI_CTL_HOSTB_SHIFT	0
872*4882a593Smuzhiyun #define USBH_PRIV_UTMI_CTL_HOSTB_MASK	(0xf << USBH_PRIV_UTMI_CTL_HOSTB_SHIFT)
873*4882a593Smuzhiyun 
874*4882a593Smuzhiyun #define USBH_PRIV_TEST_6358_REG		0x24
875*4882a593Smuzhiyun #define USBH_PRIV_TEST_6368_REG		0x14
876*4882a593Smuzhiyun 
877*4882a593Smuzhiyun #define USBH_PRIV_SETUP_6368_REG	0x28
878*4882a593Smuzhiyun #define USBH_PRIV_SETUP_IOC_SHIFT	4
879*4882a593Smuzhiyun #define USBH_PRIV_SETUP_IOC_MASK	(1 << USBH_PRIV_SETUP_IOC_SHIFT)
880*4882a593Smuzhiyun 
881*4882a593Smuzhiyun 
882*4882a593Smuzhiyun /*************************************************************************
883*4882a593Smuzhiyun  * _REG relative to RSET_USBD
884*4882a593Smuzhiyun  *************************************************************************/
885*4882a593Smuzhiyun 
886*4882a593Smuzhiyun /* General control */
887*4882a593Smuzhiyun #define USBD_CONTROL_REG		0x00
888*4882a593Smuzhiyun #define USBD_CONTROL_TXZLENINS_SHIFT	14
889*4882a593Smuzhiyun #define USBD_CONTROL_TXZLENINS_MASK	(1 << USBD_CONTROL_TXZLENINS_SHIFT)
890*4882a593Smuzhiyun #define USBD_CONTROL_AUTO_CSRS_SHIFT	13
891*4882a593Smuzhiyun #define USBD_CONTROL_AUTO_CSRS_MASK	(1 << USBD_CONTROL_AUTO_CSRS_SHIFT)
892*4882a593Smuzhiyun #define USBD_CONTROL_RXZSCFG_SHIFT	12
893*4882a593Smuzhiyun #define USBD_CONTROL_RXZSCFG_MASK	(1 << USBD_CONTROL_RXZSCFG_SHIFT)
894*4882a593Smuzhiyun #define USBD_CONTROL_INIT_SEL_SHIFT	8
895*4882a593Smuzhiyun #define USBD_CONTROL_INIT_SEL_MASK	(0xf << USBD_CONTROL_INIT_SEL_SHIFT)
896*4882a593Smuzhiyun #define USBD_CONTROL_FIFO_RESET_SHIFT	6
897*4882a593Smuzhiyun #define USBD_CONTROL_FIFO_RESET_MASK	(3 << USBD_CONTROL_FIFO_RESET_SHIFT)
898*4882a593Smuzhiyun #define USBD_CONTROL_SETUPERRLOCK_SHIFT 5
899*4882a593Smuzhiyun #define USBD_CONTROL_SETUPERRLOCK_MASK	(1 << USBD_CONTROL_SETUPERRLOCK_SHIFT)
900*4882a593Smuzhiyun #define USBD_CONTROL_DONE_CSRS_SHIFT	0
901*4882a593Smuzhiyun #define USBD_CONTROL_DONE_CSRS_MASK	(1 << USBD_CONTROL_DONE_CSRS_SHIFT)
902*4882a593Smuzhiyun 
903*4882a593Smuzhiyun /* Strap options */
904*4882a593Smuzhiyun #define USBD_STRAPS_REG			0x04
905*4882a593Smuzhiyun #define USBD_STRAPS_APP_SELF_PWR_SHIFT	10
906*4882a593Smuzhiyun #define USBD_STRAPS_APP_SELF_PWR_MASK	(1 << USBD_STRAPS_APP_SELF_PWR_SHIFT)
907*4882a593Smuzhiyun #define USBD_STRAPS_APP_DISCON_SHIFT	9
908*4882a593Smuzhiyun #define USBD_STRAPS_APP_DISCON_MASK	(1 << USBD_STRAPS_APP_DISCON_SHIFT)
909*4882a593Smuzhiyun #define USBD_STRAPS_APP_CSRPRGSUP_SHIFT 8
910*4882a593Smuzhiyun #define USBD_STRAPS_APP_CSRPRGSUP_MASK	(1 << USBD_STRAPS_APP_CSRPRGSUP_SHIFT)
911*4882a593Smuzhiyun #define USBD_STRAPS_APP_RMTWKUP_SHIFT	6
912*4882a593Smuzhiyun #define USBD_STRAPS_APP_RMTWKUP_MASK	(1 << USBD_STRAPS_APP_RMTWKUP_SHIFT)
913*4882a593Smuzhiyun #define USBD_STRAPS_APP_RAM_IF_SHIFT	7
914*4882a593Smuzhiyun #define USBD_STRAPS_APP_RAM_IF_MASK	(1 << USBD_STRAPS_APP_RAM_IF_SHIFT)
915*4882a593Smuzhiyun #define USBD_STRAPS_APP_8BITPHY_SHIFT	2
916*4882a593Smuzhiyun #define USBD_STRAPS_APP_8BITPHY_MASK	(1 << USBD_STRAPS_APP_8BITPHY_SHIFT)
917*4882a593Smuzhiyun #define USBD_STRAPS_SPEED_SHIFT		0
918*4882a593Smuzhiyun #define USBD_STRAPS_SPEED_MASK		(3 << USBD_STRAPS_SPEED_SHIFT)
919*4882a593Smuzhiyun 
920*4882a593Smuzhiyun /* Stall control */
921*4882a593Smuzhiyun #define USBD_STALL_REG			0x08
922*4882a593Smuzhiyun #define USBD_STALL_UPDATE_SHIFT		7
923*4882a593Smuzhiyun #define USBD_STALL_UPDATE_MASK		(1 << USBD_STALL_UPDATE_SHIFT)
924*4882a593Smuzhiyun #define USBD_STALL_ENABLE_SHIFT		6
925*4882a593Smuzhiyun #define USBD_STALL_ENABLE_MASK		(1 << USBD_STALL_ENABLE_SHIFT)
926*4882a593Smuzhiyun #define USBD_STALL_EPNUM_SHIFT		0
927*4882a593Smuzhiyun #define USBD_STALL_EPNUM_MASK		(0xf << USBD_STALL_EPNUM_SHIFT)
928*4882a593Smuzhiyun 
929*4882a593Smuzhiyun /* General status */
930*4882a593Smuzhiyun #define USBD_STATUS_REG			0x0c
931*4882a593Smuzhiyun #define USBD_STATUS_SOF_SHIFT		16
932*4882a593Smuzhiyun #define USBD_STATUS_SOF_MASK		(0x7ff << USBD_STATUS_SOF_SHIFT)
933*4882a593Smuzhiyun #define USBD_STATUS_SPD_SHIFT		12
934*4882a593Smuzhiyun #define USBD_STATUS_SPD_MASK		(3 << USBD_STATUS_SPD_SHIFT)
935*4882a593Smuzhiyun #define USBD_STATUS_ALTINTF_SHIFT	8
936*4882a593Smuzhiyun #define USBD_STATUS_ALTINTF_MASK	(0xf << USBD_STATUS_ALTINTF_SHIFT)
937*4882a593Smuzhiyun #define USBD_STATUS_INTF_SHIFT		4
938*4882a593Smuzhiyun #define USBD_STATUS_INTF_MASK		(0xf << USBD_STATUS_INTF_SHIFT)
939*4882a593Smuzhiyun #define USBD_STATUS_CFG_SHIFT		0
940*4882a593Smuzhiyun #define USBD_STATUS_CFG_MASK		(0xf << USBD_STATUS_CFG_SHIFT)
941*4882a593Smuzhiyun 
942*4882a593Smuzhiyun /* Other events */
943*4882a593Smuzhiyun #define USBD_EVENTS_REG			0x10
944*4882a593Smuzhiyun #define USBD_EVENTS_USB_LINK_SHIFT	10
945*4882a593Smuzhiyun #define USBD_EVENTS_USB_LINK_MASK	(1 << USBD_EVENTS_USB_LINK_SHIFT)
946*4882a593Smuzhiyun 
947*4882a593Smuzhiyun /* IRQ status */
948*4882a593Smuzhiyun #define USBD_EVENT_IRQ_STATUS_REG	0x14
949*4882a593Smuzhiyun 
950*4882a593Smuzhiyun /* IRQ level (2 bits per IRQ event) */
951*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_HI_REG	0x18
952*4882a593Smuzhiyun 
953*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_LO_REG	0x1c
954*4882a593Smuzhiyun 
955*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_SHIFT(x)	((x & 0xf) << 1)
956*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_MASK(x)	(3 << USBD_EVENT_IRQ_CFG_SHIFT(x))
957*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_RISING(x)	(0 << USBD_EVENT_IRQ_CFG_SHIFT(x))
958*4882a593Smuzhiyun #define USBD_EVENT_IRQ_CFG_FALLING(x)	(1 << USBD_EVENT_IRQ_CFG_SHIFT(x))
959*4882a593Smuzhiyun 
960*4882a593Smuzhiyun /* IRQ mask (1=unmasked) */
961*4882a593Smuzhiyun #define USBD_EVENT_IRQ_MASK_REG		0x20
962*4882a593Smuzhiyun 
963*4882a593Smuzhiyun /* IRQ bits */
964*4882a593Smuzhiyun #define USBD_EVENT_IRQ_USB_LINK		10
965*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SETCFG		9
966*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SETINTF		8
967*4882a593Smuzhiyun #define USBD_EVENT_IRQ_ERRATIC_ERR	7
968*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SET_CSRS		6
969*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SUSPEND		5
970*4882a593Smuzhiyun #define USBD_EVENT_IRQ_EARLY_SUSPEND	4
971*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SOF		3
972*4882a593Smuzhiyun #define USBD_EVENT_IRQ_ENUM_ON		2
973*4882a593Smuzhiyun #define USBD_EVENT_IRQ_SETUP		1
974*4882a593Smuzhiyun #define USBD_EVENT_IRQ_USB_RESET	0
975*4882a593Smuzhiyun 
976*4882a593Smuzhiyun /* TX FIFO partitioning */
977*4882a593Smuzhiyun #define USBD_TXFIFO_CONFIG_REG		0x40
978*4882a593Smuzhiyun #define USBD_TXFIFO_CONFIG_END_SHIFT	16
979*4882a593Smuzhiyun #define USBD_TXFIFO_CONFIG_END_MASK	(0xff << USBD_TXFIFO_CONFIG_END_SHIFT)
980*4882a593Smuzhiyun #define USBD_TXFIFO_CONFIG_START_SHIFT	0
981*4882a593Smuzhiyun #define USBD_TXFIFO_CONFIG_START_MASK	(0xff << USBD_TXFIFO_CONFIG_START_SHIFT)
982*4882a593Smuzhiyun 
983*4882a593Smuzhiyun /* RX FIFO partitioning */
984*4882a593Smuzhiyun #define USBD_RXFIFO_CONFIG_REG		0x44
985*4882a593Smuzhiyun #define USBD_RXFIFO_CONFIG_END_SHIFT	16
986*4882a593Smuzhiyun #define USBD_RXFIFO_CONFIG_END_MASK	(0xff << USBD_TXFIFO_CONFIG_END_SHIFT)
987*4882a593Smuzhiyun #define USBD_RXFIFO_CONFIG_START_SHIFT	0
988*4882a593Smuzhiyun #define USBD_RXFIFO_CONFIG_START_MASK	(0xff << USBD_TXFIFO_CONFIG_START_SHIFT)
989*4882a593Smuzhiyun 
990*4882a593Smuzhiyun /* TX FIFO/endpoint configuration */
991*4882a593Smuzhiyun #define USBD_TXFIFO_EPSIZE_REG		0x48
992*4882a593Smuzhiyun 
993*4882a593Smuzhiyun /* RX FIFO/endpoint configuration */
994*4882a593Smuzhiyun #define USBD_RXFIFO_EPSIZE_REG		0x4c
995*4882a593Smuzhiyun 
996*4882a593Smuzhiyun /* Endpoint<->DMA mappings */
997*4882a593Smuzhiyun #define USBD_EPNUM_TYPEMAP_REG		0x50
998*4882a593Smuzhiyun #define USBD_EPNUM_TYPEMAP_TYPE_SHIFT	8
999*4882a593Smuzhiyun #define USBD_EPNUM_TYPEMAP_TYPE_MASK	(0x3 << USBD_EPNUM_TYPEMAP_TYPE_SHIFT)
1000*4882a593Smuzhiyun #define USBD_EPNUM_TYPEMAP_DMA_CH_SHIFT 0
1001*4882a593Smuzhiyun #define USBD_EPNUM_TYPEMAP_DMA_CH_MASK	(0xf << USBD_EPNUM_TYPEMAP_DMACH_SHIFT)
1002*4882a593Smuzhiyun 
1003*4882a593Smuzhiyun /* Misc per-endpoint settings */
1004*4882a593Smuzhiyun #define USBD_CSR_SETUPADDR_REG		0x80
1005*4882a593Smuzhiyun #define USBD_CSR_SETUPADDR_DEF		0xb550
1006*4882a593Smuzhiyun 
1007*4882a593Smuzhiyun #define USBD_CSR_EP_REG(x)		(0x84 + (x) * 4)
1008*4882a593Smuzhiyun #define USBD_CSR_EP_MAXPKT_SHIFT	19
1009*4882a593Smuzhiyun #define USBD_CSR_EP_MAXPKT_MASK		(0x7ff << USBD_CSR_EP_MAXPKT_SHIFT)
1010*4882a593Smuzhiyun #define USBD_CSR_EP_ALTIFACE_SHIFT	15
1011*4882a593Smuzhiyun #define USBD_CSR_EP_ALTIFACE_MASK	(0xf << USBD_CSR_EP_ALTIFACE_SHIFT)
1012*4882a593Smuzhiyun #define USBD_CSR_EP_IFACE_SHIFT		11
1013*4882a593Smuzhiyun #define USBD_CSR_EP_IFACE_MASK		(0xf << USBD_CSR_EP_IFACE_SHIFT)
1014*4882a593Smuzhiyun #define USBD_CSR_EP_CFG_SHIFT		7
1015*4882a593Smuzhiyun #define USBD_CSR_EP_CFG_MASK		(0xf << USBD_CSR_EP_CFG_SHIFT)
1016*4882a593Smuzhiyun #define USBD_CSR_EP_TYPE_SHIFT		5
1017*4882a593Smuzhiyun #define USBD_CSR_EP_TYPE_MASK		(3 << USBD_CSR_EP_TYPE_SHIFT)
1018*4882a593Smuzhiyun #define USBD_CSR_EP_DIR_SHIFT		4
1019*4882a593Smuzhiyun #define USBD_CSR_EP_DIR_MASK		(1 << USBD_CSR_EP_DIR_SHIFT)
1020*4882a593Smuzhiyun #define USBD_CSR_EP_LOG_SHIFT		0
1021*4882a593Smuzhiyun #define USBD_CSR_EP_LOG_MASK		(0xf << USBD_CSR_EP_LOG_SHIFT)
1022*4882a593Smuzhiyun 
1023*4882a593Smuzhiyun 
1024*4882a593Smuzhiyun /*************************************************************************
1025*4882a593Smuzhiyun  * _REG relative to RSET_MPI
1026*4882a593Smuzhiyun  *************************************************************************/
1027*4882a593Smuzhiyun 
1028*4882a593Smuzhiyun /* well known (hard wired) chip select */
1029*4882a593Smuzhiyun #define MPI_CS_PCMCIA_COMMON		4
1030*4882a593Smuzhiyun #define MPI_CS_PCMCIA_ATTR		5
1031*4882a593Smuzhiyun #define MPI_CS_PCMCIA_IO		6
1032*4882a593Smuzhiyun 
1033*4882a593Smuzhiyun /* Chip select base register */
1034*4882a593Smuzhiyun #define MPI_CSBASE_REG(x)		(0x0 + (x) * 8)
1035*4882a593Smuzhiyun #define MPI_CSBASE_BASE_SHIFT		13
1036*4882a593Smuzhiyun #define MPI_CSBASE_BASE_MASK		(0x1ffff << MPI_CSBASE_BASE_SHIFT)
1037*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_SHIFT		0
1038*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_MASK		(0xf << MPI_CSBASE_SIZE_SHIFT)
1039*4882a593Smuzhiyun 
1040*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_8K		0
1041*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_16K		1
1042*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_32K		2
1043*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_64K		3
1044*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_128K		4
1045*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_256K		5
1046*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_512K		6
1047*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_1M		7
1048*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_2M		8
1049*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_4M		9
1050*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_8M		10
1051*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_16M		11
1052*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_32M		12
1053*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_64M		13
1054*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_128M		14
1055*4882a593Smuzhiyun #define MPI_CSBASE_SIZE_256M		15
1056*4882a593Smuzhiyun 
1057*4882a593Smuzhiyun /* Chip select control register */
1058*4882a593Smuzhiyun #define MPI_CSCTL_REG(x)		(0x4 + (x) * 8)
1059*4882a593Smuzhiyun #define MPI_CSCTL_ENABLE_MASK		(1 << 0)
1060*4882a593Smuzhiyun #define MPI_CSCTL_WAIT_SHIFT		1
1061*4882a593Smuzhiyun #define MPI_CSCTL_WAIT_MASK		(0x7 << MPI_CSCTL_WAIT_SHIFT)
1062*4882a593Smuzhiyun #define MPI_CSCTL_DATA16_MASK		(1 << 4)
1063*4882a593Smuzhiyun #define MPI_CSCTL_SYNCMODE_MASK		(1 << 7)
1064*4882a593Smuzhiyun #define MPI_CSCTL_TSIZE_MASK		(1 << 8)
1065*4882a593Smuzhiyun #define MPI_CSCTL_ENDIANSWAP_MASK	(1 << 10)
1066*4882a593Smuzhiyun #define MPI_CSCTL_SETUP_SHIFT		16
1067*4882a593Smuzhiyun #define MPI_CSCTL_SETUP_MASK		(0xf << MPI_CSCTL_SETUP_SHIFT)
1068*4882a593Smuzhiyun #define MPI_CSCTL_HOLD_SHIFT		20
1069*4882a593Smuzhiyun #define MPI_CSCTL_HOLD_MASK		(0xf << MPI_CSCTL_HOLD_SHIFT)
1070*4882a593Smuzhiyun 
1071*4882a593Smuzhiyun /* PCI registers */
1072*4882a593Smuzhiyun #define MPI_SP0_RANGE_REG		0x100
1073*4882a593Smuzhiyun #define MPI_SP0_REMAP_REG		0x104
1074*4882a593Smuzhiyun #define MPI_SP0_REMAP_ENABLE_MASK	(1 << 0)
1075*4882a593Smuzhiyun #define MPI_SP1_RANGE_REG		0x10C
1076*4882a593Smuzhiyun #define MPI_SP1_REMAP_REG		0x110
1077*4882a593Smuzhiyun #define MPI_SP1_REMAP_ENABLE_MASK	(1 << 0)
1078*4882a593Smuzhiyun 
1079*4882a593Smuzhiyun #define MPI_L2PCFG_REG			0x11C
1080*4882a593Smuzhiyun #define MPI_L2PCFG_CFG_TYPE_SHIFT	0
1081*4882a593Smuzhiyun #define MPI_L2PCFG_CFG_TYPE_MASK	(0x3 << MPI_L2PCFG_CFG_TYPE_SHIFT)
1082*4882a593Smuzhiyun #define MPI_L2PCFG_REG_SHIFT		2
1083*4882a593Smuzhiyun #define MPI_L2PCFG_REG_MASK		(0x3f << MPI_L2PCFG_REG_SHIFT)
1084*4882a593Smuzhiyun #define MPI_L2PCFG_FUNC_SHIFT		8
1085*4882a593Smuzhiyun #define MPI_L2PCFG_FUNC_MASK		(0x7 << MPI_L2PCFG_FUNC_SHIFT)
1086*4882a593Smuzhiyun #define MPI_L2PCFG_DEVNUM_SHIFT		11
1087*4882a593Smuzhiyun #define MPI_L2PCFG_DEVNUM_MASK		(0x1f << MPI_L2PCFG_DEVNUM_SHIFT)
1088*4882a593Smuzhiyun #define MPI_L2PCFG_CFG_USEREG_MASK	(1 << 30)
1089*4882a593Smuzhiyun #define MPI_L2PCFG_CFG_SEL_MASK		(1 << 31)
1090*4882a593Smuzhiyun 
1091*4882a593Smuzhiyun #define MPI_L2PMEMRANGE1_REG		0x120
1092*4882a593Smuzhiyun #define MPI_L2PMEMBASE1_REG		0x124
1093*4882a593Smuzhiyun #define MPI_L2PMEMREMAP1_REG		0x128
1094*4882a593Smuzhiyun #define MPI_L2PMEMRANGE2_REG		0x12C
1095*4882a593Smuzhiyun #define MPI_L2PMEMBASE2_REG		0x130
1096*4882a593Smuzhiyun #define MPI_L2PMEMREMAP2_REG		0x134
1097*4882a593Smuzhiyun #define MPI_L2PIORANGE_REG		0x138
1098*4882a593Smuzhiyun #define MPI_L2PIOBASE_REG		0x13C
1099*4882a593Smuzhiyun #define MPI_L2PIOREMAP_REG		0x140
1100*4882a593Smuzhiyun #define MPI_L2P_BASE_MASK		(0xffff8000)
1101*4882a593Smuzhiyun #define MPI_L2PREMAP_ENABLED_MASK	(1 << 0)
1102*4882a593Smuzhiyun #define MPI_L2PREMAP_IS_CARDBUS_MASK	(1 << 2)
1103*4882a593Smuzhiyun 
1104*4882a593Smuzhiyun #define MPI_PCIMODESEL_REG		0x144
1105*4882a593Smuzhiyun #define MPI_PCIMODESEL_BAR1_NOSWAP_MASK (1 << 0)
1106*4882a593Smuzhiyun #define MPI_PCIMODESEL_BAR2_NOSWAP_MASK (1 << 1)
1107*4882a593Smuzhiyun #define MPI_PCIMODESEL_EXT_ARB_MASK	(1 << 2)
1108*4882a593Smuzhiyun #define MPI_PCIMODESEL_PREFETCH_SHIFT	4
1109*4882a593Smuzhiyun #define MPI_PCIMODESEL_PREFETCH_MASK	(0xf << MPI_PCIMODESEL_PREFETCH_SHIFT)
1110*4882a593Smuzhiyun 
1111*4882a593Smuzhiyun #define MPI_LOCBUSCTL_REG		0x14C
1112*4882a593Smuzhiyun #define MPI_LOCBUSCTL_EN_PCI_GPIO_MASK	(1 << 0)
1113*4882a593Smuzhiyun #define MPI_LOCBUSCTL_U2P_NOSWAP_MASK	(1 << 1)
1114*4882a593Smuzhiyun 
1115*4882a593Smuzhiyun #define MPI_LOCINT_REG			0x150
1116*4882a593Smuzhiyun #define MPI_LOCINT_MASK(x)		(1 << (x + 16))
1117*4882a593Smuzhiyun #define MPI_LOCINT_STAT(x)		(1 << (x))
1118*4882a593Smuzhiyun #define MPI_LOCINT_DIR_FAILED		6
1119*4882a593Smuzhiyun #define MPI_LOCINT_EXT_PCI_INT		7
1120*4882a593Smuzhiyun #define MPI_LOCINT_SERR			8
1121*4882a593Smuzhiyun #define MPI_LOCINT_CSERR		9
1122*4882a593Smuzhiyun 
1123*4882a593Smuzhiyun #define MPI_PCICFGCTL_REG		0x178
1124*4882a593Smuzhiyun #define MPI_PCICFGCTL_CFGADDR_SHIFT	2
1125*4882a593Smuzhiyun #define MPI_PCICFGCTL_CFGADDR_MASK	(0x1f << MPI_PCICFGCTL_CFGADDR_SHIFT)
1126*4882a593Smuzhiyun #define MPI_PCICFGCTL_WRITEEN_MASK	(1 << 7)
1127*4882a593Smuzhiyun 
1128*4882a593Smuzhiyun #define MPI_PCICFGDATA_REG		0x17C
1129*4882a593Smuzhiyun 
1130*4882a593Smuzhiyun /* PCI host bridge custom register */
1131*4882a593Smuzhiyun #define BCMPCI_REG_TIMERS		0x40
1132*4882a593Smuzhiyun #define REG_TIMER_TRDY_SHIFT		0
1133*4882a593Smuzhiyun #define REG_TIMER_TRDY_MASK		(0xff << REG_TIMER_TRDY_SHIFT)
1134*4882a593Smuzhiyun #define REG_TIMER_RETRY_SHIFT		8
1135*4882a593Smuzhiyun #define REG_TIMER_RETRY_MASK		(0xff << REG_TIMER_RETRY_SHIFT)
1136*4882a593Smuzhiyun 
1137*4882a593Smuzhiyun 
1138*4882a593Smuzhiyun /*************************************************************************
1139*4882a593Smuzhiyun  * _REG relative to RSET_PCMCIA
1140*4882a593Smuzhiyun  *************************************************************************/
1141*4882a593Smuzhiyun 
1142*4882a593Smuzhiyun #define PCMCIA_C1_REG			0x0
1143*4882a593Smuzhiyun #define PCMCIA_C1_CD1_MASK		(1 << 0)
1144*4882a593Smuzhiyun #define PCMCIA_C1_CD2_MASK		(1 << 1)
1145*4882a593Smuzhiyun #define PCMCIA_C1_VS1_MASK		(1 << 2)
1146*4882a593Smuzhiyun #define PCMCIA_C1_VS2_MASK		(1 << 3)
1147*4882a593Smuzhiyun #define PCMCIA_C1_VS1OE_MASK		(1 << 6)
1148*4882a593Smuzhiyun #define PCMCIA_C1_VS2OE_MASK		(1 << 7)
1149*4882a593Smuzhiyun #define PCMCIA_C1_CBIDSEL_SHIFT		(8)
1150*4882a593Smuzhiyun #define PCMCIA_C1_CBIDSEL_MASK		(0x1f << PCMCIA_C1_CBIDSEL_SHIFT)
1151*4882a593Smuzhiyun #define PCMCIA_C1_EN_PCMCIA_GPIO_MASK	(1 << 13)
1152*4882a593Smuzhiyun #define PCMCIA_C1_EN_PCMCIA_MASK	(1 << 14)
1153*4882a593Smuzhiyun #define PCMCIA_C1_EN_CARDBUS_MASK	(1 << 15)
1154*4882a593Smuzhiyun #define PCMCIA_C1_RESET_MASK		(1 << 18)
1155*4882a593Smuzhiyun 
1156*4882a593Smuzhiyun #define PCMCIA_C2_REG			0x8
1157*4882a593Smuzhiyun #define PCMCIA_C2_DATA16_MASK		(1 << 0)
1158*4882a593Smuzhiyun #define PCMCIA_C2_BYTESWAP_MASK		(1 << 1)
1159*4882a593Smuzhiyun #define PCMCIA_C2_RWCOUNT_SHIFT		2
1160*4882a593Smuzhiyun #define PCMCIA_C2_RWCOUNT_MASK		(0x3f << PCMCIA_C2_RWCOUNT_SHIFT)
1161*4882a593Smuzhiyun #define PCMCIA_C2_INACTIVE_SHIFT	8
1162*4882a593Smuzhiyun #define PCMCIA_C2_INACTIVE_MASK		(0x3f << PCMCIA_C2_INACTIVE_SHIFT)
1163*4882a593Smuzhiyun #define PCMCIA_C2_SETUP_SHIFT		16
1164*4882a593Smuzhiyun #define PCMCIA_C2_SETUP_MASK		(0x3f << PCMCIA_C2_SETUP_SHIFT)
1165*4882a593Smuzhiyun #define PCMCIA_C2_HOLD_SHIFT		24
1166*4882a593Smuzhiyun #define PCMCIA_C2_HOLD_MASK		(0x3f << PCMCIA_C2_HOLD_SHIFT)
1167*4882a593Smuzhiyun 
1168*4882a593Smuzhiyun 
1169*4882a593Smuzhiyun /*************************************************************************
1170*4882a593Smuzhiyun  * _REG relative to RSET_SDRAM
1171*4882a593Smuzhiyun  *************************************************************************/
1172*4882a593Smuzhiyun 
1173*4882a593Smuzhiyun #define SDRAM_CFG_REG			0x0
1174*4882a593Smuzhiyun #define SDRAM_CFG_ROW_SHIFT		4
1175*4882a593Smuzhiyun #define SDRAM_CFG_ROW_MASK		(0x3 << SDRAM_CFG_ROW_SHIFT)
1176*4882a593Smuzhiyun #define SDRAM_CFG_COL_SHIFT		6
1177*4882a593Smuzhiyun #define SDRAM_CFG_COL_MASK		(0x3 << SDRAM_CFG_COL_SHIFT)
1178*4882a593Smuzhiyun #define SDRAM_CFG_32B_SHIFT		10
1179*4882a593Smuzhiyun #define SDRAM_CFG_32B_MASK		(1 << SDRAM_CFG_32B_SHIFT)
1180*4882a593Smuzhiyun #define SDRAM_CFG_BANK_SHIFT		13
1181*4882a593Smuzhiyun #define SDRAM_CFG_BANK_MASK		(1 << SDRAM_CFG_BANK_SHIFT)
1182*4882a593Smuzhiyun 
1183*4882a593Smuzhiyun #define SDRAM_MBASE_REG			0xc
1184*4882a593Smuzhiyun 
1185*4882a593Smuzhiyun #define SDRAM_PRIO_REG			0x2C
1186*4882a593Smuzhiyun #define SDRAM_PRIO_MIPS_SHIFT		29
1187*4882a593Smuzhiyun #define SDRAM_PRIO_MIPS_MASK		(1 << SDRAM_PRIO_MIPS_SHIFT)
1188*4882a593Smuzhiyun #define SDRAM_PRIO_ADSL_SHIFT		30
1189*4882a593Smuzhiyun #define SDRAM_PRIO_ADSL_MASK		(1 << SDRAM_PRIO_ADSL_SHIFT)
1190*4882a593Smuzhiyun #define SDRAM_PRIO_EN_SHIFT		31
1191*4882a593Smuzhiyun #define SDRAM_PRIO_EN_MASK		(1 << SDRAM_PRIO_EN_SHIFT)
1192*4882a593Smuzhiyun 
1193*4882a593Smuzhiyun 
1194*4882a593Smuzhiyun /*************************************************************************
1195*4882a593Smuzhiyun  * _REG relative to RSET_MEMC
1196*4882a593Smuzhiyun  *************************************************************************/
1197*4882a593Smuzhiyun 
1198*4882a593Smuzhiyun #define MEMC_CFG_REG			0x4
1199*4882a593Smuzhiyun #define MEMC_CFG_32B_SHIFT		1
1200*4882a593Smuzhiyun #define MEMC_CFG_32B_MASK		(1 << MEMC_CFG_32B_SHIFT)
1201*4882a593Smuzhiyun #define MEMC_CFG_COL_SHIFT		3
1202*4882a593Smuzhiyun #define MEMC_CFG_COL_MASK		(0x3 << MEMC_CFG_COL_SHIFT)
1203*4882a593Smuzhiyun #define MEMC_CFG_ROW_SHIFT		6
1204*4882a593Smuzhiyun #define MEMC_CFG_ROW_MASK		(0x3 << MEMC_CFG_ROW_SHIFT)
1205*4882a593Smuzhiyun 
1206*4882a593Smuzhiyun 
1207*4882a593Smuzhiyun /*************************************************************************
1208*4882a593Smuzhiyun  * _REG relative to RSET_DDR
1209*4882a593Smuzhiyun  *************************************************************************/
1210*4882a593Smuzhiyun 
1211*4882a593Smuzhiyun #define DDR_CSEND_REG			0x8
1212*4882a593Smuzhiyun 
1213*4882a593Smuzhiyun #define DDR_DMIPSPLLCFG_REG		0x18
1214*4882a593Smuzhiyun #define DMIPSPLLCFG_M1_SHIFT		0
1215*4882a593Smuzhiyun #define DMIPSPLLCFG_M1_MASK		(0xff << DMIPSPLLCFG_M1_SHIFT)
1216*4882a593Smuzhiyun #define DMIPSPLLCFG_N1_SHIFT		23
1217*4882a593Smuzhiyun #define DMIPSPLLCFG_N1_MASK		(0x3f << DMIPSPLLCFG_N1_SHIFT)
1218*4882a593Smuzhiyun #define DMIPSPLLCFG_N2_SHIFT		29
1219*4882a593Smuzhiyun #define DMIPSPLLCFG_N2_MASK		(0x7 << DMIPSPLLCFG_N2_SHIFT)
1220*4882a593Smuzhiyun 
1221*4882a593Smuzhiyun #define DDR_DMIPSPLLCFG_6368_REG	0x20
1222*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_P1_SHIFT	0
1223*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_P1_MASK	(0xf << DMIPSPLLCFG_6368_P1_SHIFT)
1224*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_P2_SHIFT	4
1225*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_P2_MASK	(0xf << DMIPSPLLCFG_6368_P2_SHIFT)
1226*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_NDIV_SHIFT	16
1227*4882a593Smuzhiyun #define DMIPSPLLCFG_6368_NDIV_MASK	(0x1ff << DMIPSPLLCFG_6368_NDIV_SHIFT)
1228*4882a593Smuzhiyun 
1229*4882a593Smuzhiyun #define DDR_DMIPSPLLDIV_6368_REG	0x24
1230*4882a593Smuzhiyun #define DMIPSPLLDIV_6368_MDIV_SHIFT	0
1231*4882a593Smuzhiyun #define DMIPSPLLDIV_6368_MDIV_MASK	(0xff << DMIPSPLLDIV_6368_MDIV_SHIFT)
1232*4882a593Smuzhiyun 
1233*4882a593Smuzhiyun 
1234*4882a593Smuzhiyun /*************************************************************************
1235*4882a593Smuzhiyun  * _REG relative to RSET_M2M
1236*4882a593Smuzhiyun  *************************************************************************/
1237*4882a593Smuzhiyun 
1238*4882a593Smuzhiyun #define M2M_RX				0
1239*4882a593Smuzhiyun #define M2M_TX				1
1240*4882a593Smuzhiyun 
1241*4882a593Smuzhiyun #define M2M_SRC_REG(x)			((x) * 0x40 + 0x00)
1242*4882a593Smuzhiyun #define M2M_DST_REG(x)			((x) * 0x40 + 0x04)
1243*4882a593Smuzhiyun #define M2M_SIZE_REG(x)			((x) * 0x40 + 0x08)
1244*4882a593Smuzhiyun 
1245*4882a593Smuzhiyun #define M2M_CTRL_REG(x)			((x) * 0x40 + 0x0c)
1246*4882a593Smuzhiyun #define M2M_CTRL_ENABLE_MASK		(1 << 0)
1247*4882a593Smuzhiyun #define M2M_CTRL_IRQEN_MASK		(1 << 1)
1248*4882a593Smuzhiyun #define M2M_CTRL_ERROR_CLR_MASK		(1 << 6)
1249*4882a593Smuzhiyun #define M2M_CTRL_DONE_CLR_MASK		(1 << 7)
1250*4882a593Smuzhiyun #define M2M_CTRL_NOINC_MASK		(1 << 8)
1251*4882a593Smuzhiyun #define M2M_CTRL_PCMCIASWAP_MASK	(1 << 9)
1252*4882a593Smuzhiyun #define M2M_CTRL_SWAPBYTE_MASK		(1 << 10)
1253*4882a593Smuzhiyun #define M2M_CTRL_ENDIAN_MASK		(1 << 11)
1254*4882a593Smuzhiyun 
1255*4882a593Smuzhiyun #define M2M_STAT_REG(x)			((x) * 0x40 + 0x10)
1256*4882a593Smuzhiyun #define M2M_STAT_DONE			(1 << 0)
1257*4882a593Smuzhiyun #define M2M_STAT_ERROR			(1 << 1)
1258*4882a593Smuzhiyun 
1259*4882a593Smuzhiyun #define M2M_SRCID_REG(x)		((x) * 0x40 + 0x14)
1260*4882a593Smuzhiyun #define M2M_DSTID_REG(x)		((x) * 0x40 + 0x18)
1261*4882a593Smuzhiyun 
1262*4882a593Smuzhiyun /*************************************************************************
1263*4882a593Smuzhiyun  * _REG relative to RSET_SPI
1264*4882a593Smuzhiyun  *************************************************************************/
1265*4882a593Smuzhiyun 
1266*4882a593Smuzhiyun /* BCM 6338/6348 SPI core */
1267*4882a593Smuzhiyun #define SPI_6348_CMD			0x00	/* 16-bits register */
1268*4882a593Smuzhiyun #define SPI_6348_INT_STATUS		0x02
1269*4882a593Smuzhiyun #define SPI_6348_INT_MASK_ST		0x03
1270*4882a593Smuzhiyun #define SPI_6348_INT_MASK		0x04
1271*4882a593Smuzhiyun #define SPI_6348_ST			0x05
1272*4882a593Smuzhiyun #define SPI_6348_CLK_CFG		0x06
1273*4882a593Smuzhiyun #define SPI_6348_FILL_BYTE		0x07
1274*4882a593Smuzhiyun #define SPI_6348_MSG_TAIL		0x09
1275*4882a593Smuzhiyun #define SPI_6348_RX_TAIL		0x0b
1276*4882a593Smuzhiyun #define SPI_6348_MSG_CTL		0x40	/* 8-bits register */
1277*4882a593Smuzhiyun #define SPI_6348_MSG_CTL_WIDTH		8
1278*4882a593Smuzhiyun #define SPI_6348_MSG_DATA		0x41
1279*4882a593Smuzhiyun #define SPI_6348_MSG_DATA_SIZE		0x3f
1280*4882a593Smuzhiyun #define SPI_6348_RX_DATA		0x80
1281*4882a593Smuzhiyun #define SPI_6348_RX_DATA_SIZE		0x3f
1282*4882a593Smuzhiyun 
1283*4882a593Smuzhiyun /* BCM 3368/6358/6262/6368 SPI core */
1284*4882a593Smuzhiyun #define SPI_6358_MSG_CTL		0x00	/* 16-bits register */
1285*4882a593Smuzhiyun #define SPI_6358_MSG_CTL_WIDTH		16
1286*4882a593Smuzhiyun #define SPI_6358_MSG_DATA		0x02
1287*4882a593Smuzhiyun #define SPI_6358_MSG_DATA_SIZE		0x21e
1288*4882a593Smuzhiyun #define SPI_6358_RX_DATA		0x400
1289*4882a593Smuzhiyun #define SPI_6358_RX_DATA_SIZE		0x220
1290*4882a593Smuzhiyun #define SPI_6358_CMD			0x700	/* 16-bits register */
1291*4882a593Smuzhiyun #define SPI_6358_INT_STATUS		0x702
1292*4882a593Smuzhiyun #define SPI_6358_INT_MASK_ST		0x703
1293*4882a593Smuzhiyun #define SPI_6358_INT_MASK		0x704
1294*4882a593Smuzhiyun #define SPI_6358_ST			0x705
1295*4882a593Smuzhiyun #define SPI_6358_CLK_CFG		0x706
1296*4882a593Smuzhiyun #define SPI_6358_FILL_BYTE		0x707
1297*4882a593Smuzhiyun #define SPI_6358_MSG_TAIL		0x709
1298*4882a593Smuzhiyun #define SPI_6358_RX_TAIL		0x70B
1299*4882a593Smuzhiyun 
1300*4882a593Smuzhiyun /* Shared SPI definitions */
1301*4882a593Smuzhiyun 
1302*4882a593Smuzhiyun /* Message configuration */
1303*4882a593Smuzhiyun #define SPI_FD_RW			0x00
1304*4882a593Smuzhiyun #define SPI_HD_W			0x01
1305*4882a593Smuzhiyun #define SPI_HD_R			0x02
1306*4882a593Smuzhiyun #define SPI_BYTE_CNT_SHIFT		0
1307*4882a593Smuzhiyun #define SPI_6348_MSG_TYPE_SHIFT		6
1308*4882a593Smuzhiyun #define SPI_6358_MSG_TYPE_SHIFT		14
1309*4882a593Smuzhiyun 
1310*4882a593Smuzhiyun /* Command */
1311*4882a593Smuzhiyun #define SPI_CMD_NOOP			0x00
1312*4882a593Smuzhiyun #define SPI_CMD_SOFT_RESET		0x01
1313*4882a593Smuzhiyun #define SPI_CMD_HARD_RESET		0x02
1314*4882a593Smuzhiyun #define SPI_CMD_START_IMMEDIATE		0x03
1315*4882a593Smuzhiyun #define SPI_CMD_COMMAND_SHIFT		0
1316*4882a593Smuzhiyun #define SPI_CMD_COMMAND_MASK		0x000f
1317*4882a593Smuzhiyun #define SPI_CMD_DEVICE_ID_SHIFT		4
1318*4882a593Smuzhiyun #define SPI_CMD_PREPEND_BYTE_CNT_SHIFT	8
1319*4882a593Smuzhiyun #define SPI_CMD_ONE_BYTE_SHIFT		11
1320*4882a593Smuzhiyun #define SPI_CMD_ONE_WIRE_SHIFT		12
1321*4882a593Smuzhiyun #define SPI_DEV_ID_0			0
1322*4882a593Smuzhiyun #define SPI_DEV_ID_1			1
1323*4882a593Smuzhiyun #define SPI_DEV_ID_2			2
1324*4882a593Smuzhiyun #define SPI_DEV_ID_3			3
1325*4882a593Smuzhiyun 
1326*4882a593Smuzhiyun /* Interrupt mask */
1327*4882a593Smuzhiyun #define SPI_INTR_CMD_DONE		0x01
1328*4882a593Smuzhiyun #define SPI_INTR_RX_OVERFLOW		0x02
1329*4882a593Smuzhiyun #define SPI_INTR_TX_UNDERFLOW		0x04
1330*4882a593Smuzhiyun #define SPI_INTR_TX_OVERFLOW		0x08
1331*4882a593Smuzhiyun #define SPI_INTR_RX_UNDERFLOW		0x10
1332*4882a593Smuzhiyun #define SPI_INTR_CLEAR_ALL		0x1f
1333*4882a593Smuzhiyun 
1334*4882a593Smuzhiyun /* Status */
1335*4882a593Smuzhiyun #define SPI_RX_EMPTY			0x02
1336*4882a593Smuzhiyun #define SPI_CMD_BUSY			0x04
1337*4882a593Smuzhiyun #define SPI_SERIAL_BUSY			0x08
1338*4882a593Smuzhiyun 
1339*4882a593Smuzhiyun /* Clock configuration */
1340*4882a593Smuzhiyun #define SPI_CLK_20MHZ			0x00
1341*4882a593Smuzhiyun #define SPI_CLK_0_391MHZ		0x01
1342*4882a593Smuzhiyun #define SPI_CLK_0_781MHZ		0x02 /* default */
1343*4882a593Smuzhiyun #define SPI_CLK_1_563MHZ		0x03
1344*4882a593Smuzhiyun #define SPI_CLK_3_125MHZ		0x04
1345*4882a593Smuzhiyun #define SPI_CLK_6_250MHZ		0x05
1346*4882a593Smuzhiyun #define SPI_CLK_12_50MHZ		0x06
1347*4882a593Smuzhiyun #define SPI_CLK_MASK			0x07
1348*4882a593Smuzhiyun #define SPI_SSOFFTIME_MASK		0x38
1349*4882a593Smuzhiyun #define SPI_SSOFFTIME_SHIFT		3
1350*4882a593Smuzhiyun #define SPI_BYTE_SWAP			0x80
1351*4882a593Smuzhiyun 
1352*4882a593Smuzhiyun /*************************************************************************
1353*4882a593Smuzhiyun  * _REG relative to RSET_MISC
1354*4882a593Smuzhiyun  *************************************************************************/
1355*4882a593Smuzhiyun #define MISC_SERDES_CTRL_6328_REG	0x0
1356*4882a593Smuzhiyun #define MISC_SERDES_CTRL_6362_REG	0x4
1357*4882a593Smuzhiyun #define SERDES_PCIE_EN			(1 << 0)
1358*4882a593Smuzhiyun #define SERDES_PCIE_EXD_EN		(1 << 15)
1359*4882a593Smuzhiyun 
1360*4882a593Smuzhiyun #define MISC_STRAPBUS_6362_REG		0x14
1361*4882a593Smuzhiyun #define STRAPBUS_6362_FCVO_SHIFT	1
1362*4882a593Smuzhiyun #define STRAPBUS_6362_HSSPI_CLK_FAST	(1 << 13)
1363*4882a593Smuzhiyun #define STRAPBUS_6362_FCVO_MASK		(0x1f << STRAPBUS_6362_FCVO_SHIFT)
1364*4882a593Smuzhiyun #define STRAPBUS_6362_BOOT_SEL_SERIAL	(1 << 15)
1365*4882a593Smuzhiyun #define STRAPBUS_6362_BOOT_SEL_NAND	(0 << 15)
1366*4882a593Smuzhiyun 
1367*4882a593Smuzhiyun #define MISC_STRAPBUS_6328_REG		0x240
1368*4882a593Smuzhiyun #define STRAPBUS_6328_FCVO_SHIFT	7
1369*4882a593Smuzhiyun #define STRAPBUS_6328_FCVO_MASK		(0x1f << STRAPBUS_6328_FCVO_SHIFT)
1370*4882a593Smuzhiyun #define STRAPBUS_6328_BOOT_SEL_SERIAL	(1 << 18)
1371*4882a593Smuzhiyun #define STRAPBUS_6328_BOOT_SEL_NAND	(0 << 18)
1372*4882a593Smuzhiyun 
1373*4882a593Smuzhiyun /*************************************************************************
1374*4882a593Smuzhiyun  * _REG relative to RSET_PCIE
1375*4882a593Smuzhiyun  *************************************************************************/
1376*4882a593Smuzhiyun 
1377*4882a593Smuzhiyun #define PCIE_CONFIG2_REG		0x408
1378*4882a593Smuzhiyun #define CONFIG2_BAR1_SIZE_EN		1
1379*4882a593Smuzhiyun #define CONFIG2_BAR1_SIZE_MASK		0xf
1380*4882a593Smuzhiyun 
1381*4882a593Smuzhiyun #define PCIE_IDVAL3_REG			0x43c
1382*4882a593Smuzhiyun #define IDVAL3_CLASS_CODE_MASK		0xffffff
1383*4882a593Smuzhiyun #define IDVAL3_SUBCLASS_SHIFT		8
1384*4882a593Smuzhiyun #define IDVAL3_CLASS_SHIFT		16
1385*4882a593Smuzhiyun 
1386*4882a593Smuzhiyun #define PCIE_DLSTATUS_REG		0x1048
1387*4882a593Smuzhiyun #define DLSTATUS_PHYLINKUP		(1 << 13)
1388*4882a593Smuzhiyun 
1389*4882a593Smuzhiyun #define PCIE_BRIDGE_OPT1_REG		0x2820
1390*4882a593Smuzhiyun #define OPT1_RD_BE_OPT_EN		(1 << 7)
1391*4882a593Smuzhiyun #define OPT1_RD_REPLY_BE_FIX_EN		(1 << 9)
1392*4882a593Smuzhiyun #define OPT1_PCIE_BRIDGE_HOLE_DET_EN	(1 << 11)
1393*4882a593Smuzhiyun #define OPT1_L1_INT_STATUS_MASK_POL	(1 << 12)
1394*4882a593Smuzhiyun 
1395*4882a593Smuzhiyun #define PCIE_BRIDGE_OPT2_REG		0x2824
1396*4882a593Smuzhiyun #define OPT2_UBUS_UR_DECODE_DIS		(1 << 2)
1397*4882a593Smuzhiyun #define OPT2_TX_CREDIT_CHK_EN		(1 << 4)
1398*4882a593Smuzhiyun #define OPT2_CFG_TYPE1_BD_SEL		(1 << 7)
1399*4882a593Smuzhiyun #define OPT2_CFG_TYPE1_BUS_NO_SHIFT	16
1400*4882a593Smuzhiyun #define OPT2_CFG_TYPE1_BUS_NO_MASK	(0xff << OPT2_CFG_TYPE1_BUS_NO_SHIFT)
1401*4882a593Smuzhiyun 
1402*4882a593Smuzhiyun #define PCIE_BRIDGE_BAR0_BASEMASK_REG	0x2828
1403*4882a593Smuzhiyun #define PCIE_BRIDGE_BAR1_BASEMASK_REG	0x2830
1404*4882a593Smuzhiyun #define BASEMASK_REMAP_EN		(1 << 0)
1405*4882a593Smuzhiyun #define BASEMASK_SWAP_EN		(1 << 1)
1406*4882a593Smuzhiyun #define BASEMASK_MASK_SHIFT		4
1407*4882a593Smuzhiyun #define BASEMASK_MASK_MASK		(0xfff << BASEMASK_MASK_SHIFT)
1408*4882a593Smuzhiyun #define BASEMASK_BASE_SHIFT		20
1409*4882a593Smuzhiyun #define BASEMASK_BASE_MASK		(0xfff << BASEMASK_BASE_SHIFT)
1410*4882a593Smuzhiyun 
1411*4882a593Smuzhiyun #define PCIE_BRIDGE_BAR0_REBASE_ADDR_REG 0x282c
1412*4882a593Smuzhiyun #define PCIE_BRIDGE_BAR1_REBASE_ADDR_REG 0x2834
1413*4882a593Smuzhiyun #define REBASE_ADDR_BASE_SHIFT		20
1414*4882a593Smuzhiyun #define REBASE_ADDR_BASE_MASK		(0xfff << REBASE_ADDR_BASE_SHIFT)
1415*4882a593Smuzhiyun 
1416*4882a593Smuzhiyun #define PCIE_BRIDGE_RC_INT_MASK_REG	0x2854
1417*4882a593Smuzhiyun #define PCIE_RC_INT_A			(1 << 0)
1418*4882a593Smuzhiyun #define PCIE_RC_INT_B			(1 << 1)
1419*4882a593Smuzhiyun #define PCIE_RC_INT_C			(1 << 2)
1420*4882a593Smuzhiyun #define PCIE_RC_INT_D			(1 << 3)
1421*4882a593Smuzhiyun 
1422*4882a593Smuzhiyun #define PCIE_DEVICE_OFFSET		0x8000
1423*4882a593Smuzhiyun 
1424*4882a593Smuzhiyun /*************************************************************************
1425*4882a593Smuzhiyun  * _REG relative to RSET_OTP
1426*4882a593Smuzhiyun  *************************************************************************/
1427*4882a593Smuzhiyun 
1428*4882a593Smuzhiyun #define OTP_USER_BITS_6328_REG(i)	(0x20 + (i) * 4)
1429*4882a593Smuzhiyun #define   OTP_6328_REG3_TP1_DISABLED	BIT(9)
1430*4882a593Smuzhiyun 
1431*4882a593Smuzhiyun #endif /* BCM63XX_REGS_H_ */
1432