Add Broadcom / Netgear changes from RAXE 1.0.0.48
[project/bcm63xx/u-boot.git] / arch / arm / include / asm / arch-bcm6846 / misc.h
1 /* SPDX-License-Identifier: GPL-2.0+
2 *
3 * Copyright 2019 Broadcom Ltd.
4 */
5
6 #ifndef _6846_MISC_H
7 #define _6846_MISC_H
8
9 /*
10 * Gpio Controller
11 */
12 typedef struct GpioControl {
13 uint32_t GPIODir[8]; /* 0x00-0x1c */
14 uint32_t GPIOio[8]; /* 0x20-0x3c */
15 uint32_t PadCtrl; /* 0x40 */
16 uint32_t SpiSlaveCfg; /* 0x44 */
17 uint32_t TestControl; /* 0x48 */
18 uint32_t TestPortBlockEnMSB; /* 0x4c */
19 uint32_t TestPortBlockEnLSB; /* 0x50 */
20 uint32_t TestPortBlockDataMSB; /* 0x54 */
21 uint32_t TestPortBlockDataLSB; /* 0x58 */
22 #define PINMUX_DATA_SHIFT 12
23 #define PINMUX_0 0
24 #define PINMUX_1 1
25 #define PINMUX_2 2
26 #define PINMUX_3 3
27 #define PINMUX_4 4
28 #define PINMUX_5 5
29 #define PINMUX_6 6
30 #define PINMUX_7 7
31 #define PAD_CTRL_SHIFT 12
32 #define PAD_CTRL_MASK (0x3f<<PAD_CTRL_SHIFT)
33 #define PAD_SEL_SHIFT 12
34 #define PAD_AMP_SHIFT 15
35 #define PAD_IND_SHIFT 16
36 #define PAD_GMII_SHIFT 17
37 uint32_t TestPortCmd; /* 0x5c */
38 #define LOAD_MUX_REG_CMD 0x21
39 #define LOAD_PAD_CTRL_CMD 0x22
40 uint32_t DiagReadBack; /* 0x60 */
41 uint32_t DiagReadBackHi; /* 0x64 */
42 uint32_t GeneralPurpose; /* 0x68 */
43 uint32_t spare[3];
44 } GpioControl;
45
46 #define GPIO_BASE 0xff800500
47 #define GPIO ((volatile GpioControl * const) GPIO_BASE)
48 /*
49 ** Misc Register Set Definitions.
50 */
51
52 typedef struct Misc {
53 uint32_t miscStrapBus; /* 0x00 */
54 #define MISC_STRAP_BUS_BOOT_SEL_SHIFT 5
55 #define MISC_STRAP_BUS_BOOT_SEL_MASK (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
56 #define MISC_STRAP_BUS_BOOT_SPI_NOR (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
57 #define MISC_STRAP_BUS_BOOT_EMMC (0x30 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
58 #define MISC_STRAP_BUS_BOOT_SPI_NAND (0x28 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
59 #define MISC_STRAP_BUS_BOOT_SEL_NAND_MASK (0x20 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
60 #define MISC_STRAP_BUS_BOOT_NAND (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
61 #define MISC_STRAP_BUS_BOOT_SEL_PAGE_MASK (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
62 #define MISC_STRAP_BUS_BOOT_NAND_2K_PAGE (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
63 #define MISC_STRAP_BUS_BOOT_NAND_4K_PAGE (0x08 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
64 #define MISC_STRAP_BUS_BOOT_NAND_8K_PAGE (0x10 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
65 #define MISC_STRAP_BUS_BOOT_NAND_512_PAGE (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
66 #define MISC_STRAP_BUS_BOOT_SEL_ECC_MASK (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
67 #define MISC_STRAP_BUS_BOOT_NAND_ECC_DISABLE (0x0 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
68 #define MISC_STRAP_BUS_BOOT_NAND_ECC_1_BIT (0x1 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
69 #define MISC_STRAP_BUS_BOOT_NAND_ECC_4_BIT (0x2 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
70 #define MISC_STRAP_BUS_BOOT_NAND_ECC_8_BIT (0x3 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
71 #define MISC_STRAP_BUS_BOOT_NAND_ECC_12_BIT (0x4 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
72 #define MISC_STRAP_BUS_BOOT_NAND_ECC_24_BIT (0x5 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
73 #define MISC_STRAP_BUS_BOOT_NAND_ECC_40_BIT (0x6 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
74 #define MISC_STRAP_BUS_BOOT_NAND_ECC_60_BIT (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
75 #define MISC_STRAP_BUS_BOOTROM_BOOT_N (0x1 << 11)
76
77 #define MISC_STRAP_BUS_PCIE_SATA_MASK (1 << 3) /* 1-PCI 0-SATA */
78 #define MISC_STRAP_BUS_B53_NO_BOOT (1 << 12) /* 1-PMC boot A53, 0-A53 boots at POR */
79 #define MISC_STRAP_DDR_DENSITY_SHIFT 18
80 #define MISC_STRAP_DDR_DENSITY_MASK (3 << MISC_STRAP_DDR_DENSITY_SHIFT) /* 0=1Gb, 1=2Gb, 2=8Gb, 3=4Gb */
81 #define MISC_STRAP_BUS_PMC_BOOT_AVS (1 << 20) /* 1 = PMC run AVS */
82 #define MISC_STRAP_BUS_PMC_BOOT_FLASH_N (1 << 21) /* 1 = PMC boot from rom */
83 #define MISC_STRAP_DDR_FREQ_SHIFT 27
84 #define MISC_STRAP_DDR_FREQ_MASK (1 << MISC_STRAP_DDR_FREQ_SHIFT) /* 1-800MHz, 0-533MHz */
85 #define MISC_STRAP_BUS_PCIE_SINGLE_LANES_SHIFT 29
86 #define MISC_STRAP_BUS_PCIE_SINGLE_LANES (1 << MISC_STRAP_BUS_PCIE_SINGLE_LANES_SHIFT) /* 1-Single Lanes 0-Dual Lanes */
87 #define MISC_STRAP_ENABLE_INT_1p8V (1 << 1)
88
89 uint32_t miscStrapOverride; /* 0x04 */
90 uint32_t miscMaskUBUSErr; /* 0x08 */
91 uint32_t miscPeriphCtrl; /* 0x0c */
92 uint32_t miscSPImasterCtrl; /* 0x10 */
93 uint32_t miscDierevid; /* 0x14 */
94 uint32_t miscPeriphMiscCtrl; /* 0x18 */
95 uint32_t miscPeriphMiscStat; /* 0x1c */
96 uint32_t miscMbox0_data; /* 0x20 */
97 uint32_t miscMbox1_data; /* 0x24 */
98 uint32_t miscMbox2_data; /* 0x28 */
99 uint32_t miscMbox3_data; /* 0x2c */
100 uint32_t miscMbox_ctrl; /* 0x30 */
101 uint32_t miscSoftResetB; /* 0x34 */
102 uint32_t reserved0; /* 0x38 */
103 uint32_t miscSWdebugNW[2]; /* 0x3c */
104 uint32_t miscWDresetCtrl; /* 0x44 */
105 } Misc;
106
107 #define MISC_BASE 0xff802600
108 #define MISC ((volatile Misc * const) MISC_BASE)
109
110 // PERF
111 typedef struct PerfControl { /* GenInt */
112 uint32_t RevID; /* (00) word 0 */
113 #define CHIP_ID_SHIFT 12
114 #define CHIP_ID_MASK (0xfffff << CHIP_ID_SHIFT)
115 #define REV_ID_MASK 0xff
116 } PerfControl;
117
118 #define PERF_BASE 0xff800000
119 #define PERF ((volatile PerfControl * const) PERF_BASE)
120
121 #endif