Add Broadcom / Netgear changes from RAXE 1.0.0.48
[project/bcm63xx/u-boot.git] / arch / arm / include / asm / arch-bcm6856 / misc.h
1 /* SPDX-License-Identifier: GPL-2.0+
2 *
3 * Copyright 2019 Broadcom Ltd.
4 */
5
6 #ifndef _6856_MISC_H
7 #define _6856_MISC_H
8 /*
9 * Gpio Controller
10 */
11 typedef struct GpioControl {
12 uint32_t GPIODir[8]; /* 0x00-0x1f */
13 uint32_t GPIOio[8]; /* 0x20-0x3f */
14 uint32_t PadCtrl; /* 0x40 */
15 uint32_t SpiSlaveCfg; /* 0x44 */
16 uint32_t TestControl; /* 0x48 */
17 uint32_t TestPortBlockEnMSB; /* 0x4c */
18 uint32_t TestPortBlockEnLSB; /* 0x50 */
19 uint32_t TestPortBlockDataMSB; /* 0x54 */
20 uint32_t TestPortBlockDataLSB; /* 0x58 */
21 #define PINMUX_DATA_SHIFT 12
22 #define PINMUX_0 0
23 #define PINMUX_1 1
24 #define PINMUX_2 2
25 #define PINMUX_3 3
26 #define PINMUX_4 4
27 #define PINMUX_5 5
28 #define PINMUX_6 6
29 #define PINMUX_7 7
30 uint32_t TestPortCmd; /* 0x5c */
31 #define LOAD_MUX_REG_CMD 0x21
32 #define LOAD_PAD_CTRL_CMD 0x22
33 uint32_t DiagReadBack; /* 0x60 */
34 uint32_t DiagReadBackHi; /* 0x64 */
35 uint32_t GeneralPurpose; /* 0x68 */
36 uint32_t spare[3];
37 } GpioControl;
38
39 #define GPIO ((volatile GpioControl * const) GPIO_BASE)
40
41 /* Number to mask conversion macro used for GPIODir and GPIOio */
42 #define GPIO_NUM_MAX 84 /* accoring to pinmuxing table */
43 #define GPIO_NUM_TO_ARRAY_IDX(X) (((X & BP_GPIO_NUM_MASK) < GPIO_NUM_MAX) ? (((X & BP_GPIO_NUM_MASK) >> 5) & 0x0f) : (0))
44 #define GPIO_NUM_TO_MASK(X) (((X & BP_GPIO_NUM_MASK) < GPIO_NUM_MAX) ? (1 << ((X & BP_GPIO_NUM_MASK) & 0x1f)) : (0))
45 #define GPIO_NUM_TO_ARRAY_SHIFT(X) (((X) & BP_GPIO_NUM_MASK) & 0x1f)
46
47 /*
48 ** Misc Register Set Definitions.
49 */
50
51 typedef struct Misc {
52 uint32_t miscStrapBus; /* 0x00 */
53 #define MISC_STRAP_BUS_BOOT_SEL_SHIFT 5
54 #define MISC_STRAP_BUS_BOOT_SEL_MASK (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
55 #define MISC_STRAP_BUS_BOOT_SPI_NOR (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
56 #define MISC_STRAP_BUS_BOOT_EMMC (0x30 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
57 #define MISC_STRAP_BUS_BOOT_SPI_NAND (0x28 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
58 #define MISC_STRAP_BUS_BOOT_SEL_NAND_MASK (0x20 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
59 #define MISC_STRAP_BUS_BOOT_NAND (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
60 #define MISC_STRAP_BUS_BOOT_SEL_PAGE_MASK (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
61 #define MISC_STRAP_BUS_BOOT_NAND_2K_PAGE (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
62 #define MISC_STRAP_BUS_BOOT_NAND_4K_PAGE (0x08 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
63 #define MISC_STRAP_BUS_BOOT_NAND_8K_PAGE (0x10 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
64 #define MISC_STRAP_BUS_BOOT_NAND_512_PAGE (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
65 #define MISC_STRAP_BUS_BOOT_SEL_ECC_MASK (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
66 #define MISC_STRAP_BUS_BOOT_NAND_ECC_DISABLE (0x0 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
67 #define MISC_STRAP_BUS_BOOT_NAND_ECC_1_BIT (0x1 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
68 #define MISC_STRAP_BUS_BOOT_NAND_ECC_4_BIT (0x2 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
69 #define MISC_STRAP_BUS_BOOT_NAND_ECC_8_BIT (0x3 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
70 #define MISC_STRAP_BUS_BOOT_NAND_ECC_12_BIT (0x4 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
71 #define MISC_STRAP_BUS_BOOT_NAND_ECC_24_BIT (0x5 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
72 #define MISC_STRAP_BUS_BOOT_NAND_ECC_40_BIT (0x6 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
73 #define MISC_STRAP_BUS_BOOT_NAND_ECC_60_BIT (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT)
74 #define MISC_STRAP_BUS_BOOTROM_BOOT_N (0x1 << 11)
75
76 uint32_t miscStrapOverride; /* 0x04 */
77 uint32_t miscMaskUBUSErr; /* 0x08 */
78 uint32_t miscPeriphCtrl; /* 0x0c */
79 uint32_t miscSPImasterCtrl; /* 0x10 */
80 uint32_t miscDierevid; /* 0x14 */
81 uint32_t miscPeriphMiscCtrl; /* 0x18 */
82 uint32_t miscPeriphMiscStat; /* 0x1c */
83 uint32_t miscMbox0_data; /* 0x20 */
84 uint32_t miscMbox1_data; /* 0x24 */
85 uint32_t miscMbox2_data; /* 0x28 */
86 uint32_t miscMbox3_data; /* 0x2c */
87 uint32_t miscMbox_ctrl; /* 0x30 */
88 uint32_t miscSoftResetB; /* 0x34 */
89 uint32_t miscSpare0; /* 0x38 */
90 uint32_t miscSWdebugNW[2]; /* 0x3c-0x40 */
91 uint32_t miscWDenReset; /* 0x44 */
92 } Misc;
93
94 #define MISC_BASE 0xff802600
95 #define MISC ((volatile Misc * const) MISC_BASE)
96
97 // PERF
98 typedef struct PerfControl { /* GenInt */
99 uint32_t RevID; /* (00) word 0 */
100 #define CHIP_ID_SHIFT 12
101 #define CHIP_ID_MASK (0xfffff << CHIP_ID_SHIFT)
102 #define REV_ID_MASK 0xff
103 } PerfControl;
104
105 #define PERF_BASE 0xff800000
106 #define PERF ((volatile PerfControl * const) PERF_BASE)
107
108 #endif