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