162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef BCM63XX_REGS_H_ 362306a36Sopenharmony_ci#define BCM63XX_REGS_H_ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci/************************************************************************* 662306a36Sopenharmony_ci * _REG relative to RSET_PERF 762306a36Sopenharmony_ci *************************************************************************/ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/* Chip Identifier / Revision register */ 1062306a36Sopenharmony_ci#define PERF_REV_REG 0x0 1162306a36Sopenharmony_ci#define REV_CHIPID_SHIFT 16 1262306a36Sopenharmony_ci#define REV_CHIPID_MASK (0xffff << REV_CHIPID_SHIFT) 1362306a36Sopenharmony_ci#define REV_REVID_SHIFT 0 1462306a36Sopenharmony_ci#define REV_REVID_MASK (0xff << REV_REVID_SHIFT) 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/* Clock Control register */ 1762306a36Sopenharmony_ci#define PERF_CKCTL_REG 0x4 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define CKCTL_3368_MAC_EN (1 << 3) 2062306a36Sopenharmony_ci#define CKCTL_3368_TC_EN (1 << 5) 2162306a36Sopenharmony_ci#define CKCTL_3368_US_TOP_EN (1 << 6) 2262306a36Sopenharmony_ci#define CKCTL_3368_DS_TOP_EN (1 << 7) 2362306a36Sopenharmony_ci#define CKCTL_3368_APM_EN (1 << 8) 2462306a36Sopenharmony_ci#define CKCTL_3368_SPI_EN (1 << 9) 2562306a36Sopenharmony_ci#define CKCTL_3368_USBS_EN (1 << 10) 2662306a36Sopenharmony_ci#define CKCTL_3368_BMU_EN (1 << 11) 2762306a36Sopenharmony_ci#define CKCTL_3368_PCM_EN (1 << 12) 2862306a36Sopenharmony_ci#define CKCTL_3368_NTP_EN (1 << 13) 2962306a36Sopenharmony_ci#define CKCTL_3368_ACP_B_EN (1 << 14) 3062306a36Sopenharmony_ci#define CKCTL_3368_ACP_A_EN (1 << 15) 3162306a36Sopenharmony_ci#define CKCTL_3368_EMUSB_EN (1 << 17) 3262306a36Sopenharmony_ci#define CKCTL_3368_ENET0_EN (1 << 18) 3362306a36Sopenharmony_ci#define CKCTL_3368_ENET1_EN (1 << 19) 3462306a36Sopenharmony_ci#define CKCTL_3368_USBU_EN (1 << 20) 3562306a36Sopenharmony_ci#define CKCTL_3368_EPHY_EN (1 << 21) 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define CKCTL_3368_ALL_SAFE_EN (CKCTL_3368_MAC_EN | \ 3862306a36Sopenharmony_ci CKCTL_3368_TC_EN | \ 3962306a36Sopenharmony_ci CKCTL_3368_US_TOP_EN | \ 4062306a36Sopenharmony_ci CKCTL_3368_DS_TOP_EN | \ 4162306a36Sopenharmony_ci CKCTL_3368_APM_EN | \ 4262306a36Sopenharmony_ci CKCTL_3368_SPI_EN | \ 4362306a36Sopenharmony_ci CKCTL_3368_USBS_EN | \ 4462306a36Sopenharmony_ci CKCTL_3368_BMU_EN | \ 4562306a36Sopenharmony_ci CKCTL_3368_PCM_EN | \ 4662306a36Sopenharmony_ci CKCTL_3368_NTP_EN | \ 4762306a36Sopenharmony_ci CKCTL_3368_ACP_B_EN | \ 4862306a36Sopenharmony_ci CKCTL_3368_ACP_A_EN | \ 4962306a36Sopenharmony_ci CKCTL_3368_EMUSB_EN | \ 5062306a36Sopenharmony_ci CKCTL_3368_USBU_EN) 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci#define CKCTL_6328_PHYMIPS_EN (1 << 0) 5362306a36Sopenharmony_ci#define CKCTL_6328_ADSL_QPROC_EN (1 << 1) 5462306a36Sopenharmony_ci#define CKCTL_6328_ADSL_AFE_EN (1 << 2) 5562306a36Sopenharmony_ci#define CKCTL_6328_ADSL_EN (1 << 3) 5662306a36Sopenharmony_ci#define CKCTL_6328_MIPS_EN (1 << 4) 5762306a36Sopenharmony_ci#define CKCTL_6328_SAR_EN (1 << 5) 5862306a36Sopenharmony_ci#define CKCTL_6328_PCM_EN (1 << 6) 5962306a36Sopenharmony_ci#define CKCTL_6328_USBD_EN (1 << 7) 6062306a36Sopenharmony_ci#define CKCTL_6328_USBH_EN (1 << 8) 6162306a36Sopenharmony_ci#define CKCTL_6328_HSSPI_EN (1 << 9) 6262306a36Sopenharmony_ci#define CKCTL_6328_PCIE_EN (1 << 10) 6362306a36Sopenharmony_ci#define CKCTL_6328_ROBOSW_EN (1 << 11) 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define CKCTL_6328_ALL_SAFE_EN (CKCTL_6328_PHYMIPS_EN | \ 6662306a36Sopenharmony_ci CKCTL_6328_ADSL_QPROC_EN | \ 6762306a36Sopenharmony_ci CKCTL_6328_ADSL_AFE_EN | \ 6862306a36Sopenharmony_ci CKCTL_6328_ADSL_EN | \ 6962306a36Sopenharmony_ci CKCTL_6328_SAR_EN | \ 7062306a36Sopenharmony_ci CKCTL_6328_PCM_EN | \ 7162306a36Sopenharmony_ci CKCTL_6328_USBD_EN | \ 7262306a36Sopenharmony_ci CKCTL_6328_USBH_EN | \ 7362306a36Sopenharmony_ci CKCTL_6328_ROBOSW_EN | \ 7462306a36Sopenharmony_ci CKCTL_6328_PCIE_EN) 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci#define CKCTL_6338_ADSLPHY_EN (1 << 0) 7762306a36Sopenharmony_ci#define CKCTL_6338_MPI_EN (1 << 1) 7862306a36Sopenharmony_ci#define CKCTL_6338_DRAM_EN (1 << 2) 7962306a36Sopenharmony_ci#define CKCTL_6338_ENET_EN (1 << 4) 8062306a36Sopenharmony_ci#define CKCTL_6338_USBS_EN (1 << 4) 8162306a36Sopenharmony_ci#define CKCTL_6338_SAR_EN (1 << 5) 8262306a36Sopenharmony_ci#define CKCTL_6338_SPI_EN (1 << 9) 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci#define CKCTL_6338_ALL_SAFE_EN (CKCTL_6338_ADSLPHY_EN | \ 8562306a36Sopenharmony_ci CKCTL_6338_MPI_EN | \ 8662306a36Sopenharmony_ci CKCTL_6338_ENET_EN | \ 8762306a36Sopenharmony_ci CKCTL_6338_SAR_EN | \ 8862306a36Sopenharmony_ci CKCTL_6338_SPI_EN) 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci/* BCM6345 clock bits are shifted by 16 on the left, because of the test 9162306a36Sopenharmony_ci * control register which is 16-bits wide. That way we do not have any 9262306a36Sopenharmony_ci * specific BCM6345 code for handling clocks, and writing 0 to the test 9362306a36Sopenharmony_ci * control register is fine. 9462306a36Sopenharmony_ci */ 9562306a36Sopenharmony_ci#define CKCTL_6345_CPU_EN (1 << 16) 9662306a36Sopenharmony_ci#define CKCTL_6345_BUS_EN (1 << 17) 9762306a36Sopenharmony_ci#define CKCTL_6345_EBI_EN (1 << 18) 9862306a36Sopenharmony_ci#define CKCTL_6345_UART_EN (1 << 19) 9962306a36Sopenharmony_ci#define CKCTL_6345_ADSLPHY_EN (1 << 20) 10062306a36Sopenharmony_ci#define CKCTL_6345_ENET_EN (1 << 23) 10162306a36Sopenharmony_ci#define CKCTL_6345_USBH_EN (1 << 24) 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci#define CKCTL_6345_ALL_SAFE_EN (CKCTL_6345_ENET_EN | \ 10462306a36Sopenharmony_ci CKCTL_6345_USBH_EN | \ 10562306a36Sopenharmony_ci CKCTL_6345_ADSLPHY_EN) 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci#define CKCTL_6348_ADSLPHY_EN (1 << 0) 10862306a36Sopenharmony_ci#define CKCTL_6348_MPI_EN (1 << 1) 10962306a36Sopenharmony_ci#define CKCTL_6348_SDRAM_EN (1 << 2) 11062306a36Sopenharmony_ci#define CKCTL_6348_M2M_EN (1 << 3) 11162306a36Sopenharmony_ci#define CKCTL_6348_ENET_EN (1 << 4) 11262306a36Sopenharmony_ci#define CKCTL_6348_SAR_EN (1 << 5) 11362306a36Sopenharmony_ci#define CKCTL_6348_USBS_EN (1 << 6) 11462306a36Sopenharmony_ci#define CKCTL_6348_USBH_EN (1 << 8) 11562306a36Sopenharmony_ci#define CKCTL_6348_SPI_EN (1 << 9) 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci#define CKCTL_6348_ALL_SAFE_EN (CKCTL_6348_ADSLPHY_EN | \ 11862306a36Sopenharmony_ci CKCTL_6348_M2M_EN | \ 11962306a36Sopenharmony_ci CKCTL_6348_ENET_EN | \ 12062306a36Sopenharmony_ci CKCTL_6348_SAR_EN | \ 12162306a36Sopenharmony_ci CKCTL_6348_USBS_EN | \ 12262306a36Sopenharmony_ci CKCTL_6348_USBH_EN | \ 12362306a36Sopenharmony_ci CKCTL_6348_SPI_EN) 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci#define CKCTL_6358_ENET_EN (1 << 4) 12662306a36Sopenharmony_ci#define CKCTL_6358_ADSLPHY_EN (1 << 5) 12762306a36Sopenharmony_ci#define CKCTL_6358_PCM_EN (1 << 8) 12862306a36Sopenharmony_ci#define CKCTL_6358_SPI_EN (1 << 9) 12962306a36Sopenharmony_ci#define CKCTL_6358_USBS_EN (1 << 10) 13062306a36Sopenharmony_ci#define CKCTL_6358_SAR_EN (1 << 11) 13162306a36Sopenharmony_ci#define CKCTL_6358_EMUSB_EN (1 << 17) 13262306a36Sopenharmony_ci#define CKCTL_6358_ENET0_EN (1 << 18) 13362306a36Sopenharmony_ci#define CKCTL_6358_ENET1_EN (1 << 19) 13462306a36Sopenharmony_ci#define CKCTL_6358_USBSU_EN (1 << 20) 13562306a36Sopenharmony_ci#define CKCTL_6358_EPHY_EN (1 << 21) 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci#define CKCTL_6358_ALL_SAFE_EN (CKCTL_6358_ENET_EN | \ 13862306a36Sopenharmony_ci CKCTL_6358_ADSLPHY_EN | \ 13962306a36Sopenharmony_ci CKCTL_6358_PCM_EN | \ 14062306a36Sopenharmony_ci CKCTL_6358_SPI_EN | \ 14162306a36Sopenharmony_ci CKCTL_6358_USBS_EN | \ 14262306a36Sopenharmony_ci CKCTL_6358_SAR_EN | \ 14362306a36Sopenharmony_ci CKCTL_6358_EMUSB_EN | \ 14462306a36Sopenharmony_ci CKCTL_6358_ENET0_EN | \ 14562306a36Sopenharmony_ci CKCTL_6358_ENET1_EN | \ 14662306a36Sopenharmony_ci CKCTL_6358_USBSU_EN | \ 14762306a36Sopenharmony_ci CKCTL_6358_EPHY_EN) 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci#define CKCTL_6362_ADSL_QPROC_EN (1 << 1) 15062306a36Sopenharmony_ci#define CKCTL_6362_ADSL_AFE_EN (1 << 2) 15162306a36Sopenharmony_ci#define CKCTL_6362_ADSL_EN (1 << 3) 15262306a36Sopenharmony_ci#define CKCTL_6362_MIPS_EN (1 << 4) 15362306a36Sopenharmony_ci#define CKCTL_6362_WLAN_OCP_EN (1 << 5) 15462306a36Sopenharmony_ci#define CKCTL_6362_SWPKT_USB_EN (1 << 7) 15562306a36Sopenharmony_ci#define CKCTL_6362_SWPKT_SAR_EN (1 << 8) 15662306a36Sopenharmony_ci#define CKCTL_6362_SAR_EN (1 << 9) 15762306a36Sopenharmony_ci#define CKCTL_6362_ROBOSW_EN (1 << 10) 15862306a36Sopenharmony_ci#define CKCTL_6362_PCM_EN (1 << 11) 15962306a36Sopenharmony_ci#define CKCTL_6362_USBD_EN (1 << 12) 16062306a36Sopenharmony_ci#define CKCTL_6362_USBH_EN (1 << 13) 16162306a36Sopenharmony_ci#define CKCTL_6362_IPSEC_EN (1 << 14) 16262306a36Sopenharmony_ci#define CKCTL_6362_SPI_EN (1 << 15) 16362306a36Sopenharmony_ci#define CKCTL_6362_HSSPI_EN (1 << 16) 16462306a36Sopenharmony_ci#define CKCTL_6362_PCIE_EN (1 << 17) 16562306a36Sopenharmony_ci#define CKCTL_6362_FAP_EN (1 << 18) 16662306a36Sopenharmony_ci#define CKCTL_6362_PHYMIPS_EN (1 << 19) 16762306a36Sopenharmony_ci#define CKCTL_6362_NAND_EN (1 << 20) 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci#define CKCTL_6362_ALL_SAFE_EN (CKCTL_6362_PHYMIPS_EN | \ 17062306a36Sopenharmony_ci CKCTL_6362_ADSL_QPROC_EN | \ 17162306a36Sopenharmony_ci CKCTL_6362_ADSL_AFE_EN | \ 17262306a36Sopenharmony_ci CKCTL_6362_ADSL_EN | \ 17362306a36Sopenharmony_ci CKCTL_6362_SAR_EN | \ 17462306a36Sopenharmony_ci CKCTL_6362_PCM_EN | \ 17562306a36Sopenharmony_ci CKCTL_6362_IPSEC_EN | \ 17662306a36Sopenharmony_ci CKCTL_6362_USBD_EN | \ 17762306a36Sopenharmony_ci CKCTL_6362_USBH_EN | \ 17862306a36Sopenharmony_ci CKCTL_6362_ROBOSW_EN | \ 17962306a36Sopenharmony_ci CKCTL_6362_PCIE_EN) 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci#define CKCTL_6368_VDSL_QPROC_EN (1 << 2) 18362306a36Sopenharmony_ci#define CKCTL_6368_VDSL_AFE_EN (1 << 3) 18462306a36Sopenharmony_ci#define CKCTL_6368_VDSL_BONDING_EN (1 << 4) 18562306a36Sopenharmony_ci#define CKCTL_6368_VDSL_EN (1 << 5) 18662306a36Sopenharmony_ci#define CKCTL_6368_PHYMIPS_EN (1 << 6) 18762306a36Sopenharmony_ci#define CKCTL_6368_SWPKT_USB_EN (1 << 7) 18862306a36Sopenharmony_ci#define CKCTL_6368_SWPKT_SAR_EN (1 << 8) 18962306a36Sopenharmony_ci#define CKCTL_6368_SPI_EN (1 << 9) 19062306a36Sopenharmony_ci#define CKCTL_6368_USBD_EN (1 << 10) 19162306a36Sopenharmony_ci#define CKCTL_6368_SAR_EN (1 << 11) 19262306a36Sopenharmony_ci#define CKCTL_6368_ROBOSW_EN (1 << 12) 19362306a36Sopenharmony_ci#define CKCTL_6368_UTOPIA_EN (1 << 13) 19462306a36Sopenharmony_ci#define CKCTL_6368_PCM_EN (1 << 14) 19562306a36Sopenharmony_ci#define CKCTL_6368_USBH_EN (1 << 15) 19662306a36Sopenharmony_ci#define CKCTL_6368_DISABLE_GLESS_EN (1 << 16) 19762306a36Sopenharmony_ci#define CKCTL_6368_NAND_EN (1 << 17) 19862306a36Sopenharmony_ci#define CKCTL_6368_IPSEC_EN (1 << 18) 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci#define CKCTL_6368_ALL_SAFE_EN (CKCTL_6368_SWPKT_USB_EN | \ 20162306a36Sopenharmony_ci CKCTL_6368_SWPKT_SAR_EN | \ 20262306a36Sopenharmony_ci CKCTL_6368_SPI_EN | \ 20362306a36Sopenharmony_ci CKCTL_6368_USBD_EN | \ 20462306a36Sopenharmony_ci CKCTL_6368_SAR_EN | \ 20562306a36Sopenharmony_ci CKCTL_6368_ROBOSW_EN | \ 20662306a36Sopenharmony_ci CKCTL_6368_UTOPIA_EN | \ 20762306a36Sopenharmony_ci CKCTL_6368_PCM_EN | \ 20862306a36Sopenharmony_ci CKCTL_6368_USBH_EN | \ 20962306a36Sopenharmony_ci CKCTL_6368_DISABLE_GLESS_EN | \ 21062306a36Sopenharmony_ci CKCTL_6368_NAND_EN | \ 21162306a36Sopenharmony_ci CKCTL_6368_IPSEC_EN) 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci/* System PLL Control register */ 21462306a36Sopenharmony_ci#define PERF_SYS_PLL_CTL_REG 0x8 21562306a36Sopenharmony_ci#define SYS_PLL_SOFT_RESET 0x1 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci/* Interrupt Mask register */ 21862306a36Sopenharmony_ci#define PERF_IRQMASK_3368_REG 0xc 21962306a36Sopenharmony_ci#define PERF_IRQMASK_6328_REG(x) (0x20 + (x) * 0x10) 22062306a36Sopenharmony_ci#define PERF_IRQMASK_6338_REG 0xc 22162306a36Sopenharmony_ci#define PERF_IRQMASK_6345_REG 0xc 22262306a36Sopenharmony_ci#define PERF_IRQMASK_6348_REG 0xc 22362306a36Sopenharmony_ci#define PERF_IRQMASK_6358_REG(x) (0xc + (x) * 0x2c) 22462306a36Sopenharmony_ci#define PERF_IRQMASK_6362_REG(x) (0x20 + (x) * 0x10) 22562306a36Sopenharmony_ci#define PERF_IRQMASK_6368_REG(x) (0x20 + (x) * 0x10) 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci/* Interrupt Status register */ 22862306a36Sopenharmony_ci#define PERF_IRQSTAT_3368_REG 0x10 22962306a36Sopenharmony_ci#define PERF_IRQSTAT_6328_REG(x) (0x28 + (x) * 0x10) 23062306a36Sopenharmony_ci#define PERF_IRQSTAT_6338_REG 0x10 23162306a36Sopenharmony_ci#define PERF_IRQSTAT_6345_REG 0x10 23262306a36Sopenharmony_ci#define PERF_IRQSTAT_6348_REG 0x10 23362306a36Sopenharmony_ci#define PERF_IRQSTAT_6358_REG(x) (0x10 + (x) * 0x2c) 23462306a36Sopenharmony_ci#define PERF_IRQSTAT_6362_REG(x) (0x28 + (x) * 0x10) 23562306a36Sopenharmony_ci#define PERF_IRQSTAT_6368_REG(x) (0x28 + (x) * 0x10) 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci/* External Interrupt Configuration register */ 23862306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_3368 0x14 23962306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6328 0x18 24062306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6338 0x14 24162306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6345 0x14 24262306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6348 0x14 24362306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6358 0x14 24462306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6362 0x18 24562306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG_6368 0x18 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci#define PERF_EXTIRQ_CFG_REG2_6368 0x1c 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci/* for 6348 only */ 25062306a36Sopenharmony_ci#define EXTIRQ_CFG_SENSE_6348(x) (1 << (x)) 25162306a36Sopenharmony_ci#define EXTIRQ_CFG_STAT_6348(x) (1 << (x + 5)) 25262306a36Sopenharmony_ci#define EXTIRQ_CFG_CLEAR_6348(x) (1 << (x + 10)) 25362306a36Sopenharmony_ci#define EXTIRQ_CFG_MASK_6348(x) (1 << (x + 15)) 25462306a36Sopenharmony_ci#define EXTIRQ_CFG_BOTHEDGE_6348(x) (1 << (x + 20)) 25562306a36Sopenharmony_ci#define EXTIRQ_CFG_LEVELSENSE_6348(x) (1 << (x + 25)) 25662306a36Sopenharmony_ci#define EXTIRQ_CFG_CLEAR_ALL_6348 (0xf << 10) 25762306a36Sopenharmony_ci#define EXTIRQ_CFG_MASK_ALL_6348 (0xf << 15) 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci/* for all others */ 26062306a36Sopenharmony_ci#define EXTIRQ_CFG_SENSE(x) (1 << (x)) 26162306a36Sopenharmony_ci#define EXTIRQ_CFG_STAT(x) (1 << (x + 4)) 26262306a36Sopenharmony_ci#define EXTIRQ_CFG_CLEAR(x) (1 << (x + 8)) 26362306a36Sopenharmony_ci#define EXTIRQ_CFG_MASK(x) (1 << (x + 12)) 26462306a36Sopenharmony_ci#define EXTIRQ_CFG_BOTHEDGE(x) (1 << (x + 16)) 26562306a36Sopenharmony_ci#define EXTIRQ_CFG_LEVELSENSE(x) (1 << (x + 20)) 26662306a36Sopenharmony_ci#define EXTIRQ_CFG_CLEAR_ALL (0xf << 8) 26762306a36Sopenharmony_ci#define EXTIRQ_CFG_MASK_ALL (0xf << 12) 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci/* Soft Reset register */ 27062306a36Sopenharmony_ci#define PERF_SOFTRESET_REG 0x28 27162306a36Sopenharmony_ci#define PERF_SOFTRESET_6328_REG 0x10 27262306a36Sopenharmony_ci#define PERF_SOFTRESET_6358_REG 0x34 27362306a36Sopenharmony_ci#define PERF_SOFTRESET_6362_REG 0x10 27462306a36Sopenharmony_ci#define PERF_SOFTRESET_6368_REG 0x10 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci#define SOFTRESET_3368_SPI_MASK (1 << 0) 27762306a36Sopenharmony_ci#define SOFTRESET_3368_ENET_MASK (1 << 2) 27862306a36Sopenharmony_ci#define SOFTRESET_3368_MPI_MASK (1 << 3) 27962306a36Sopenharmony_ci#define SOFTRESET_3368_EPHY_MASK (1 << 6) 28062306a36Sopenharmony_ci#define SOFTRESET_3368_USBS_MASK (1 << 11) 28162306a36Sopenharmony_ci#define SOFTRESET_3368_PCM_MASK (1 << 13) 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci#define SOFTRESET_6328_SPI_MASK (1 << 0) 28462306a36Sopenharmony_ci#define SOFTRESET_6328_EPHY_MASK (1 << 1) 28562306a36Sopenharmony_ci#define SOFTRESET_6328_SAR_MASK (1 << 2) 28662306a36Sopenharmony_ci#define SOFTRESET_6328_ENETSW_MASK (1 << 3) 28762306a36Sopenharmony_ci#define SOFTRESET_6328_USBS_MASK (1 << 4) 28862306a36Sopenharmony_ci#define SOFTRESET_6328_USBH_MASK (1 << 5) 28962306a36Sopenharmony_ci#define SOFTRESET_6328_PCM_MASK (1 << 6) 29062306a36Sopenharmony_ci#define SOFTRESET_6328_PCIE_CORE_MASK (1 << 7) 29162306a36Sopenharmony_ci#define SOFTRESET_6328_PCIE_MASK (1 << 8) 29262306a36Sopenharmony_ci#define SOFTRESET_6328_PCIE_EXT_MASK (1 << 9) 29362306a36Sopenharmony_ci#define SOFTRESET_6328_PCIE_HARD_MASK (1 << 10) 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci#define SOFTRESET_6338_SPI_MASK (1 << 0) 29662306a36Sopenharmony_ci#define SOFTRESET_6338_ENET_MASK (1 << 2) 29762306a36Sopenharmony_ci#define SOFTRESET_6338_USBH_MASK (1 << 3) 29862306a36Sopenharmony_ci#define SOFTRESET_6338_USBS_MASK (1 << 4) 29962306a36Sopenharmony_ci#define SOFTRESET_6338_ADSL_MASK (1 << 5) 30062306a36Sopenharmony_ci#define SOFTRESET_6338_DMAMEM_MASK (1 << 6) 30162306a36Sopenharmony_ci#define SOFTRESET_6338_SAR_MASK (1 << 7) 30262306a36Sopenharmony_ci#define SOFTRESET_6338_ACLC_MASK (1 << 8) 30362306a36Sopenharmony_ci#define SOFTRESET_6338_ADSLMIPSPLL_MASK (1 << 10) 30462306a36Sopenharmony_ci#define SOFTRESET_6338_ALL (SOFTRESET_6338_SPI_MASK | \ 30562306a36Sopenharmony_ci SOFTRESET_6338_ENET_MASK | \ 30662306a36Sopenharmony_ci SOFTRESET_6338_USBH_MASK | \ 30762306a36Sopenharmony_ci SOFTRESET_6338_USBS_MASK | \ 30862306a36Sopenharmony_ci SOFTRESET_6338_ADSL_MASK | \ 30962306a36Sopenharmony_ci SOFTRESET_6338_DMAMEM_MASK | \ 31062306a36Sopenharmony_ci SOFTRESET_6338_SAR_MASK | \ 31162306a36Sopenharmony_ci SOFTRESET_6338_ACLC_MASK | \ 31262306a36Sopenharmony_ci SOFTRESET_6338_ADSLMIPSPLL_MASK) 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci#define SOFTRESET_6348_SPI_MASK (1 << 0) 31562306a36Sopenharmony_ci#define SOFTRESET_6348_ENET_MASK (1 << 2) 31662306a36Sopenharmony_ci#define SOFTRESET_6348_USBH_MASK (1 << 3) 31762306a36Sopenharmony_ci#define SOFTRESET_6348_USBS_MASK (1 << 4) 31862306a36Sopenharmony_ci#define SOFTRESET_6348_ADSL_MASK (1 << 5) 31962306a36Sopenharmony_ci#define SOFTRESET_6348_DMAMEM_MASK (1 << 6) 32062306a36Sopenharmony_ci#define SOFTRESET_6348_SAR_MASK (1 << 7) 32162306a36Sopenharmony_ci#define SOFTRESET_6348_ACLC_MASK (1 << 8) 32262306a36Sopenharmony_ci#define SOFTRESET_6348_ADSLMIPSPLL_MASK (1 << 10) 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci#define SOFTRESET_6348_ALL (SOFTRESET_6348_SPI_MASK | \ 32562306a36Sopenharmony_ci SOFTRESET_6348_ENET_MASK | \ 32662306a36Sopenharmony_ci SOFTRESET_6348_USBH_MASK | \ 32762306a36Sopenharmony_ci SOFTRESET_6348_USBS_MASK | \ 32862306a36Sopenharmony_ci SOFTRESET_6348_ADSL_MASK | \ 32962306a36Sopenharmony_ci SOFTRESET_6348_DMAMEM_MASK | \ 33062306a36Sopenharmony_ci SOFTRESET_6348_SAR_MASK | \ 33162306a36Sopenharmony_ci SOFTRESET_6348_ACLC_MASK | \ 33262306a36Sopenharmony_ci SOFTRESET_6348_ADSLMIPSPLL_MASK) 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci#define SOFTRESET_6358_SPI_MASK (1 << 0) 33562306a36Sopenharmony_ci#define SOFTRESET_6358_ENET_MASK (1 << 2) 33662306a36Sopenharmony_ci#define SOFTRESET_6358_MPI_MASK (1 << 3) 33762306a36Sopenharmony_ci#define SOFTRESET_6358_EPHY_MASK (1 << 6) 33862306a36Sopenharmony_ci#define SOFTRESET_6358_SAR_MASK (1 << 7) 33962306a36Sopenharmony_ci#define SOFTRESET_6358_USBH_MASK (1 << 12) 34062306a36Sopenharmony_ci#define SOFTRESET_6358_PCM_MASK (1 << 13) 34162306a36Sopenharmony_ci#define SOFTRESET_6358_ADSL_MASK (1 << 14) 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ci#define SOFTRESET_6362_SPI_MASK (1 << 0) 34462306a36Sopenharmony_ci#define SOFTRESET_6362_IPSEC_MASK (1 << 1) 34562306a36Sopenharmony_ci#define SOFTRESET_6362_EPHY_MASK (1 << 2) 34662306a36Sopenharmony_ci#define SOFTRESET_6362_SAR_MASK (1 << 3) 34762306a36Sopenharmony_ci#define SOFTRESET_6362_ENETSW_MASK (1 << 4) 34862306a36Sopenharmony_ci#define SOFTRESET_6362_USBS_MASK (1 << 5) 34962306a36Sopenharmony_ci#define SOFTRESET_6362_USBH_MASK (1 << 6) 35062306a36Sopenharmony_ci#define SOFTRESET_6362_PCM_MASK (1 << 7) 35162306a36Sopenharmony_ci#define SOFTRESET_6362_PCIE_CORE_MASK (1 << 8) 35262306a36Sopenharmony_ci#define SOFTRESET_6362_PCIE_MASK (1 << 9) 35362306a36Sopenharmony_ci#define SOFTRESET_6362_PCIE_EXT_MASK (1 << 10) 35462306a36Sopenharmony_ci#define SOFTRESET_6362_WLAN_SHIM_MASK (1 << 11) 35562306a36Sopenharmony_ci#define SOFTRESET_6362_DDR_PHY_MASK (1 << 12) 35662306a36Sopenharmony_ci#define SOFTRESET_6362_FAP_MASK (1 << 13) 35762306a36Sopenharmony_ci#define SOFTRESET_6362_WLAN_UBUS_MASK (1 << 14) 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci#define SOFTRESET_6368_SPI_MASK (1 << 0) 36062306a36Sopenharmony_ci#define SOFTRESET_6368_MPI_MASK (1 << 3) 36162306a36Sopenharmony_ci#define SOFTRESET_6368_EPHY_MASK (1 << 6) 36262306a36Sopenharmony_ci#define SOFTRESET_6368_SAR_MASK (1 << 7) 36362306a36Sopenharmony_ci#define SOFTRESET_6368_ENETSW_MASK (1 << 10) 36462306a36Sopenharmony_ci#define SOFTRESET_6368_USBS_MASK (1 << 11) 36562306a36Sopenharmony_ci#define SOFTRESET_6368_USBH_MASK (1 << 12) 36662306a36Sopenharmony_ci#define SOFTRESET_6368_PCM_MASK (1 << 13) 36762306a36Sopenharmony_ci 36862306a36Sopenharmony_ci/* MIPS PLL control register */ 36962306a36Sopenharmony_ci#define PERF_MIPSPLLCTL_REG 0x34 37062306a36Sopenharmony_ci#define MIPSPLLCTL_N1_SHIFT 20 37162306a36Sopenharmony_ci#define MIPSPLLCTL_N1_MASK (0x7 << MIPSPLLCTL_N1_SHIFT) 37262306a36Sopenharmony_ci#define MIPSPLLCTL_N2_SHIFT 15 37362306a36Sopenharmony_ci#define MIPSPLLCTL_N2_MASK (0x1f << MIPSPLLCTL_N2_SHIFT) 37462306a36Sopenharmony_ci#define MIPSPLLCTL_M1REF_SHIFT 12 37562306a36Sopenharmony_ci#define MIPSPLLCTL_M1REF_MASK (0x7 << MIPSPLLCTL_M1REF_SHIFT) 37662306a36Sopenharmony_ci#define MIPSPLLCTL_M2REF_SHIFT 9 37762306a36Sopenharmony_ci#define MIPSPLLCTL_M2REF_MASK (0x7 << MIPSPLLCTL_M2REF_SHIFT) 37862306a36Sopenharmony_ci#define MIPSPLLCTL_M1CPU_SHIFT 6 37962306a36Sopenharmony_ci#define MIPSPLLCTL_M1CPU_MASK (0x7 << MIPSPLLCTL_M1CPU_SHIFT) 38062306a36Sopenharmony_ci#define MIPSPLLCTL_M1BUS_SHIFT 3 38162306a36Sopenharmony_ci#define MIPSPLLCTL_M1BUS_MASK (0x7 << MIPSPLLCTL_M1BUS_SHIFT) 38262306a36Sopenharmony_ci#define MIPSPLLCTL_M2BUS_SHIFT 0 38362306a36Sopenharmony_ci#define MIPSPLLCTL_M2BUS_MASK (0x7 << MIPSPLLCTL_M2BUS_SHIFT) 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci/* ADSL PHY PLL Control register */ 38662306a36Sopenharmony_ci#define PERF_ADSLPLLCTL_REG 0x38 38762306a36Sopenharmony_ci#define ADSLPLLCTL_N1_SHIFT 20 38862306a36Sopenharmony_ci#define ADSLPLLCTL_N1_MASK (0x7 << ADSLPLLCTL_N1_SHIFT) 38962306a36Sopenharmony_ci#define ADSLPLLCTL_N2_SHIFT 15 39062306a36Sopenharmony_ci#define ADSLPLLCTL_N2_MASK (0x1f << ADSLPLLCTL_N2_SHIFT) 39162306a36Sopenharmony_ci#define ADSLPLLCTL_M1REF_SHIFT 12 39262306a36Sopenharmony_ci#define ADSLPLLCTL_M1REF_MASK (0x7 << ADSLPLLCTL_M1REF_SHIFT) 39362306a36Sopenharmony_ci#define ADSLPLLCTL_M2REF_SHIFT 9 39462306a36Sopenharmony_ci#define ADSLPLLCTL_M2REF_MASK (0x7 << ADSLPLLCTL_M2REF_SHIFT) 39562306a36Sopenharmony_ci#define ADSLPLLCTL_M1CPU_SHIFT 6 39662306a36Sopenharmony_ci#define ADSLPLLCTL_M1CPU_MASK (0x7 << ADSLPLLCTL_M1CPU_SHIFT) 39762306a36Sopenharmony_ci#define ADSLPLLCTL_M1BUS_SHIFT 3 39862306a36Sopenharmony_ci#define ADSLPLLCTL_M1BUS_MASK (0x7 << ADSLPLLCTL_M1BUS_SHIFT) 39962306a36Sopenharmony_ci#define ADSLPLLCTL_M2BUS_SHIFT 0 40062306a36Sopenharmony_ci#define ADSLPLLCTL_M2BUS_MASK (0x7 << ADSLPLLCTL_M2BUS_SHIFT) 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ci#define ADSLPLLCTL_VAL(n1, n2, m1ref, m2ref, m1cpu, m1bus, m2bus) \ 40362306a36Sopenharmony_ci (((n1) << ADSLPLLCTL_N1_SHIFT) | \ 40462306a36Sopenharmony_ci ((n2) << ADSLPLLCTL_N2_SHIFT) | \ 40562306a36Sopenharmony_ci ((m1ref) << ADSLPLLCTL_M1REF_SHIFT) | \ 40662306a36Sopenharmony_ci ((m2ref) << ADSLPLLCTL_M2REF_SHIFT) | \ 40762306a36Sopenharmony_ci ((m1cpu) << ADSLPLLCTL_M1CPU_SHIFT) | \ 40862306a36Sopenharmony_ci ((m1bus) << ADSLPLLCTL_M1BUS_SHIFT) | \ 40962306a36Sopenharmony_ci ((m2bus) << ADSLPLLCTL_M2BUS_SHIFT)) 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_ci/************************************************************************* 41362306a36Sopenharmony_ci * _REG relative to RSET_TIMER 41462306a36Sopenharmony_ci *************************************************************************/ 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci#define BCM63XX_TIMER_COUNT 4 41762306a36Sopenharmony_ci#define TIMER_T0_ID 0 41862306a36Sopenharmony_ci#define TIMER_T1_ID 1 41962306a36Sopenharmony_ci#define TIMER_T2_ID 2 42062306a36Sopenharmony_ci#define TIMER_WDT_ID 3 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci/* Timer irqstat register */ 42362306a36Sopenharmony_ci#define TIMER_IRQSTAT_REG 0 42462306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER_CAUSE(x) (1 << (x)) 42562306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER0_CAUSE (1 << 0) 42662306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER1_CAUSE (1 << 1) 42762306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER2_CAUSE (1 << 2) 42862306a36Sopenharmony_ci#define TIMER_IRQSTAT_WDT_CAUSE (1 << 3) 42962306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER_IR_EN(x) (1 << ((x) + 8)) 43062306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER0_IR_EN (1 << 8) 43162306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER1_IR_EN (1 << 9) 43262306a36Sopenharmony_ci#define TIMER_IRQSTAT_TIMER2_IR_EN (1 << 10) 43362306a36Sopenharmony_ci 43462306a36Sopenharmony_ci/* Timer control register */ 43562306a36Sopenharmony_ci#define TIMER_CTLx_REG(x) (0x4 + (x * 4)) 43662306a36Sopenharmony_ci#define TIMER_CTL0_REG 0x4 43762306a36Sopenharmony_ci#define TIMER_CTL1_REG 0x8 43862306a36Sopenharmony_ci#define TIMER_CTL2_REG 0xC 43962306a36Sopenharmony_ci#define TIMER_CTL_COUNTDOWN_MASK (0x3fffffff) 44062306a36Sopenharmony_ci#define TIMER_CTL_MONOTONIC_MASK (1 << 30) 44162306a36Sopenharmony_ci#define TIMER_CTL_ENABLE_MASK (1 << 31) 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci/************************************************************************* 44562306a36Sopenharmony_ci * _REG relative to RSET_WDT 44662306a36Sopenharmony_ci *************************************************************************/ 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ci/* Watchdog default count register */ 44962306a36Sopenharmony_ci#define WDT_DEFVAL_REG 0x0 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_ci/* Watchdog control register */ 45262306a36Sopenharmony_ci#define WDT_CTL_REG 0x4 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ci/* Watchdog control register constants */ 45562306a36Sopenharmony_ci#define WDT_START_1 (0xff00) 45662306a36Sopenharmony_ci#define WDT_START_2 (0x00ff) 45762306a36Sopenharmony_ci#define WDT_STOP_1 (0xee00) 45862306a36Sopenharmony_ci#define WDT_STOP_2 (0x00ee) 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ci/* Watchdog reset length register */ 46162306a36Sopenharmony_ci#define WDT_RSTLEN_REG 0x8 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci/* Watchdog soft reset register (BCM6328 only) */ 46462306a36Sopenharmony_ci#define WDT_SOFTRESET_REG 0xc 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci/************************************************************************* 46762306a36Sopenharmony_ci * _REG relative to RSET_GPIO 46862306a36Sopenharmony_ci *************************************************************************/ 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ci/* GPIO registers */ 47162306a36Sopenharmony_ci#define GPIO_CTL_HI_REG 0x0 47262306a36Sopenharmony_ci#define GPIO_CTL_LO_REG 0x4 47362306a36Sopenharmony_ci#define GPIO_DATA_HI_REG 0x8 47462306a36Sopenharmony_ci#define GPIO_DATA_LO_REG 0xC 47562306a36Sopenharmony_ci#define GPIO_DATA_LO_REG_6345 0x8 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_ci/* GPIO mux registers and constants */ 47862306a36Sopenharmony_ci#define GPIO_MODE_REG 0x18 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci#define GPIO_MODE_6348_G4_DIAG 0x00090000 48162306a36Sopenharmony_ci#define GPIO_MODE_6348_G4_UTOPIA 0x00080000 48262306a36Sopenharmony_ci#define GPIO_MODE_6348_G4_LEGACY_LED 0x00030000 48362306a36Sopenharmony_ci#define GPIO_MODE_6348_G4_MII_SNOOP 0x00020000 48462306a36Sopenharmony_ci#define GPIO_MODE_6348_G4_EXT_EPHY 0x00010000 48562306a36Sopenharmony_ci#define GPIO_MODE_6348_G3_DIAG 0x00009000 48662306a36Sopenharmony_ci#define GPIO_MODE_6348_G3_UTOPIA 0x00008000 48762306a36Sopenharmony_ci#define GPIO_MODE_6348_G3_EXT_MII 0x00007000 48862306a36Sopenharmony_ci#define GPIO_MODE_6348_G2_DIAG 0x00000900 48962306a36Sopenharmony_ci#define GPIO_MODE_6348_G2_PCI 0x00000500 49062306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_DIAG 0x00000090 49162306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_UTOPIA 0x00000080 49262306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_SPI_UART 0x00000060 49362306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_SPI_MASTER 0x00000060 49462306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_MII_PCCARD 0x00000040 49562306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_MII_SNOOP 0x00000020 49662306a36Sopenharmony_ci#define GPIO_MODE_6348_G1_EXT_EPHY 0x00000010 49762306a36Sopenharmony_ci#define GPIO_MODE_6348_G0_DIAG 0x00000009 49862306a36Sopenharmony_ci#define GPIO_MODE_6348_G0_EXT_MII 0x00000007 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ci#define GPIO_MODE_6358_EXTRACS (1 << 5) 50162306a36Sopenharmony_ci#define GPIO_MODE_6358_UART1 (1 << 6) 50262306a36Sopenharmony_ci#define GPIO_MODE_6358_EXTRA_SPI_SS (1 << 7) 50362306a36Sopenharmony_ci#define GPIO_MODE_6358_SERIAL_LED (1 << 10) 50462306a36Sopenharmony_ci#define GPIO_MODE_6358_UTOPIA (1 << 12) 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_ci#define GPIO_MODE_6368_ANALOG_AFE_0 (1 << 0) 50762306a36Sopenharmony_ci#define GPIO_MODE_6368_ANALOG_AFE_1 (1 << 1) 50862306a36Sopenharmony_ci#define GPIO_MODE_6368_SYS_IRQ (1 << 2) 50962306a36Sopenharmony_ci#define GPIO_MODE_6368_SERIAL_LED_DATA (1 << 3) 51062306a36Sopenharmony_ci#define GPIO_MODE_6368_SERIAL_LED_CLK (1 << 4) 51162306a36Sopenharmony_ci#define GPIO_MODE_6368_INET_LED (1 << 5) 51262306a36Sopenharmony_ci#define GPIO_MODE_6368_EPHY0_LED (1 << 6) 51362306a36Sopenharmony_ci#define GPIO_MODE_6368_EPHY1_LED (1 << 7) 51462306a36Sopenharmony_ci#define GPIO_MODE_6368_EPHY2_LED (1 << 8) 51562306a36Sopenharmony_ci#define GPIO_MODE_6368_EPHY3_LED (1 << 9) 51662306a36Sopenharmony_ci#define GPIO_MODE_6368_ROBOSW_LED_DAT (1 << 10) 51762306a36Sopenharmony_ci#define GPIO_MODE_6368_ROBOSW_LED_CLK (1 << 11) 51862306a36Sopenharmony_ci#define GPIO_MODE_6368_ROBOSW_LED0 (1 << 12) 51962306a36Sopenharmony_ci#define GPIO_MODE_6368_ROBOSW_LED1 (1 << 13) 52062306a36Sopenharmony_ci#define GPIO_MODE_6368_USBD_LED (1 << 14) 52162306a36Sopenharmony_ci#define GPIO_MODE_6368_NTR_PULSE (1 << 15) 52262306a36Sopenharmony_ci#define GPIO_MODE_6368_PCI_REQ1 (1 << 16) 52362306a36Sopenharmony_ci#define GPIO_MODE_6368_PCI_GNT1 (1 << 17) 52462306a36Sopenharmony_ci#define GPIO_MODE_6368_PCI_INTB (1 << 18) 52562306a36Sopenharmony_ci#define GPIO_MODE_6368_PCI_REQ0 (1 << 19) 52662306a36Sopenharmony_ci#define GPIO_MODE_6368_PCI_GNT0 (1 << 20) 52762306a36Sopenharmony_ci#define GPIO_MODE_6368_PCMCIA_CD1 (1 << 22) 52862306a36Sopenharmony_ci#define GPIO_MODE_6368_PCMCIA_CD2 (1 << 23) 52962306a36Sopenharmony_ci#define GPIO_MODE_6368_PCMCIA_VS1 (1 << 24) 53062306a36Sopenharmony_ci#define GPIO_MODE_6368_PCMCIA_VS2 (1 << 25) 53162306a36Sopenharmony_ci#define GPIO_MODE_6368_EBI_CS2 (1 << 26) 53262306a36Sopenharmony_ci#define GPIO_MODE_6368_EBI_CS3 (1 << 27) 53362306a36Sopenharmony_ci#define GPIO_MODE_6368_SPI_SSN2 (1 << 28) 53462306a36Sopenharmony_ci#define GPIO_MODE_6368_SPI_SSN3 (1 << 29) 53562306a36Sopenharmony_ci#define GPIO_MODE_6368_SPI_SSN4 (1 << 30) 53662306a36Sopenharmony_ci#define GPIO_MODE_6368_SPI_SSN5 (1 << 31) 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ci#define GPIO_PINMUX_OTHR_REG 0x24 54062306a36Sopenharmony_ci#define GPIO_PINMUX_OTHR_6328_USB_SHIFT 12 54162306a36Sopenharmony_ci#define GPIO_PINMUX_OTHR_6328_USB_MASK (3 << GPIO_PINMUX_OTHR_6328_USB_SHIFT) 54262306a36Sopenharmony_ci#define GPIO_PINMUX_OTHR_6328_USB_HOST (1 << GPIO_PINMUX_OTHR_6328_USB_SHIFT) 54362306a36Sopenharmony_ci#define GPIO_PINMUX_OTHR_6328_USB_DEV (2 << GPIO_PINMUX_OTHR_6328_USB_SHIFT) 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_ci#define GPIO_BASEMODE_6368_REG 0x38 54662306a36Sopenharmony_ci#define GPIO_BASEMODE_6368_UART2 0x1 54762306a36Sopenharmony_ci#define GPIO_BASEMODE_6368_GPIO 0x0 54862306a36Sopenharmony_ci#define GPIO_BASEMODE_6368_MASK 0x7 54962306a36Sopenharmony_ci/* those bits must be kept as read in gpio basemode register*/ 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci#define GPIO_STRAPBUS_REG 0x40 55262306a36Sopenharmony_ci#define STRAPBUS_6358_BOOT_SEL_PARALLEL (1 << 1) 55362306a36Sopenharmony_ci#define STRAPBUS_6358_BOOT_SEL_SERIAL (0 << 1) 55462306a36Sopenharmony_ci#define STRAPBUS_6368_BOOT_SEL_MASK 0x3 55562306a36Sopenharmony_ci#define STRAPBUS_6368_BOOT_SEL_NAND 0 55662306a36Sopenharmony_ci#define STRAPBUS_6368_BOOT_SEL_SERIAL 1 55762306a36Sopenharmony_ci#define STRAPBUS_6368_BOOT_SEL_PARALLEL 3 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ci/************************************************************************* 56162306a36Sopenharmony_ci * _REG relative to RSET_ENET 56262306a36Sopenharmony_ci *************************************************************************/ 56362306a36Sopenharmony_ci 56462306a36Sopenharmony_ci/* Receiver Configuration register */ 56562306a36Sopenharmony_ci#define ENET_RXCFG_REG 0x0 56662306a36Sopenharmony_ci#define ENET_RXCFG_ALLMCAST_SHIFT 1 56762306a36Sopenharmony_ci#define ENET_RXCFG_ALLMCAST_MASK (1 << ENET_RXCFG_ALLMCAST_SHIFT) 56862306a36Sopenharmony_ci#define ENET_RXCFG_PROMISC_SHIFT 3 56962306a36Sopenharmony_ci#define ENET_RXCFG_PROMISC_MASK (1 << ENET_RXCFG_PROMISC_SHIFT) 57062306a36Sopenharmony_ci#define ENET_RXCFG_LOOPBACK_SHIFT 4 57162306a36Sopenharmony_ci#define ENET_RXCFG_LOOPBACK_MASK (1 << ENET_RXCFG_LOOPBACK_SHIFT) 57262306a36Sopenharmony_ci#define ENET_RXCFG_ENFLOW_SHIFT 5 57362306a36Sopenharmony_ci#define ENET_RXCFG_ENFLOW_MASK (1 << ENET_RXCFG_ENFLOW_SHIFT) 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_ci/* Receive Maximum Length register */ 57662306a36Sopenharmony_ci#define ENET_RXMAXLEN_REG 0x4 57762306a36Sopenharmony_ci#define ENET_RXMAXLEN_SHIFT 0 57862306a36Sopenharmony_ci#define ENET_RXMAXLEN_MASK (0x7ff << ENET_RXMAXLEN_SHIFT) 57962306a36Sopenharmony_ci 58062306a36Sopenharmony_ci/* Transmit Maximum Length register */ 58162306a36Sopenharmony_ci#define ENET_TXMAXLEN_REG 0x8 58262306a36Sopenharmony_ci#define ENET_TXMAXLEN_SHIFT 0 58362306a36Sopenharmony_ci#define ENET_TXMAXLEN_MASK (0x7ff << ENET_TXMAXLEN_SHIFT) 58462306a36Sopenharmony_ci 58562306a36Sopenharmony_ci/* MII Status/Control register */ 58662306a36Sopenharmony_ci#define ENET_MIISC_REG 0x10 58762306a36Sopenharmony_ci#define ENET_MIISC_MDCFREQDIV_SHIFT 0 58862306a36Sopenharmony_ci#define ENET_MIISC_MDCFREQDIV_MASK (0x7f << ENET_MIISC_MDCFREQDIV_SHIFT) 58962306a36Sopenharmony_ci#define ENET_MIISC_PREAMBLEEN_SHIFT 7 59062306a36Sopenharmony_ci#define ENET_MIISC_PREAMBLEEN_MASK (1 << ENET_MIISC_PREAMBLEEN_SHIFT) 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ci/* MII Data register */ 59362306a36Sopenharmony_ci#define ENET_MIIDATA_REG 0x14 59462306a36Sopenharmony_ci#define ENET_MIIDATA_DATA_SHIFT 0 59562306a36Sopenharmony_ci#define ENET_MIIDATA_DATA_MASK (0xffff << ENET_MIIDATA_DATA_SHIFT) 59662306a36Sopenharmony_ci#define ENET_MIIDATA_TA_SHIFT 16 59762306a36Sopenharmony_ci#define ENET_MIIDATA_TA_MASK (0x3 << ENET_MIIDATA_TA_SHIFT) 59862306a36Sopenharmony_ci#define ENET_MIIDATA_REG_SHIFT 18 59962306a36Sopenharmony_ci#define ENET_MIIDATA_REG_MASK (0x1f << ENET_MIIDATA_REG_SHIFT) 60062306a36Sopenharmony_ci#define ENET_MIIDATA_PHYID_SHIFT 23 60162306a36Sopenharmony_ci#define ENET_MIIDATA_PHYID_MASK (0x1f << ENET_MIIDATA_PHYID_SHIFT) 60262306a36Sopenharmony_ci#define ENET_MIIDATA_OP_READ_MASK (0x6 << 28) 60362306a36Sopenharmony_ci#define ENET_MIIDATA_OP_WRITE_MASK (0x5 << 28) 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_ci/* Ethernet Interrupt Mask register */ 60662306a36Sopenharmony_ci#define ENET_IRMASK_REG 0x18 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ci/* Ethernet Interrupt register */ 60962306a36Sopenharmony_ci#define ENET_IR_REG 0x1c 61062306a36Sopenharmony_ci#define ENET_IR_MII (1 << 0) 61162306a36Sopenharmony_ci#define ENET_IR_MIB (1 << 1) 61262306a36Sopenharmony_ci#define ENET_IR_FLOWC (1 << 2) 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ci/* Ethernet Control register */ 61562306a36Sopenharmony_ci#define ENET_CTL_REG 0x2c 61662306a36Sopenharmony_ci#define ENET_CTL_ENABLE_SHIFT 0 61762306a36Sopenharmony_ci#define ENET_CTL_ENABLE_MASK (1 << ENET_CTL_ENABLE_SHIFT) 61862306a36Sopenharmony_ci#define ENET_CTL_DISABLE_SHIFT 1 61962306a36Sopenharmony_ci#define ENET_CTL_DISABLE_MASK (1 << ENET_CTL_DISABLE_SHIFT) 62062306a36Sopenharmony_ci#define ENET_CTL_SRESET_SHIFT 2 62162306a36Sopenharmony_ci#define ENET_CTL_SRESET_MASK (1 << ENET_CTL_SRESET_SHIFT) 62262306a36Sopenharmony_ci#define ENET_CTL_EPHYSEL_SHIFT 3 62362306a36Sopenharmony_ci#define ENET_CTL_EPHYSEL_MASK (1 << ENET_CTL_EPHYSEL_SHIFT) 62462306a36Sopenharmony_ci 62562306a36Sopenharmony_ci/* Transmit Control register */ 62662306a36Sopenharmony_ci#define ENET_TXCTL_REG 0x30 62762306a36Sopenharmony_ci#define ENET_TXCTL_FD_SHIFT 0 62862306a36Sopenharmony_ci#define ENET_TXCTL_FD_MASK (1 << ENET_TXCTL_FD_SHIFT) 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ci/* Transmit Watermask register */ 63162306a36Sopenharmony_ci#define ENET_TXWMARK_REG 0x34 63262306a36Sopenharmony_ci#define ENET_TXWMARK_WM_SHIFT 0 63362306a36Sopenharmony_ci#define ENET_TXWMARK_WM_MASK (0x3f << ENET_TXWMARK_WM_SHIFT) 63462306a36Sopenharmony_ci 63562306a36Sopenharmony_ci/* MIB Control register */ 63662306a36Sopenharmony_ci#define ENET_MIBCTL_REG 0x38 63762306a36Sopenharmony_ci#define ENET_MIBCTL_RDCLEAR_SHIFT 0 63862306a36Sopenharmony_ci#define ENET_MIBCTL_RDCLEAR_MASK (1 << ENET_MIBCTL_RDCLEAR_SHIFT) 63962306a36Sopenharmony_ci 64062306a36Sopenharmony_ci/* Perfect Match Data Low register */ 64162306a36Sopenharmony_ci#define ENET_PML_REG(x) (0x58 + (x) * 8) 64262306a36Sopenharmony_ci#define ENET_PMH_REG(x) (0x5c + (x) * 8) 64362306a36Sopenharmony_ci#define ENET_PMH_DATAVALID_SHIFT 16 64462306a36Sopenharmony_ci#define ENET_PMH_DATAVALID_MASK (1 << ENET_PMH_DATAVALID_SHIFT) 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ci/* MIB register */ 64762306a36Sopenharmony_ci#define ENET_MIB_REG(x) (0x200 + (x) * 4) 64862306a36Sopenharmony_ci#define ENET_MIB_REG_COUNT 55 64962306a36Sopenharmony_ci 65062306a36Sopenharmony_ci 65162306a36Sopenharmony_ci/************************************************************************* 65262306a36Sopenharmony_ci * _REG relative to RSET_ENETDMA 65362306a36Sopenharmony_ci *************************************************************************/ 65462306a36Sopenharmony_ci#define ENETDMA_CHAN_WIDTH 0x10 65562306a36Sopenharmony_ci#define ENETDMA_6345_CHAN_WIDTH 0x40 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci/* Controller Configuration Register */ 65862306a36Sopenharmony_ci#define ENETDMA_CFG_REG (0x0) 65962306a36Sopenharmony_ci#define ENETDMA_CFG_EN_SHIFT 0 66062306a36Sopenharmony_ci#define ENETDMA_CFG_EN_MASK (1 << ENETDMA_CFG_EN_SHIFT) 66162306a36Sopenharmony_ci#define ENETDMA_CFG_FLOWCH_MASK(x) (1 << ((x >> 1) + 1)) 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ci/* Flow Control Descriptor Low Threshold register */ 66462306a36Sopenharmony_ci#define ENETDMA_FLOWCL_REG(x) (0x4 + (x) * 6) 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ci/* Flow Control Descriptor High Threshold register */ 66762306a36Sopenharmony_ci#define ENETDMA_FLOWCH_REG(x) (0x8 + (x) * 6) 66862306a36Sopenharmony_ci 66962306a36Sopenharmony_ci/* Flow Control Descriptor Buffer Alloca Threshold register */ 67062306a36Sopenharmony_ci#define ENETDMA_BUFALLOC_REG(x) (0xc + (x) * 6) 67162306a36Sopenharmony_ci#define ENETDMA_BUFALLOC_FORCE_SHIFT 31 67262306a36Sopenharmony_ci#define ENETDMA_BUFALLOC_FORCE_MASK (1 << ENETDMA_BUFALLOC_FORCE_SHIFT) 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci/* Global interrupt status */ 67562306a36Sopenharmony_ci#define ENETDMA_GLB_IRQSTAT_REG (0x40) 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ci/* Global interrupt mask */ 67862306a36Sopenharmony_ci#define ENETDMA_GLB_IRQMASK_REG (0x44) 67962306a36Sopenharmony_ci 68062306a36Sopenharmony_ci/* Channel Configuration register */ 68162306a36Sopenharmony_ci#define ENETDMA_CHANCFG_REG(x) (0x100 + (x) * 0x10) 68262306a36Sopenharmony_ci#define ENETDMA_CHANCFG_EN_SHIFT 0 68362306a36Sopenharmony_ci#define ENETDMA_CHANCFG_EN_MASK (1 << ENETDMA_CHANCFG_EN_SHIFT) 68462306a36Sopenharmony_ci#define ENETDMA_CHANCFG_PKTHALT_SHIFT 1 68562306a36Sopenharmony_ci#define ENETDMA_CHANCFG_PKTHALT_MASK (1 << ENETDMA_CHANCFG_PKTHALT_SHIFT) 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci/* Interrupt Control/Status register */ 68862306a36Sopenharmony_ci#define ENETDMA_IR_REG(x) (0x104 + (x) * 0x10) 68962306a36Sopenharmony_ci#define ENETDMA_IR_BUFDONE_MASK (1 << 0) 69062306a36Sopenharmony_ci#define ENETDMA_IR_PKTDONE_MASK (1 << 1) 69162306a36Sopenharmony_ci#define ENETDMA_IR_NOTOWNER_MASK (1 << 2) 69262306a36Sopenharmony_ci 69362306a36Sopenharmony_ci/* Interrupt Mask register */ 69462306a36Sopenharmony_ci#define ENETDMA_IRMASK_REG(x) (0x108 + (x) * 0x10) 69562306a36Sopenharmony_ci 69662306a36Sopenharmony_ci/* Maximum Burst Length */ 69762306a36Sopenharmony_ci#define ENETDMA_MAXBURST_REG(x) (0x10C + (x) * 0x10) 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ci/* Ring Start Address register */ 70062306a36Sopenharmony_ci#define ENETDMA_RSTART_REG(x) (0x200 + (x) * 0x10) 70162306a36Sopenharmony_ci 70262306a36Sopenharmony_ci/* State Ram Word 2 */ 70362306a36Sopenharmony_ci#define ENETDMA_SRAM2_REG(x) (0x204 + (x) * 0x10) 70462306a36Sopenharmony_ci 70562306a36Sopenharmony_ci/* State Ram Word 3 */ 70662306a36Sopenharmony_ci#define ENETDMA_SRAM3_REG(x) (0x208 + (x) * 0x10) 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ci/* State Ram Word 4 */ 70962306a36Sopenharmony_ci#define ENETDMA_SRAM4_REG(x) (0x20c + (x) * 0x10) 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci/* Broadcom 6345 ENET DMA definitions */ 71262306a36Sopenharmony_ci#define ENETDMA_6345_CHANCFG_REG (0x00) 71362306a36Sopenharmony_ci 71462306a36Sopenharmony_ci#define ENETDMA_6345_MAXBURST_REG (0x04) 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci#define ENETDMA_6345_RSTART_REG (0x08) 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_ci#define ENETDMA_6345_LEN_REG (0x0C) 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_ci#define ENETDMA_6345_IR_REG (0x14) 72162306a36Sopenharmony_ci 72262306a36Sopenharmony_ci#define ENETDMA_6345_IRMASK_REG (0x18) 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ci#define ENETDMA_6345_FC_REG (0x1C) 72562306a36Sopenharmony_ci 72662306a36Sopenharmony_ci#define ENETDMA_6345_BUFALLOC_REG (0x20) 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_ci/* Shift down for EOP, SOP and WRAP bits */ 72962306a36Sopenharmony_ci#define ENETDMA_6345_DESC_SHIFT (3) 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ci/************************************************************************* 73262306a36Sopenharmony_ci * _REG relative to RSET_ENETDMAC 73362306a36Sopenharmony_ci *************************************************************************/ 73462306a36Sopenharmony_ci 73562306a36Sopenharmony_ci/* Channel Configuration register */ 73662306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_REG (0x0) 73762306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_EN_SHIFT 0 73862306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_EN_MASK (1 << ENETDMAC_CHANCFG_EN_SHIFT) 73962306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_PKTHALT_SHIFT 1 74062306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_PKTHALT_MASK (1 << ENETDMAC_CHANCFG_PKTHALT_SHIFT) 74162306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_BUFHALT_SHIFT 2 74262306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_BUFHALT_MASK (1 << ENETDMAC_CHANCFG_BUFHALT_SHIFT) 74362306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_CHAINING_SHIFT 2 74462306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_CHAINING_MASK (1 << ENETDMAC_CHANCFG_CHAINING_SHIFT) 74562306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_WRAP_EN_SHIFT 3 74662306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_WRAP_EN_MASK (1 << ENETDMAC_CHANCFG_WRAP_EN_SHIFT) 74762306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_FLOWC_EN_SHIFT 4 74862306a36Sopenharmony_ci#define ENETDMAC_CHANCFG_FLOWC_EN_MASK (1 << ENETDMAC_CHANCFG_FLOWC_EN_SHIFT) 74962306a36Sopenharmony_ci 75062306a36Sopenharmony_ci/* Interrupt Control/Status register */ 75162306a36Sopenharmony_ci#define ENETDMAC_IR_REG (0x4) 75262306a36Sopenharmony_ci#define ENETDMAC_IR_BUFDONE_MASK (1 << 0) 75362306a36Sopenharmony_ci#define ENETDMAC_IR_PKTDONE_MASK (1 << 1) 75462306a36Sopenharmony_ci#define ENETDMAC_IR_NOTOWNER_MASK (1 << 2) 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci/* Interrupt Mask register */ 75762306a36Sopenharmony_ci#define ENETDMAC_IRMASK_REG (0x8) 75862306a36Sopenharmony_ci 75962306a36Sopenharmony_ci/* Maximum Burst Length */ 76062306a36Sopenharmony_ci#define ENETDMAC_MAXBURST_REG (0xc) 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ci/************************************************************************* 76462306a36Sopenharmony_ci * _REG relative to RSET_ENETDMAS 76562306a36Sopenharmony_ci *************************************************************************/ 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ci/* Ring Start Address register */ 76862306a36Sopenharmony_ci#define ENETDMAS_RSTART_REG (0x0) 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_ci/* State Ram Word 2 */ 77162306a36Sopenharmony_ci#define ENETDMAS_SRAM2_REG (0x4) 77262306a36Sopenharmony_ci 77362306a36Sopenharmony_ci/* State Ram Word 3 */ 77462306a36Sopenharmony_ci#define ENETDMAS_SRAM3_REG (0x8) 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ci/* State Ram Word 4 */ 77762306a36Sopenharmony_ci#define ENETDMAS_SRAM4_REG (0xc) 77862306a36Sopenharmony_ci 77962306a36Sopenharmony_ci 78062306a36Sopenharmony_ci/************************************************************************* 78162306a36Sopenharmony_ci * _REG relative to RSET_ENETSW 78262306a36Sopenharmony_ci *************************************************************************/ 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci/* Port traffic control */ 78562306a36Sopenharmony_ci#define ENETSW_PTCTRL_REG(x) (0x0 + (x)) 78662306a36Sopenharmony_ci#define ENETSW_PTCTRL_RXDIS_MASK (1 << 0) 78762306a36Sopenharmony_ci#define ENETSW_PTCTRL_TXDIS_MASK (1 << 1) 78862306a36Sopenharmony_ci 78962306a36Sopenharmony_ci/* Switch mode register */ 79062306a36Sopenharmony_ci#define ENETSW_SWMODE_REG (0xb) 79162306a36Sopenharmony_ci#define ENETSW_SWMODE_FWD_EN_MASK (1 << 1) 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_ci/* IMP override Register */ 79462306a36Sopenharmony_ci#define ENETSW_IMPOV_REG (0xe) 79562306a36Sopenharmony_ci#define ENETSW_IMPOV_FORCE_MASK (1 << 7) 79662306a36Sopenharmony_ci#define ENETSW_IMPOV_TXFLOW_MASK (1 << 5) 79762306a36Sopenharmony_ci#define ENETSW_IMPOV_RXFLOW_MASK (1 << 4) 79862306a36Sopenharmony_ci#define ENETSW_IMPOV_1000_MASK (1 << 3) 79962306a36Sopenharmony_ci#define ENETSW_IMPOV_100_MASK (1 << 2) 80062306a36Sopenharmony_ci#define ENETSW_IMPOV_FDX_MASK (1 << 1) 80162306a36Sopenharmony_ci#define ENETSW_IMPOV_LINKUP_MASK (1 << 0) 80262306a36Sopenharmony_ci 80362306a36Sopenharmony_ci/* Port override Register */ 80462306a36Sopenharmony_ci#define ENETSW_PORTOV_REG(x) (0x58 + (x)) 80562306a36Sopenharmony_ci#define ENETSW_PORTOV_ENABLE_MASK (1 << 6) 80662306a36Sopenharmony_ci#define ENETSW_PORTOV_TXFLOW_MASK (1 << 5) 80762306a36Sopenharmony_ci#define ENETSW_PORTOV_RXFLOW_MASK (1 << 4) 80862306a36Sopenharmony_ci#define ENETSW_PORTOV_1000_MASK (1 << 3) 80962306a36Sopenharmony_ci#define ENETSW_PORTOV_100_MASK (1 << 2) 81062306a36Sopenharmony_ci#define ENETSW_PORTOV_FDX_MASK (1 << 1) 81162306a36Sopenharmony_ci#define ENETSW_PORTOV_LINKUP_MASK (1 << 0) 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_ci/* MDIO control register */ 81462306a36Sopenharmony_ci#define ENETSW_MDIOC_REG (0xb0) 81562306a36Sopenharmony_ci#define ENETSW_MDIOC_EXT_MASK (1 << 16) 81662306a36Sopenharmony_ci#define ENETSW_MDIOC_REG_SHIFT 20 81762306a36Sopenharmony_ci#define ENETSW_MDIOC_PHYID_SHIFT 25 81862306a36Sopenharmony_ci#define ENETSW_MDIOC_RD_MASK (1 << 30) 81962306a36Sopenharmony_ci#define ENETSW_MDIOC_WR_MASK (1 << 31) 82062306a36Sopenharmony_ci 82162306a36Sopenharmony_ci/* MDIO data register */ 82262306a36Sopenharmony_ci#define ENETSW_MDIOD_REG (0xb4) 82362306a36Sopenharmony_ci 82462306a36Sopenharmony_ci/* Global Management Configuration Register */ 82562306a36Sopenharmony_ci#define ENETSW_GMCR_REG (0x200) 82662306a36Sopenharmony_ci#define ENETSW_GMCR_RST_MIB_MASK (1 << 0) 82762306a36Sopenharmony_ci 82862306a36Sopenharmony_ci/* MIB register */ 82962306a36Sopenharmony_ci#define ENETSW_MIB_REG(x) (0x2800 + (x) * 4) 83062306a36Sopenharmony_ci#define ENETSW_MIB_REG_COUNT 47 83162306a36Sopenharmony_ci 83262306a36Sopenharmony_ci/* Jumbo control register port mask register */ 83362306a36Sopenharmony_ci#define ENETSW_JMBCTL_PORT_REG (0x4004) 83462306a36Sopenharmony_ci 83562306a36Sopenharmony_ci/* Jumbo control mib good frame register */ 83662306a36Sopenharmony_ci#define ENETSW_JMBCTL_MAXSIZE_REG (0x4008) 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci/************************************************************************* 84062306a36Sopenharmony_ci * _REG relative to RSET_OHCI_PRIV 84162306a36Sopenharmony_ci *************************************************************************/ 84262306a36Sopenharmony_ci 84362306a36Sopenharmony_ci#define OHCI_PRIV_REG 0x0 84462306a36Sopenharmony_ci#define OHCI_PRIV_PORT1_HOST_SHIFT 0 84562306a36Sopenharmony_ci#define OHCI_PRIV_PORT1_HOST_MASK (1 << OHCI_PRIV_PORT1_HOST_SHIFT) 84662306a36Sopenharmony_ci#define OHCI_PRIV_REG_SWAP_SHIFT 3 84762306a36Sopenharmony_ci#define OHCI_PRIV_REG_SWAP_MASK (1 << OHCI_PRIV_REG_SWAP_SHIFT) 84862306a36Sopenharmony_ci 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_ci/************************************************************************* 85162306a36Sopenharmony_ci * _REG relative to RSET_USBH_PRIV 85262306a36Sopenharmony_ci *************************************************************************/ 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ci#define USBH_PRIV_SWAP_6358_REG 0x0 85562306a36Sopenharmony_ci#define USBH_PRIV_SWAP_6368_REG 0x1c 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ci#define USBH_PRIV_SWAP_USBD_SHIFT 6 85862306a36Sopenharmony_ci#define USBH_PRIV_SWAP_USBD_MASK (1 << USBH_PRIV_SWAP_USBD_SHIFT) 85962306a36Sopenharmony_ci#define USBH_PRIV_SWAP_EHCI_ENDN_SHIFT 4 86062306a36Sopenharmony_ci#define USBH_PRIV_SWAP_EHCI_ENDN_MASK (1 << USBH_PRIV_SWAP_EHCI_ENDN_SHIFT) 86162306a36Sopenharmony_ci#define USBH_PRIV_SWAP_EHCI_DATA_SHIFT 3 86262306a36Sopenharmony_ci#define USBH_PRIV_SWAP_EHCI_DATA_MASK (1 << USBH_PRIV_SWAP_EHCI_DATA_SHIFT) 86362306a36Sopenharmony_ci#define USBH_PRIV_SWAP_OHCI_ENDN_SHIFT 1 86462306a36Sopenharmony_ci#define USBH_PRIV_SWAP_OHCI_ENDN_MASK (1 << USBH_PRIV_SWAP_OHCI_ENDN_SHIFT) 86562306a36Sopenharmony_ci#define USBH_PRIV_SWAP_OHCI_DATA_SHIFT 0 86662306a36Sopenharmony_ci#define USBH_PRIV_SWAP_OHCI_DATA_MASK (1 << USBH_PRIV_SWAP_OHCI_DATA_SHIFT) 86762306a36Sopenharmony_ci 86862306a36Sopenharmony_ci#define USBH_PRIV_UTMI_CTL_6368_REG 0x10 86962306a36Sopenharmony_ci#define USBH_PRIV_UTMI_CTL_NODRIV_SHIFT 12 87062306a36Sopenharmony_ci#define USBH_PRIV_UTMI_CTL_NODRIV_MASK (0xf << USBH_PRIV_UTMI_CTL_NODRIV_SHIFT) 87162306a36Sopenharmony_ci#define USBH_PRIV_UTMI_CTL_HOSTB_SHIFT 0 87262306a36Sopenharmony_ci#define USBH_PRIV_UTMI_CTL_HOSTB_MASK (0xf << USBH_PRIV_UTMI_CTL_HOSTB_SHIFT) 87362306a36Sopenharmony_ci 87462306a36Sopenharmony_ci#define USBH_PRIV_TEST_6358_REG 0x24 87562306a36Sopenharmony_ci#define USBH_PRIV_TEST_6368_REG 0x14 87662306a36Sopenharmony_ci 87762306a36Sopenharmony_ci#define USBH_PRIV_SETUP_6368_REG 0x28 87862306a36Sopenharmony_ci#define USBH_PRIV_SETUP_IOC_SHIFT 4 87962306a36Sopenharmony_ci#define USBH_PRIV_SETUP_IOC_MASK (1 << USBH_PRIV_SETUP_IOC_SHIFT) 88062306a36Sopenharmony_ci 88162306a36Sopenharmony_ci 88262306a36Sopenharmony_ci/************************************************************************* 88362306a36Sopenharmony_ci * _REG relative to RSET_USBD 88462306a36Sopenharmony_ci *************************************************************************/ 88562306a36Sopenharmony_ci 88662306a36Sopenharmony_ci/* General control */ 88762306a36Sopenharmony_ci#define USBD_CONTROL_REG 0x00 88862306a36Sopenharmony_ci#define USBD_CONTROL_TXZLENINS_SHIFT 14 88962306a36Sopenharmony_ci#define USBD_CONTROL_TXZLENINS_MASK (1 << USBD_CONTROL_TXZLENINS_SHIFT) 89062306a36Sopenharmony_ci#define USBD_CONTROL_AUTO_CSRS_SHIFT 13 89162306a36Sopenharmony_ci#define USBD_CONTROL_AUTO_CSRS_MASK (1 << USBD_CONTROL_AUTO_CSRS_SHIFT) 89262306a36Sopenharmony_ci#define USBD_CONTROL_RXZSCFG_SHIFT 12 89362306a36Sopenharmony_ci#define USBD_CONTROL_RXZSCFG_MASK (1 << USBD_CONTROL_RXZSCFG_SHIFT) 89462306a36Sopenharmony_ci#define USBD_CONTROL_INIT_SEL_SHIFT 8 89562306a36Sopenharmony_ci#define USBD_CONTROL_INIT_SEL_MASK (0xf << USBD_CONTROL_INIT_SEL_SHIFT) 89662306a36Sopenharmony_ci#define USBD_CONTROL_FIFO_RESET_SHIFT 6 89762306a36Sopenharmony_ci#define USBD_CONTROL_FIFO_RESET_MASK (3 << USBD_CONTROL_FIFO_RESET_SHIFT) 89862306a36Sopenharmony_ci#define USBD_CONTROL_SETUPERRLOCK_SHIFT 5 89962306a36Sopenharmony_ci#define USBD_CONTROL_SETUPERRLOCK_MASK (1 << USBD_CONTROL_SETUPERRLOCK_SHIFT) 90062306a36Sopenharmony_ci#define USBD_CONTROL_DONE_CSRS_SHIFT 0 90162306a36Sopenharmony_ci#define USBD_CONTROL_DONE_CSRS_MASK (1 << USBD_CONTROL_DONE_CSRS_SHIFT) 90262306a36Sopenharmony_ci 90362306a36Sopenharmony_ci/* Strap options */ 90462306a36Sopenharmony_ci#define USBD_STRAPS_REG 0x04 90562306a36Sopenharmony_ci#define USBD_STRAPS_APP_SELF_PWR_SHIFT 10 90662306a36Sopenharmony_ci#define USBD_STRAPS_APP_SELF_PWR_MASK (1 << USBD_STRAPS_APP_SELF_PWR_SHIFT) 90762306a36Sopenharmony_ci#define USBD_STRAPS_APP_DISCON_SHIFT 9 90862306a36Sopenharmony_ci#define USBD_STRAPS_APP_DISCON_MASK (1 << USBD_STRAPS_APP_DISCON_SHIFT) 90962306a36Sopenharmony_ci#define USBD_STRAPS_APP_CSRPRGSUP_SHIFT 8 91062306a36Sopenharmony_ci#define USBD_STRAPS_APP_CSRPRGSUP_MASK (1 << USBD_STRAPS_APP_CSRPRGSUP_SHIFT) 91162306a36Sopenharmony_ci#define USBD_STRAPS_APP_RMTWKUP_SHIFT 6 91262306a36Sopenharmony_ci#define USBD_STRAPS_APP_RMTWKUP_MASK (1 << USBD_STRAPS_APP_RMTWKUP_SHIFT) 91362306a36Sopenharmony_ci#define USBD_STRAPS_APP_RAM_IF_SHIFT 7 91462306a36Sopenharmony_ci#define USBD_STRAPS_APP_RAM_IF_MASK (1 << USBD_STRAPS_APP_RAM_IF_SHIFT) 91562306a36Sopenharmony_ci#define USBD_STRAPS_APP_8BITPHY_SHIFT 2 91662306a36Sopenharmony_ci#define USBD_STRAPS_APP_8BITPHY_MASK (1 << USBD_STRAPS_APP_8BITPHY_SHIFT) 91762306a36Sopenharmony_ci#define USBD_STRAPS_SPEED_SHIFT 0 91862306a36Sopenharmony_ci#define USBD_STRAPS_SPEED_MASK (3 << USBD_STRAPS_SPEED_SHIFT) 91962306a36Sopenharmony_ci 92062306a36Sopenharmony_ci/* Stall control */ 92162306a36Sopenharmony_ci#define USBD_STALL_REG 0x08 92262306a36Sopenharmony_ci#define USBD_STALL_UPDATE_SHIFT 7 92362306a36Sopenharmony_ci#define USBD_STALL_UPDATE_MASK (1 << USBD_STALL_UPDATE_SHIFT) 92462306a36Sopenharmony_ci#define USBD_STALL_ENABLE_SHIFT 6 92562306a36Sopenharmony_ci#define USBD_STALL_ENABLE_MASK (1 << USBD_STALL_ENABLE_SHIFT) 92662306a36Sopenharmony_ci#define USBD_STALL_EPNUM_SHIFT 0 92762306a36Sopenharmony_ci#define USBD_STALL_EPNUM_MASK (0xf << USBD_STALL_EPNUM_SHIFT) 92862306a36Sopenharmony_ci 92962306a36Sopenharmony_ci/* General status */ 93062306a36Sopenharmony_ci#define USBD_STATUS_REG 0x0c 93162306a36Sopenharmony_ci#define USBD_STATUS_SOF_SHIFT 16 93262306a36Sopenharmony_ci#define USBD_STATUS_SOF_MASK (0x7ff << USBD_STATUS_SOF_SHIFT) 93362306a36Sopenharmony_ci#define USBD_STATUS_SPD_SHIFT 12 93462306a36Sopenharmony_ci#define USBD_STATUS_SPD_MASK (3 << USBD_STATUS_SPD_SHIFT) 93562306a36Sopenharmony_ci#define USBD_STATUS_ALTINTF_SHIFT 8 93662306a36Sopenharmony_ci#define USBD_STATUS_ALTINTF_MASK (0xf << USBD_STATUS_ALTINTF_SHIFT) 93762306a36Sopenharmony_ci#define USBD_STATUS_INTF_SHIFT 4 93862306a36Sopenharmony_ci#define USBD_STATUS_INTF_MASK (0xf << USBD_STATUS_INTF_SHIFT) 93962306a36Sopenharmony_ci#define USBD_STATUS_CFG_SHIFT 0 94062306a36Sopenharmony_ci#define USBD_STATUS_CFG_MASK (0xf << USBD_STATUS_CFG_SHIFT) 94162306a36Sopenharmony_ci 94262306a36Sopenharmony_ci/* Other events */ 94362306a36Sopenharmony_ci#define USBD_EVENTS_REG 0x10 94462306a36Sopenharmony_ci#define USBD_EVENTS_USB_LINK_SHIFT 10 94562306a36Sopenharmony_ci#define USBD_EVENTS_USB_LINK_MASK (1 << USBD_EVENTS_USB_LINK_SHIFT) 94662306a36Sopenharmony_ci 94762306a36Sopenharmony_ci/* IRQ status */ 94862306a36Sopenharmony_ci#define USBD_EVENT_IRQ_STATUS_REG 0x14 94962306a36Sopenharmony_ci 95062306a36Sopenharmony_ci/* IRQ level (2 bits per IRQ event) */ 95162306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_HI_REG 0x18 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_LO_REG 0x1c 95462306a36Sopenharmony_ci 95562306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_SHIFT(x) ((x & 0xf) << 1) 95662306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_MASK(x) (3 << USBD_EVENT_IRQ_CFG_SHIFT(x)) 95762306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_RISING(x) (0 << USBD_EVENT_IRQ_CFG_SHIFT(x)) 95862306a36Sopenharmony_ci#define USBD_EVENT_IRQ_CFG_FALLING(x) (1 << USBD_EVENT_IRQ_CFG_SHIFT(x)) 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_ci/* IRQ mask (1=unmasked) */ 96162306a36Sopenharmony_ci#define USBD_EVENT_IRQ_MASK_REG 0x20 96262306a36Sopenharmony_ci 96362306a36Sopenharmony_ci/* IRQ bits */ 96462306a36Sopenharmony_ci#define USBD_EVENT_IRQ_USB_LINK 10 96562306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SETCFG 9 96662306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SETINTF 8 96762306a36Sopenharmony_ci#define USBD_EVENT_IRQ_ERRATIC_ERR 7 96862306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SET_CSRS 6 96962306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SUSPEND 5 97062306a36Sopenharmony_ci#define USBD_EVENT_IRQ_EARLY_SUSPEND 4 97162306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SOF 3 97262306a36Sopenharmony_ci#define USBD_EVENT_IRQ_ENUM_ON 2 97362306a36Sopenharmony_ci#define USBD_EVENT_IRQ_SETUP 1 97462306a36Sopenharmony_ci#define USBD_EVENT_IRQ_USB_RESET 0 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci/* TX FIFO partitioning */ 97762306a36Sopenharmony_ci#define USBD_TXFIFO_CONFIG_REG 0x40 97862306a36Sopenharmony_ci#define USBD_TXFIFO_CONFIG_END_SHIFT 16 97962306a36Sopenharmony_ci#define USBD_TXFIFO_CONFIG_END_MASK (0xff << USBD_TXFIFO_CONFIG_END_SHIFT) 98062306a36Sopenharmony_ci#define USBD_TXFIFO_CONFIG_START_SHIFT 0 98162306a36Sopenharmony_ci#define USBD_TXFIFO_CONFIG_START_MASK (0xff << USBD_TXFIFO_CONFIG_START_SHIFT) 98262306a36Sopenharmony_ci 98362306a36Sopenharmony_ci/* RX FIFO partitioning */ 98462306a36Sopenharmony_ci#define USBD_RXFIFO_CONFIG_REG 0x44 98562306a36Sopenharmony_ci#define USBD_RXFIFO_CONFIG_END_SHIFT 16 98662306a36Sopenharmony_ci#define USBD_RXFIFO_CONFIG_END_MASK (0xff << USBD_TXFIFO_CONFIG_END_SHIFT) 98762306a36Sopenharmony_ci#define USBD_RXFIFO_CONFIG_START_SHIFT 0 98862306a36Sopenharmony_ci#define USBD_RXFIFO_CONFIG_START_MASK (0xff << USBD_TXFIFO_CONFIG_START_SHIFT) 98962306a36Sopenharmony_ci 99062306a36Sopenharmony_ci/* TX FIFO/endpoint configuration */ 99162306a36Sopenharmony_ci#define USBD_TXFIFO_EPSIZE_REG 0x48 99262306a36Sopenharmony_ci 99362306a36Sopenharmony_ci/* RX FIFO/endpoint configuration */ 99462306a36Sopenharmony_ci#define USBD_RXFIFO_EPSIZE_REG 0x4c 99562306a36Sopenharmony_ci 99662306a36Sopenharmony_ci/* Endpoint<->DMA mappings */ 99762306a36Sopenharmony_ci#define USBD_EPNUM_TYPEMAP_REG 0x50 99862306a36Sopenharmony_ci#define USBD_EPNUM_TYPEMAP_TYPE_SHIFT 8 99962306a36Sopenharmony_ci#define USBD_EPNUM_TYPEMAP_TYPE_MASK (0x3 << USBD_EPNUM_TYPEMAP_TYPE_SHIFT) 100062306a36Sopenharmony_ci#define USBD_EPNUM_TYPEMAP_DMA_CH_SHIFT 0 100162306a36Sopenharmony_ci#define USBD_EPNUM_TYPEMAP_DMA_CH_MASK (0xf << USBD_EPNUM_TYPEMAP_DMACH_SHIFT) 100262306a36Sopenharmony_ci 100362306a36Sopenharmony_ci/* Misc per-endpoint settings */ 100462306a36Sopenharmony_ci#define USBD_CSR_SETUPADDR_REG 0x80 100562306a36Sopenharmony_ci#define USBD_CSR_SETUPADDR_DEF 0xb550 100662306a36Sopenharmony_ci 100762306a36Sopenharmony_ci#define USBD_CSR_EP_REG(x) (0x84 + (x) * 4) 100862306a36Sopenharmony_ci#define USBD_CSR_EP_MAXPKT_SHIFT 19 100962306a36Sopenharmony_ci#define USBD_CSR_EP_MAXPKT_MASK (0x7ff << USBD_CSR_EP_MAXPKT_SHIFT) 101062306a36Sopenharmony_ci#define USBD_CSR_EP_ALTIFACE_SHIFT 15 101162306a36Sopenharmony_ci#define USBD_CSR_EP_ALTIFACE_MASK (0xf << USBD_CSR_EP_ALTIFACE_SHIFT) 101262306a36Sopenharmony_ci#define USBD_CSR_EP_IFACE_SHIFT 11 101362306a36Sopenharmony_ci#define USBD_CSR_EP_IFACE_MASK (0xf << USBD_CSR_EP_IFACE_SHIFT) 101462306a36Sopenharmony_ci#define USBD_CSR_EP_CFG_SHIFT 7 101562306a36Sopenharmony_ci#define USBD_CSR_EP_CFG_MASK (0xf << USBD_CSR_EP_CFG_SHIFT) 101662306a36Sopenharmony_ci#define USBD_CSR_EP_TYPE_SHIFT 5 101762306a36Sopenharmony_ci#define USBD_CSR_EP_TYPE_MASK (3 << USBD_CSR_EP_TYPE_SHIFT) 101862306a36Sopenharmony_ci#define USBD_CSR_EP_DIR_SHIFT 4 101962306a36Sopenharmony_ci#define USBD_CSR_EP_DIR_MASK (1 << USBD_CSR_EP_DIR_SHIFT) 102062306a36Sopenharmony_ci#define USBD_CSR_EP_LOG_SHIFT 0 102162306a36Sopenharmony_ci#define USBD_CSR_EP_LOG_MASK (0xf << USBD_CSR_EP_LOG_SHIFT) 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ci 102462306a36Sopenharmony_ci/************************************************************************* 102562306a36Sopenharmony_ci * _REG relative to RSET_MPI 102662306a36Sopenharmony_ci *************************************************************************/ 102762306a36Sopenharmony_ci 102862306a36Sopenharmony_ci/* well known (hard wired) chip select */ 102962306a36Sopenharmony_ci#define MPI_CS_PCMCIA_COMMON 4 103062306a36Sopenharmony_ci#define MPI_CS_PCMCIA_ATTR 5 103162306a36Sopenharmony_ci#define MPI_CS_PCMCIA_IO 6 103262306a36Sopenharmony_ci 103362306a36Sopenharmony_ci/* Chip select base register */ 103462306a36Sopenharmony_ci#define MPI_CSBASE_REG(x) (0x0 + (x) * 8) 103562306a36Sopenharmony_ci#define MPI_CSBASE_BASE_SHIFT 13 103662306a36Sopenharmony_ci#define MPI_CSBASE_BASE_MASK (0x1ffff << MPI_CSBASE_BASE_SHIFT) 103762306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_SHIFT 0 103862306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_MASK (0xf << MPI_CSBASE_SIZE_SHIFT) 103962306a36Sopenharmony_ci 104062306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_8K 0 104162306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_16K 1 104262306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_32K 2 104362306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_64K 3 104462306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_128K 4 104562306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_256K 5 104662306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_512K 6 104762306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_1M 7 104862306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_2M 8 104962306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_4M 9 105062306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_8M 10 105162306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_16M 11 105262306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_32M 12 105362306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_64M 13 105462306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_128M 14 105562306a36Sopenharmony_ci#define MPI_CSBASE_SIZE_256M 15 105662306a36Sopenharmony_ci 105762306a36Sopenharmony_ci/* Chip select control register */ 105862306a36Sopenharmony_ci#define MPI_CSCTL_REG(x) (0x4 + (x) * 8) 105962306a36Sopenharmony_ci#define MPI_CSCTL_ENABLE_MASK (1 << 0) 106062306a36Sopenharmony_ci#define MPI_CSCTL_WAIT_SHIFT 1 106162306a36Sopenharmony_ci#define MPI_CSCTL_WAIT_MASK (0x7 << MPI_CSCTL_WAIT_SHIFT) 106262306a36Sopenharmony_ci#define MPI_CSCTL_DATA16_MASK (1 << 4) 106362306a36Sopenharmony_ci#define MPI_CSCTL_SYNCMODE_MASK (1 << 7) 106462306a36Sopenharmony_ci#define MPI_CSCTL_TSIZE_MASK (1 << 8) 106562306a36Sopenharmony_ci#define MPI_CSCTL_ENDIANSWAP_MASK (1 << 10) 106662306a36Sopenharmony_ci#define MPI_CSCTL_SETUP_SHIFT 16 106762306a36Sopenharmony_ci#define MPI_CSCTL_SETUP_MASK (0xf << MPI_CSCTL_SETUP_SHIFT) 106862306a36Sopenharmony_ci#define MPI_CSCTL_HOLD_SHIFT 20 106962306a36Sopenharmony_ci#define MPI_CSCTL_HOLD_MASK (0xf << MPI_CSCTL_HOLD_SHIFT) 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ci/* PCI registers */ 107262306a36Sopenharmony_ci#define MPI_SP0_RANGE_REG 0x100 107362306a36Sopenharmony_ci#define MPI_SP0_REMAP_REG 0x104 107462306a36Sopenharmony_ci#define MPI_SP0_REMAP_ENABLE_MASK (1 << 0) 107562306a36Sopenharmony_ci#define MPI_SP1_RANGE_REG 0x10C 107662306a36Sopenharmony_ci#define MPI_SP1_REMAP_REG 0x110 107762306a36Sopenharmony_ci#define MPI_SP1_REMAP_ENABLE_MASK (1 << 0) 107862306a36Sopenharmony_ci 107962306a36Sopenharmony_ci#define MPI_L2PCFG_REG 0x11C 108062306a36Sopenharmony_ci#define MPI_L2PCFG_CFG_TYPE_SHIFT 0 108162306a36Sopenharmony_ci#define MPI_L2PCFG_CFG_TYPE_MASK (0x3 << MPI_L2PCFG_CFG_TYPE_SHIFT) 108262306a36Sopenharmony_ci#define MPI_L2PCFG_REG_SHIFT 2 108362306a36Sopenharmony_ci#define MPI_L2PCFG_REG_MASK (0x3f << MPI_L2PCFG_REG_SHIFT) 108462306a36Sopenharmony_ci#define MPI_L2PCFG_FUNC_SHIFT 8 108562306a36Sopenharmony_ci#define MPI_L2PCFG_FUNC_MASK (0x7 << MPI_L2PCFG_FUNC_SHIFT) 108662306a36Sopenharmony_ci#define MPI_L2PCFG_DEVNUM_SHIFT 11 108762306a36Sopenharmony_ci#define MPI_L2PCFG_DEVNUM_MASK (0x1f << MPI_L2PCFG_DEVNUM_SHIFT) 108862306a36Sopenharmony_ci#define MPI_L2PCFG_CFG_USEREG_MASK (1 << 30) 108962306a36Sopenharmony_ci#define MPI_L2PCFG_CFG_SEL_MASK (1 << 31) 109062306a36Sopenharmony_ci 109162306a36Sopenharmony_ci#define MPI_L2PMEMRANGE1_REG 0x120 109262306a36Sopenharmony_ci#define MPI_L2PMEMBASE1_REG 0x124 109362306a36Sopenharmony_ci#define MPI_L2PMEMREMAP1_REG 0x128 109462306a36Sopenharmony_ci#define MPI_L2PMEMRANGE2_REG 0x12C 109562306a36Sopenharmony_ci#define MPI_L2PMEMBASE2_REG 0x130 109662306a36Sopenharmony_ci#define MPI_L2PMEMREMAP2_REG 0x134 109762306a36Sopenharmony_ci#define MPI_L2PIORANGE_REG 0x138 109862306a36Sopenharmony_ci#define MPI_L2PIOBASE_REG 0x13C 109962306a36Sopenharmony_ci#define MPI_L2PIOREMAP_REG 0x140 110062306a36Sopenharmony_ci#define MPI_L2P_BASE_MASK (0xffff8000) 110162306a36Sopenharmony_ci#define MPI_L2PREMAP_ENABLED_MASK (1 << 0) 110262306a36Sopenharmony_ci#define MPI_L2PREMAP_IS_CARDBUS_MASK (1 << 2) 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ci#define MPI_PCIMODESEL_REG 0x144 110562306a36Sopenharmony_ci#define MPI_PCIMODESEL_BAR1_NOSWAP_MASK (1 << 0) 110662306a36Sopenharmony_ci#define MPI_PCIMODESEL_BAR2_NOSWAP_MASK (1 << 1) 110762306a36Sopenharmony_ci#define MPI_PCIMODESEL_EXT_ARB_MASK (1 << 2) 110862306a36Sopenharmony_ci#define MPI_PCIMODESEL_PREFETCH_SHIFT 4 110962306a36Sopenharmony_ci#define MPI_PCIMODESEL_PREFETCH_MASK (0xf << MPI_PCIMODESEL_PREFETCH_SHIFT) 111062306a36Sopenharmony_ci 111162306a36Sopenharmony_ci#define MPI_LOCBUSCTL_REG 0x14C 111262306a36Sopenharmony_ci#define MPI_LOCBUSCTL_EN_PCI_GPIO_MASK (1 << 0) 111362306a36Sopenharmony_ci#define MPI_LOCBUSCTL_U2P_NOSWAP_MASK (1 << 1) 111462306a36Sopenharmony_ci 111562306a36Sopenharmony_ci#define MPI_LOCINT_REG 0x150 111662306a36Sopenharmony_ci#define MPI_LOCINT_MASK(x) (1 << (x + 16)) 111762306a36Sopenharmony_ci#define MPI_LOCINT_STAT(x) (1 << (x)) 111862306a36Sopenharmony_ci#define MPI_LOCINT_DIR_FAILED 6 111962306a36Sopenharmony_ci#define MPI_LOCINT_EXT_PCI_INT 7 112062306a36Sopenharmony_ci#define MPI_LOCINT_SERR 8 112162306a36Sopenharmony_ci#define MPI_LOCINT_CSERR 9 112262306a36Sopenharmony_ci 112362306a36Sopenharmony_ci#define MPI_PCICFGCTL_REG 0x178 112462306a36Sopenharmony_ci#define MPI_PCICFGCTL_CFGADDR_SHIFT 2 112562306a36Sopenharmony_ci#define MPI_PCICFGCTL_CFGADDR_MASK (0x1f << MPI_PCICFGCTL_CFGADDR_SHIFT) 112662306a36Sopenharmony_ci#define MPI_PCICFGCTL_WRITEEN_MASK (1 << 7) 112762306a36Sopenharmony_ci 112862306a36Sopenharmony_ci#define MPI_PCICFGDATA_REG 0x17C 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_ci/* PCI host bridge custom register */ 113162306a36Sopenharmony_ci#define BCMPCI_REG_TIMERS 0x40 113262306a36Sopenharmony_ci#define REG_TIMER_TRDY_SHIFT 0 113362306a36Sopenharmony_ci#define REG_TIMER_TRDY_MASK (0xff << REG_TIMER_TRDY_SHIFT) 113462306a36Sopenharmony_ci#define REG_TIMER_RETRY_SHIFT 8 113562306a36Sopenharmony_ci#define REG_TIMER_RETRY_MASK (0xff << REG_TIMER_RETRY_SHIFT) 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_ci 113862306a36Sopenharmony_ci/************************************************************************* 113962306a36Sopenharmony_ci * _REG relative to RSET_PCMCIA 114062306a36Sopenharmony_ci *************************************************************************/ 114162306a36Sopenharmony_ci 114262306a36Sopenharmony_ci#define PCMCIA_C1_REG 0x0 114362306a36Sopenharmony_ci#define PCMCIA_C1_CD1_MASK (1 << 0) 114462306a36Sopenharmony_ci#define PCMCIA_C1_CD2_MASK (1 << 1) 114562306a36Sopenharmony_ci#define PCMCIA_C1_VS1_MASK (1 << 2) 114662306a36Sopenharmony_ci#define PCMCIA_C1_VS2_MASK (1 << 3) 114762306a36Sopenharmony_ci#define PCMCIA_C1_VS1OE_MASK (1 << 6) 114862306a36Sopenharmony_ci#define PCMCIA_C1_VS2OE_MASK (1 << 7) 114962306a36Sopenharmony_ci#define PCMCIA_C1_CBIDSEL_SHIFT (8) 115062306a36Sopenharmony_ci#define PCMCIA_C1_CBIDSEL_MASK (0x1f << PCMCIA_C1_CBIDSEL_SHIFT) 115162306a36Sopenharmony_ci#define PCMCIA_C1_EN_PCMCIA_GPIO_MASK (1 << 13) 115262306a36Sopenharmony_ci#define PCMCIA_C1_EN_PCMCIA_MASK (1 << 14) 115362306a36Sopenharmony_ci#define PCMCIA_C1_EN_CARDBUS_MASK (1 << 15) 115462306a36Sopenharmony_ci#define PCMCIA_C1_RESET_MASK (1 << 18) 115562306a36Sopenharmony_ci 115662306a36Sopenharmony_ci#define PCMCIA_C2_REG 0x8 115762306a36Sopenharmony_ci#define PCMCIA_C2_DATA16_MASK (1 << 0) 115862306a36Sopenharmony_ci#define PCMCIA_C2_BYTESWAP_MASK (1 << 1) 115962306a36Sopenharmony_ci#define PCMCIA_C2_RWCOUNT_SHIFT 2 116062306a36Sopenharmony_ci#define PCMCIA_C2_RWCOUNT_MASK (0x3f << PCMCIA_C2_RWCOUNT_SHIFT) 116162306a36Sopenharmony_ci#define PCMCIA_C2_INACTIVE_SHIFT 8 116262306a36Sopenharmony_ci#define PCMCIA_C2_INACTIVE_MASK (0x3f << PCMCIA_C2_INACTIVE_SHIFT) 116362306a36Sopenharmony_ci#define PCMCIA_C2_SETUP_SHIFT 16 116462306a36Sopenharmony_ci#define PCMCIA_C2_SETUP_MASK (0x3f << PCMCIA_C2_SETUP_SHIFT) 116562306a36Sopenharmony_ci#define PCMCIA_C2_HOLD_SHIFT 24 116662306a36Sopenharmony_ci#define PCMCIA_C2_HOLD_MASK (0x3f << PCMCIA_C2_HOLD_SHIFT) 116762306a36Sopenharmony_ci 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci/************************************************************************* 117062306a36Sopenharmony_ci * _REG relative to RSET_SDRAM 117162306a36Sopenharmony_ci *************************************************************************/ 117262306a36Sopenharmony_ci 117362306a36Sopenharmony_ci#define SDRAM_CFG_REG 0x0 117462306a36Sopenharmony_ci#define SDRAM_CFG_ROW_SHIFT 4 117562306a36Sopenharmony_ci#define SDRAM_CFG_ROW_MASK (0x3 << SDRAM_CFG_ROW_SHIFT) 117662306a36Sopenharmony_ci#define SDRAM_CFG_COL_SHIFT 6 117762306a36Sopenharmony_ci#define SDRAM_CFG_COL_MASK (0x3 << SDRAM_CFG_COL_SHIFT) 117862306a36Sopenharmony_ci#define SDRAM_CFG_32B_SHIFT 10 117962306a36Sopenharmony_ci#define SDRAM_CFG_32B_MASK (1 << SDRAM_CFG_32B_SHIFT) 118062306a36Sopenharmony_ci#define SDRAM_CFG_BANK_SHIFT 13 118162306a36Sopenharmony_ci#define SDRAM_CFG_BANK_MASK (1 << SDRAM_CFG_BANK_SHIFT) 118262306a36Sopenharmony_ci 118362306a36Sopenharmony_ci#define SDRAM_MBASE_REG 0xc 118462306a36Sopenharmony_ci 118562306a36Sopenharmony_ci#define SDRAM_PRIO_REG 0x2C 118662306a36Sopenharmony_ci#define SDRAM_PRIO_MIPS_SHIFT 29 118762306a36Sopenharmony_ci#define SDRAM_PRIO_MIPS_MASK (1 << SDRAM_PRIO_MIPS_SHIFT) 118862306a36Sopenharmony_ci#define SDRAM_PRIO_ADSL_SHIFT 30 118962306a36Sopenharmony_ci#define SDRAM_PRIO_ADSL_MASK (1 << SDRAM_PRIO_ADSL_SHIFT) 119062306a36Sopenharmony_ci#define SDRAM_PRIO_EN_SHIFT 31 119162306a36Sopenharmony_ci#define SDRAM_PRIO_EN_MASK (1 << SDRAM_PRIO_EN_SHIFT) 119262306a36Sopenharmony_ci 119362306a36Sopenharmony_ci 119462306a36Sopenharmony_ci/************************************************************************* 119562306a36Sopenharmony_ci * _REG relative to RSET_MEMC 119662306a36Sopenharmony_ci *************************************************************************/ 119762306a36Sopenharmony_ci 119862306a36Sopenharmony_ci#define MEMC_CFG_REG 0x4 119962306a36Sopenharmony_ci#define MEMC_CFG_32B_SHIFT 1 120062306a36Sopenharmony_ci#define MEMC_CFG_32B_MASK (1 << MEMC_CFG_32B_SHIFT) 120162306a36Sopenharmony_ci#define MEMC_CFG_COL_SHIFT 3 120262306a36Sopenharmony_ci#define MEMC_CFG_COL_MASK (0x3 << MEMC_CFG_COL_SHIFT) 120362306a36Sopenharmony_ci#define MEMC_CFG_ROW_SHIFT 6 120462306a36Sopenharmony_ci#define MEMC_CFG_ROW_MASK (0x3 << MEMC_CFG_ROW_SHIFT) 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_ci/************************************************************************* 120862306a36Sopenharmony_ci * _REG relative to RSET_DDR 120962306a36Sopenharmony_ci *************************************************************************/ 121062306a36Sopenharmony_ci 121162306a36Sopenharmony_ci#define DDR_CSEND_REG 0x8 121262306a36Sopenharmony_ci 121362306a36Sopenharmony_ci#define DDR_DMIPSPLLCFG_REG 0x18 121462306a36Sopenharmony_ci#define DMIPSPLLCFG_M1_SHIFT 0 121562306a36Sopenharmony_ci#define DMIPSPLLCFG_M1_MASK (0xff << DMIPSPLLCFG_M1_SHIFT) 121662306a36Sopenharmony_ci#define DMIPSPLLCFG_N1_SHIFT 23 121762306a36Sopenharmony_ci#define DMIPSPLLCFG_N1_MASK (0x3f << DMIPSPLLCFG_N1_SHIFT) 121862306a36Sopenharmony_ci#define DMIPSPLLCFG_N2_SHIFT 29 121962306a36Sopenharmony_ci#define DMIPSPLLCFG_N2_MASK (0x7 << DMIPSPLLCFG_N2_SHIFT) 122062306a36Sopenharmony_ci 122162306a36Sopenharmony_ci#define DDR_DMIPSPLLCFG_6368_REG 0x20 122262306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_P1_SHIFT 0 122362306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_P1_MASK (0xf << DMIPSPLLCFG_6368_P1_SHIFT) 122462306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_P2_SHIFT 4 122562306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_P2_MASK (0xf << DMIPSPLLCFG_6368_P2_SHIFT) 122662306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_NDIV_SHIFT 16 122762306a36Sopenharmony_ci#define DMIPSPLLCFG_6368_NDIV_MASK (0x1ff << DMIPSPLLCFG_6368_NDIV_SHIFT) 122862306a36Sopenharmony_ci 122962306a36Sopenharmony_ci#define DDR_DMIPSPLLDIV_6368_REG 0x24 123062306a36Sopenharmony_ci#define DMIPSPLLDIV_6368_MDIV_SHIFT 0 123162306a36Sopenharmony_ci#define DMIPSPLLDIV_6368_MDIV_MASK (0xff << DMIPSPLLDIV_6368_MDIV_SHIFT) 123262306a36Sopenharmony_ci 123362306a36Sopenharmony_ci 123462306a36Sopenharmony_ci/************************************************************************* 123562306a36Sopenharmony_ci * _REG relative to RSET_M2M 123662306a36Sopenharmony_ci *************************************************************************/ 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ci#define M2M_RX 0 123962306a36Sopenharmony_ci#define M2M_TX 1 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_ci#define M2M_SRC_REG(x) ((x) * 0x40 + 0x00) 124262306a36Sopenharmony_ci#define M2M_DST_REG(x) ((x) * 0x40 + 0x04) 124362306a36Sopenharmony_ci#define M2M_SIZE_REG(x) ((x) * 0x40 + 0x08) 124462306a36Sopenharmony_ci 124562306a36Sopenharmony_ci#define M2M_CTRL_REG(x) ((x) * 0x40 + 0x0c) 124662306a36Sopenharmony_ci#define M2M_CTRL_ENABLE_MASK (1 << 0) 124762306a36Sopenharmony_ci#define M2M_CTRL_IRQEN_MASK (1 << 1) 124862306a36Sopenharmony_ci#define M2M_CTRL_ERROR_CLR_MASK (1 << 6) 124962306a36Sopenharmony_ci#define M2M_CTRL_DONE_CLR_MASK (1 << 7) 125062306a36Sopenharmony_ci#define M2M_CTRL_NOINC_MASK (1 << 8) 125162306a36Sopenharmony_ci#define M2M_CTRL_PCMCIASWAP_MASK (1 << 9) 125262306a36Sopenharmony_ci#define M2M_CTRL_SWAPBYTE_MASK (1 << 10) 125362306a36Sopenharmony_ci#define M2M_CTRL_ENDIAN_MASK (1 << 11) 125462306a36Sopenharmony_ci 125562306a36Sopenharmony_ci#define M2M_STAT_REG(x) ((x) * 0x40 + 0x10) 125662306a36Sopenharmony_ci#define M2M_STAT_DONE (1 << 0) 125762306a36Sopenharmony_ci#define M2M_STAT_ERROR (1 << 1) 125862306a36Sopenharmony_ci 125962306a36Sopenharmony_ci#define M2M_SRCID_REG(x) ((x) * 0x40 + 0x14) 126062306a36Sopenharmony_ci#define M2M_DSTID_REG(x) ((x) * 0x40 + 0x18) 126162306a36Sopenharmony_ci 126262306a36Sopenharmony_ci/************************************************************************* 126362306a36Sopenharmony_ci * _REG relative to RSET_SPI 126462306a36Sopenharmony_ci *************************************************************************/ 126562306a36Sopenharmony_ci 126662306a36Sopenharmony_ci/* BCM 6338/6348 SPI core */ 126762306a36Sopenharmony_ci#define SPI_6348_CMD 0x00 /* 16-bits register */ 126862306a36Sopenharmony_ci#define SPI_6348_INT_STATUS 0x02 126962306a36Sopenharmony_ci#define SPI_6348_INT_MASK_ST 0x03 127062306a36Sopenharmony_ci#define SPI_6348_INT_MASK 0x04 127162306a36Sopenharmony_ci#define SPI_6348_ST 0x05 127262306a36Sopenharmony_ci#define SPI_6348_CLK_CFG 0x06 127362306a36Sopenharmony_ci#define SPI_6348_FILL_BYTE 0x07 127462306a36Sopenharmony_ci#define SPI_6348_MSG_TAIL 0x09 127562306a36Sopenharmony_ci#define SPI_6348_RX_TAIL 0x0b 127662306a36Sopenharmony_ci#define SPI_6348_MSG_CTL 0x40 /* 8-bits register */ 127762306a36Sopenharmony_ci#define SPI_6348_MSG_CTL_WIDTH 8 127862306a36Sopenharmony_ci#define SPI_6348_MSG_DATA 0x41 127962306a36Sopenharmony_ci#define SPI_6348_MSG_DATA_SIZE 0x3f 128062306a36Sopenharmony_ci#define SPI_6348_RX_DATA 0x80 128162306a36Sopenharmony_ci#define SPI_6348_RX_DATA_SIZE 0x3f 128262306a36Sopenharmony_ci 128362306a36Sopenharmony_ci/* BCM 3368/6358/6262/6368 SPI core */ 128462306a36Sopenharmony_ci#define SPI_6358_MSG_CTL 0x00 /* 16-bits register */ 128562306a36Sopenharmony_ci#define SPI_6358_MSG_CTL_WIDTH 16 128662306a36Sopenharmony_ci#define SPI_6358_MSG_DATA 0x02 128762306a36Sopenharmony_ci#define SPI_6358_MSG_DATA_SIZE 0x21e 128862306a36Sopenharmony_ci#define SPI_6358_RX_DATA 0x400 128962306a36Sopenharmony_ci#define SPI_6358_RX_DATA_SIZE 0x220 129062306a36Sopenharmony_ci#define SPI_6358_CMD 0x700 /* 16-bits register */ 129162306a36Sopenharmony_ci#define SPI_6358_INT_STATUS 0x702 129262306a36Sopenharmony_ci#define SPI_6358_INT_MASK_ST 0x703 129362306a36Sopenharmony_ci#define SPI_6358_INT_MASK 0x704 129462306a36Sopenharmony_ci#define SPI_6358_ST 0x705 129562306a36Sopenharmony_ci#define SPI_6358_CLK_CFG 0x706 129662306a36Sopenharmony_ci#define SPI_6358_FILL_BYTE 0x707 129762306a36Sopenharmony_ci#define SPI_6358_MSG_TAIL 0x709 129862306a36Sopenharmony_ci#define SPI_6358_RX_TAIL 0x70B 129962306a36Sopenharmony_ci 130062306a36Sopenharmony_ci/* Shared SPI definitions */ 130162306a36Sopenharmony_ci 130262306a36Sopenharmony_ci/* Message configuration */ 130362306a36Sopenharmony_ci#define SPI_FD_RW 0x00 130462306a36Sopenharmony_ci#define SPI_HD_W 0x01 130562306a36Sopenharmony_ci#define SPI_HD_R 0x02 130662306a36Sopenharmony_ci#define SPI_BYTE_CNT_SHIFT 0 130762306a36Sopenharmony_ci#define SPI_6348_MSG_TYPE_SHIFT 6 130862306a36Sopenharmony_ci#define SPI_6358_MSG_TYPE_SHIFT 14 130962306a36Sopenharmony_ci 131062306a36Sopenharmony_ci/* Command */ 131162306a36Sopenharmony_ci#define SPI_CMD_NOOP 0x00 131262306a36Sopenharmony_ci#define SPI_CMD_SOFT_RESET 0x01 131362306a36Sopenharmony_ci#define SPI_CMD_HARD_RESET 0x02 131462306a36Sopenharmony_ci#define SPI_CMD_START_IMMEDIATE 0x03 131562306a36Sopenharmony_ci#define SPI_CMD_COMMAND_SHIFT 0 131662306a36Sopenharmony_ci#define SPI_CMD_COMMAND_MASK 0x000f 131762306a36Sopenharmony_ci#define SPI_CMD_DEVICE_ID_SHIFT 4 131862306a36Sopenharmony_ci#define SPI_CMD_PREPEND_BYTE_CNT_SHIFT 8 131962306a36Sopenharmony_ci#define SPI_CMD_ONE_BYTE_SHIFT 11 132062306a36Sopenharmony_ci#define SPI_CMD_ONE_WIRE_SHIFT 12 132162306a36Sopenharmony_ci#define SPI_DEV_ID_0 0 132262306a36Sopenharmony_ci#define SPI_DEV_ID_1 1 132362306a36Sopenharmony_ci#define SPI_DEV_ID_2 2 132462306a36Sopenharmony_ci#define SPI_DEV_ID_3 3 132562306a36Sopenharmony_ci 132662306a36Sopenharmony_ci/* Interrupt mask */ 132762306a36Sopenharmony_ci#define SPI_INTR_CMD_DONE 0x01 132862306a36Sopenharmony_ci#define SPI_INTR_RX_OVERFLOW 0x02 132962306a36Sopenharmony_ci#define SPI_INTR_TX_UNDERFLOW 0x04 133062306a36Sopenharmony_ci#define SPI_INTR_TX_OVERFLOW 0x08 133162306a36Sopenharmony_ci#define SPI_INTR_RX_UNDERFLOW 0x10 133262306a36Sopenharmony_ci#define SPI_INTR_CLEAR_ALL 0x1f 133362306a36Sopenharmony_ci 133462306a36Sopenharmony_ci/* Status */ 133562306a36Sopenharmony_ci#define SPI_RX_EMPTY 0x02 133662306a36Sopenharmony_ci#define SPI_CMD_BUSY 0x04 133762306a36Sopenharmony_ci#define SPI_SERIAL_BUSY 0x08 133862306a36Sopenharmony_ci 133962306a36Sopenharmony_ci/* Clock configuration */ 134062306a36Sopenharmony_ci#define SPI_CLK_20MHZ 0x00 134162306a36Sopenharmony_ci#define SPI_CLK_0_391MHZ 0x01 134262306a36Sopenharmony_ci#define SPI_CLK_0_781MHZ 0x02 /* default */ 134362306a36Sopenharmony_ci#define SPI_CLK_1_563MHZ 0x03 134462306a36Sopenharmony_ci#define SPI_CLK_3_125MHZ 0x04 134562306a36Sopenharmony_ci#define SPI_CLK_6_250MHZ 0x05 134662306a36Sopenharmony_ci#define SPI_CLK_12_50MHZ 0x06 134762306a36Sopenharmony_ci#define SPI_CLK_MASK 0x07 134862306a36Sopenharmony_ci#define SPI_SSOFFTIME_MASK 0x38 134962306a36Sopenharmony_ci#define SPI_SSOFFTIME_SHIFT 3 135062306a36Sopenharmony_ci#define SPI_BYTE_SWAP 0x80 135162306a36Sopenharmony_ci 135262306a36Sopenharmony_ci/************************************************************************* 135362306a36Sopenharmony_ci * _REG relative to RSET_MISC 135462306a36Sopenharmony_ci *************************************************************************/ 135562306a36Sopenharmony_ci#define MISC_SERDES_CTRL_6328_REG 0x0 135662306a36Sopenharmony_ci#define MISC_SERDES_CTRL_6362_REG 0x4 135762306a36Sopenharmony_ci#define SERDES_PCIE_EN (1 << 0) 135862306a36Sopenharmony_ci#define SERDES_PCIE_EXD_EN (1 << 15) 135962306a36Sopenharmony_ci 136062306a36Sopenharmony_ci#define MISC_STRAPBUS_6362_REG 0x14 136162306a36Sopenharmony_ci#define STRAPBUS_6362_FCVO_SHIFT 1 136262306a36Sopenharmony_ci#define STRAPBUS_6362_HSSPI_CLK_FAST (1 << 13) 136362306a36Sopenharmony_ci#define STRAPBUS_6362_FCVO_MASK (0x1f << STRAPBUS_6362_FCVO_SHIFT) 136462306a36Sopenharmony_ci#define STRAPBUS_6362_BOOT_SEL_SERIAL (1 << 15) 136562306a36Sopenharmony_ci#define STRAPBUS_6362_BOOT_SEL_NAND (0 << 15) 136662306a36Sopenharmony_ci 136762306a36Sopenharmony_ci#define MISC_STRAPBUS_6328_REG 0x240 136862306a36Sopenharmony_ci#define STRAPBUS_6328_FCVO_SHIFT 7 136962306a36Sopenharmony_ci#define STRAPBUS_6328_FCVO_MASK (0x1f << STRAPBUS_6328_FCVO_SHIFT) 137062306a36Sopenharmony_ci#define STRAPBUS_6328_BOOT_SEL_SERIAL (1 << 18) 137162306a36Sopenharmony_ci#define STRAPBUS_6328_BOOT_SEL_NAND (0 << 18) 137262306a36Sopenharmony_ci 137362306a36Sopenharmony_ci/************************************************************************* 137462306a36Sopenharmony_ci * _REG relative to RSET_PCIE 137562306a36Sopenharmony_ci *************************************************************************/ 137662306a36Sopenharmony_ci 137762306a36Sopenharmony_ci#define PCIE_CONFIG2_REG 0x408 137862306a36Sopenharmony_ci#define CONFIG2_BAR1_SIZE_EN 1 137962306a36Sopenharmony_ci#define CONFIG2_BAR1_SIZE_MASK 0xf 138062306a36Sopenharmony_ci 138162306a36Sopenharmony_ci#define PCIE_IDVAL3_REG 0x43c 138262306a36Sopenharmony_ci#define IDVAL3_CLASS_CODE_MASK 0xffffff 138362306a36Sopenharmony_ci 138462306a36Sopenharmony_ci#define PCIE_DLSTATUS_REG 0x1048 138562306a36Sopenharmony_ci#define DLSTATUS_PHYLINKUP (1 << 13) 138662306a36Sopenharmony_ci 138762306a36Sopenharmony_ci#define PCIE_BRIDGE_OPT1_REG 0x2820 138862306a36Sopenharmony_ci#define OPT1_RD_BE_OPT_EN (1 << 7) 138962306a36Sopenharmony_ci#define OPT1_RD_REPLY_BE_FIX_EN (1 << 9) 139062306a36Sopenharmony_ci#define OPT1_PCIE_BRIDGE_HOLE_DET_EN (1 << 11) 139162306a36Sopenharmony_ci#define OPT1_L1_INT_STATUS_MASK_POL (1 << 12) 139262306a36Sopenharmony_ci 139362306a36Sopenharmony_ci#define PCIE_BRIDGE_OPT2_REG 0x2824 139462306a36Sopenharmony_ci#define OPT2_UBUS_UR_DECODE_DIS (1 << 2) 139562306a36Sopenharmony_ci#define OPT2_TX_CREDIT_CHK_EN (1 << 4) 139662306a36Sopenharmony_ci#define OPT2_CFG_TYPE1_BD_SEL (1 << 7) 139762306a36Sopenharmony_ci#define OPT2_CFG_TYPE1_BUS_NO_SHIFT 16 139862306a36Sopenharmony_ci#define OPT2_CFG_TYPE1_BUS_NO_MASK (0xff << OPT2_CFG_TYPE1_BUS_NO_SHIFT) 139962306a36Sopenharmony_ci 140062306a36Sopenharmony_ci#define PCIE_BRIDGE_BAR0_BASEMASK_REG 0x2828 140162306a36Sopenharmony_ci#define PCIE_BRIDGE_BAR1_BASEMASK_REG 0x2830 140262306a36Sopenharmony_ci#define BASEMASK_REMAP_EN (1 << 0) 140362306a36Sopenharmony_ci#define BASEMASK_SWAP_EN (1 << 1) 140462306a36Sopenharmony_ci#define BASEMASK_MASK_SHIFT 4 140562306a36Sopenharmony_ci#define BASEMASK_MASK_MASK (0xfff << BASEMASK_MASK_SHIFT) 140662306a36Sopenharmony_ci#define BASEMASK_BASE_SHIFT 20 140762306a36Sopenharmony_ci#define BASEMASK_BASE_MASK (0xfff << BASEMASK_BASE_SHIFT) 140862306a36Sopenharmony_ci 140962306a36Sopenharmony_ci#define PCIE_BRIDGE_BAR0_REBASE_ADDR_REG 0x282c 141062306a36Sopenharmony_ci#define PCIE_BRIDGE_BAR1_REBASE_ADDR_REG 0x2834 141162306a36Sopenharmony_ci#define REBASE_ADDR_BASE_SHIFT 20 141262306a36Sopenharmony_ci#define REBASE_ADDR_BASE_MASK (0xfff << REBASE_ADDR_BASE_SHIFT) 141362306a36Sopenharmony_ci 141462306a36Sopenharmony_ci#define PCIE_BRIDGE_RC_INT_MASK_REG 0x2854 141562306a36Sopenharmony_ci#define PCIE_RC_INT_A (1 << 0) 141662306a36Sopenharmony_ci#define PCIE_RC_INT_B (1 << 1) 141762306a36Sopenharmony_ci#define PCIE_RC_INT_C (1 << 2) 141862306a36Sopenharmony_ci#define PCIE_RC_INT_D (1 << 3) 141962306a36Sopenharmony_ci 142062306a36Sopenharmony_ci#define PCIE_DEVICE_OFFSET 0x8000 142162306a36Sopenharmony_ci 142262306a36Sopenharmony_ci/************************************************************************* 142362306a36Sopenharmony_ci * _REG relative to RSET_OTP 142462306a36Sopenharmony_ci *************************************************************************/ 142562306a36Sopenharmony_ci 142662306a36Sopenharmony_ci#define OTP_USER_BITS_6328_REG(i) (0x20 + (i) * 4) 142762306a36Sopenharmony_ci#define OTP_6328_REG3_TP1_DISABLED BIT(9) 142862306a36Sopenharmony_ci 142962306a36Sopenharmony_ci#endif /* BCM63XX_REGS_H_ */ 1430