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