xref: /arm-trusted-firmware/plat/brcm/board/stingray/driver/sr_usb.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2019 - 2021, Broadcom
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef SR_USB_H
8*91f16700Schasinglulu #define SR_USB_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #define CDRU_PM_RESET_N_R	BIT(CDRU_MISC_RESET_CONTROL__CDRU_PM_RESET_N_R)
11*91f16700Schasinglulu #define CDRU_USBSS_RESET_N	BIT(CDRU_MISC_RESET_CONTROL__CDRU_USBSS_RESET_N)
12*91f16700Schasinglulu #define CDRU_MISC_CLK_USBSS \
13*91f16700Schasinglulu 			BIT(CDRU_MISC_CLK_ENABLE_CONTROL__CDRU_USBSS_CLK_EN_R)
14*91f16700Schasinglulu 
15*91f16700Schasinglulu #define RESCAL_I_RSTB			BIT(26)
16*91f16700Schasinglulu #define RESCAL_I_PWRDNB			BIT(27)
17*91f16700Schasinglulu 
18*91f16700Schasinglulu #define DRDU3_U3PHY_CTRL		0x68500014
19*91f16700Schasinglulu #define	PHY_RESET			BIT(1)
20*91f16700Schasinglulu #define	POR_RESET			BIT(28)
21*91f16700Schasinglulu #define	MDIO_RESET			BIT(29)
22*91f16700Schasinglulu 
23*91f16700Schasinglulu #define DRDU3_PWR_CTRL			0x6850002c
24*91f16700Schasinglulu #define POWER_CTRL_OVRD			BIT(2)
25*91f16700Schasinglulu 
26*91f16700Schasinglulu #define USB3H_U3PHY_CTRL		0x68510014
27*91f16700Schasinglulu #define USB3H_U3SOFT_RST_N		BIT(30)
28*91f16700Schasinglulu 
29*91f16700Schasinglulu #define USB3H_PWR_CTRL			0x68510028
30*91f16700Schasinglulu 
31*91f16700Schasinglulu #define USB3_PHY_MDIO_BLOCK_BASE_REG	0x1f
32*91f16700Schasinglulu #define BDC_AXI_SOFT_RST_N_OFFSET	0
33*91f16700Schasinglulu #define XHC_AXI_SOFT_RST_N_OFFSET	1
34*91f16700Schasinglulu #define MDIO_BUS_ID			3
35*91f16700Schasinglulu #define USB3H_PHY_ID			5
36*91f16700Schasinglulu #define USB3DRD_PHY_ID			2
37*91f16700Schasinglulu 
38*91f16700Schasinglulu #define USB3_PHY_RXPMD_BLOCK_BASE	0x8020
39*91f16700Schasinglulu #define USB3_PHY_RXPMD_REG1		0x1
40*91f16700Schasinglulu #define USB3_PHY_RXPMD_REG2		0x2
41*91f16700Schasinglulu #define USB3_PHY_RXPMD_REG5		0x5
42*91f16700Schasinglulu #define USB3_PHY_RXPMD_REG7		0x7
43*91f16700Schasinglulu 
44*91f16700Schasinglulu #define USB3_PHY_TXPMD_BLOCK_BASE	0x8040
45*91f16700Schasinglulu #define USB3_PHY_TXPMD_REG1		0x1
46*91f16700Schasinglulu #define USB3_PHY_TXPMD_REG2		0x2
47*91f16700Schasinglulu 
48*91f16700Schasinglulu #define USB3_PHY_ANA_BLOCK_BASE		0x8090
49*91f16700Schasinglulu #define USB3_PHY_ANA_REG0		0x0
50*91f16700Schasinglulu #define USB3_PHY_ANA_REG1		0x1
51*91f16700Schasinglulu #define USB3_PHY_ANA_REG2		0x2
52*91f16700Schasinglulu #define USB3_PHY_ANA_REG5		0x5
53*91f16700Schasinglulu #define USB3_PHY_ANA_REG8		0x8
54*91f16700Schasinglulu #define USB3_PHY_ANA_REG11		0xb
55*91f16700Schasinglulu 
56*91f16700Schasinglulu #define USB3_PHY_AEQ_BLOCK_BASE		0x80e0
57*91f16700Schasinglulu #define USB3_PHY_AEQ_REG1		0x1
58*91f16700Schasinglulu #define USB3_PHY_AEQ_REG3		0x3
59*91f16700Schasinglulu 
60*91f16700Schasinglulu #ifdef USB_DMA_COHERENT
61*91f16700Schasinglulu #define DRDU3_U3XHC_SOFT_RST_N		BIT(31)
62*91f16700Schasinglulu #define DRDU3_U3BDC_SOFT_RST_N		BIT(30)
63*91f16700Schasinglulu 
64*91f16700Schasinglulu #define DRDU3_SOFT_RESET_CTRL		0x68500030
65*91f16700Schasinglulu #define DRDU3_XHC_AXI_SOFT_RST_N	BIT(1)
66*91f16700Schasinglulu #define DRDU3_BDC_AXI_SOFT_RST_N	BIT(0)
67*91f16700Schasinglulu 
68*91f16700Schasinglulu #define DRDU2_PHY_CTRL			0x6852000c
69*91f16700Schasinglulu #define DRDU2_U2SOFT_RST_N		BIT(29)
70*91f16700Schasinglulu 
71*91f16700Schasinglulu #define USB3H_SOFT_RESET_CTRL		0x6851002c
72*91f16700Schasinglulu #define USB3H_XHC_AXI_SOFT_RST_N	BIT(1)
73*91f16700Schasinglulu 
74*91f16700Schasinglulu #define DRDU2_SOFT_RESET_CTRL		0x68520020
75*91f16700Schasinglulu #define DRDU2_BDC_AXI_SOFT_RST_N	BIT(0)
76*91f16700Schasinglulu 
77*91f16700Schasinglulu #define DRD2U3H_XHC_REGS_AXIWRA		0x68511c08
78*91f16700Schasinglulu #define DRD2U3H_XHC_REGS_AXIRDA		0x68511c0c
79*91f16700Schasinglulu #define DRDU2D_BDC_REGS_AXIWRA		0x68521c08
80*91f16700Schasinglulu #define DRDU2D_BDC_REGS_AXIRDA		0x68521c0c
81*91f16700Schasinglulu #define DRDU3H_XHC_REGS_AXIWRA		0x68501c08
82*91f16700Schasinglulu #define DRDU3H_XHC_REGS_AXIRDA		0x68501c0c
83*91f16700Schasinglulu #define DRDU3D_BDC_REGS_AXIWRA		0x68502c08
84*91f16700Schasinglulu #define DRDU3D_BDC_REGS_AXIRDA		0x68502c0c
85*91f16700Schasinglulu /* cacheable write-back, allocate on both reads and writes */
86*91f16700Schasinglulu #define USBAXI_AWCACHE		0xf
87*91f16700Schasinglulu #define USBAXI_ARCACHE		0xf
88*91f16700Schasinglulu /* non-secure */
89*91f16700Schasinglulu #define USBAXI_AWPROT		0x8
90*91f16700Schasinglulu #define USBAXI_ARPROT		0x8
91*91f16700Schasinglulu #define USBAXIWR_SA_VAL		((USBAXI_AWCACHE << 4 | USBAXI_AWPROT) << 0)
92*91f16700Schasinglulu #define USBAXIWR_SA_MASK	((0xf << 4 | 0xf) << 0)
93*91f16700Schasinglulu #define USBAXIWR_UA_VAL		((USBAXI_AWCACHE << 4 | USBAXI_AWPROT) << 16)
94*91f16700Schasinglulu #define USBAXIWR_UA_MASK	((0xf << 4 | 0xf) << 0)
95*91f16700Schasinglulu #define USBAXIRD_SA_VAL		((USBAXI_ARCACHE << 4 | USBAXI_ARPROT) << 0)
96*91f16700Schasinglulu #define USBAXIRD_SA_MASK	((0xf << 4 | 0xf) << 0)
97*91f16700Schasinglulu #define USBAXIRD_UA_VAL		((USBAXI_ARCACHE << 4 | USBAXI_ARPROT) << 16)
98*91f16700Schasinglulu #define USBAXIRD_UA_MASK	((0xf << 4 | 0xf) << 0)
99*91f16700Schasinglulu #endif /* USB_DMA_COHERENT */
100*91f16700Schasinglulu 
101*91f16700Schasinglulu #define ICFG_DRDU3_SID_CTRL		0x6850001c
102*91f16700Schasinglulu #define ICFG_USB3H_SID_CTRL		0x6851001c
103*91f16700Schasinglulu #define ICFG_DRDU2_SID_CTRL		0x68520010
104*91f16700Schasinglulu #define ICFG_USB_SID_SHIFT		5
105*91f16700Schasinglulu #define ICFG_USB_SID_AWADDR_OFFSET	0x0
106*91f16700Schasinglulu #define ICFG_USB_SID_ARADDR_OFFSET	0x4
107*91f16700Schasinglulu 
108*91f16700Schasinglulu #define USBIC_GPV_BASE			0x68600000
109*91f16700Schasinglulu #define USBIC_GPV_SECURITY0		(USBIC_GPV_BASE + 0x8)
110*91f16700Schasinglulu #define USBIC_GPV_SECURITY0_FIELD	BIT(0)
111*91f16700Schasinglulu #define USBIC_GPV_SECURITY1		(USBIC_GPV_BASE + 0xc)
112*91f16700Schasinglulu #define USBIC_GPV_SECURITY1_FIELD	(BIT(0) | BIT(1))
113*91f16700Schasinglulu #define USBIC_GPV_SECURITY2		(USBIC_GPV_BASE + 0x10)
114*91f16700Schasinglulu #define USBIC_GPV_SECURITY2_FIELD	(BIT(0) | BIT(1))
115*91f16700Schasinglulu #define USBIC_GPV_SECURITY4		(USBIC_GPV_BASE + 0x18)
116*91f16700Schasinglulu #define USBIC_GPV_SECURITY4_FIELD	BIT(0)
117*91f16700Schasinglulu #define USBIC_GPV_SECURITY10		(USBIC_GPV_BASE + 0x30)
118*91f16700Schasinglulu #define USBIC_GPV_SECURITY10_FIELD	(0x7 << 0)
119*91f16700Schasinglulu 
120*91f16700Schasinglulu #define USBSS_TZPCDECPROT_BASE		0x68540800
121*91f16700Schasinglulu #define USBSS_TZPCDECPROT0set		(USBSS_TZPCDECPROT_BASE + 0x4)
122*91f16700Schasinglulu #define USBSS_TZPCDECPROT0clr		(USBSS_TZPCDECPROT_BASE + 0x8)
123*91f16700Schasinglulu #define DECPROT0_USBSS_DRD2U3H		BIT(3)
124*91f16700Schasinglulu #define DECPROT0_USBSS_DRDU2H		BIT(2)
125*91f16700Schasinglulu #define DECPROT0_USBSS_DRDU3D		BIT(1)
126*91f16700Schasinglulu #define DECPROT0_USBSS_DRDU2D		BIT(0)
127*91f16700Schasinglulu #define USBSS_TZPCDECPROT0 \
128*91f16700Schasinglulu 		(DECPROT0_USBSS_DRD2U3H | \
129*91f16700Schasinglulu 		DECPROT0_USBSS_DRDU2H |   \
130*91f16700Schasinglulu 		DECPROT0_USBSS_DRDU3D |   \
131*91f16700Schasinglulu 		DECPROT0_USBSS_DRDU2D)
132*91f16700Schasinglulu 
133*91f16700Schasinglulu int32_t usb_device_init(unsigned int);
134*91f16700Schasinglulu 
135*91f16700Schasinglulu #endif /* SR_USB_H */
136