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