"Das U-Boot" Source Tree

arm: nuvoton: Add support for Nuvoton NPCM845 BMC

Add basic support for the Nuvoton NPCM845 EVB (Arbel).

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>

authored by

Jim Liu and committed by
Tom Rini
9ca71c9c d0fc8182

+1112
+1
arch/arm/dts/Makefile
··· 1252 1252 mt8518-ap1-emmc.dtb 1253 1253 1254 1254 dtb-$(CONFIG_ARCH_NPCM7xx) += nuvoton-npcm750-evb.dtb 1255 + dtb-$(CONFIG_ARCH_NPCM8XX) += nuvoton-npcm845-evb.dtb 1255 1256 dtb-$(CONFIG_XEN) += xenguest-arm64.dtb 1256 1257 1257 1258 dtb-$(CONFIG_ARCH_OCTEONTX) += octeontx.dtb
+170
arch/arm/dts/nuvoton-common-npcm8xx.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // Copyright (c) 2021 Nuvoton Technology tomer.maimon@nuvoton.com 3 + 4 + #include <dt-bindings/clock/nuvoton,npcm845-clk.h> 5 + #include <dt-bindings/interrupt-controller/arm-gic.h> 6 + #include <dt-bindings/interrupt-controller/irq.h> 7 + 8 + / { 9 + #address-cells = <2>; 10 + #size-cells = <2>; 11 + interrupt-parent = <&gic>; 12 + 13 + soc { 14 + #address-cells = <2>; 15 + #size-cells = <2>; 16 + compatible = "simple-bus"; 17 + interrupt-parent = <&gic>; 18 + ranges; 19 + 20 + gcr: system-controller@f0800000 { 21 + compatible = "nuvoton,npcm845-gcr", "syscon"; 22 + reg = <0x0 0xf0800000 0x0 0x1000>; 23 + }; 24 + 25 + gic: interrupt-controller@dfff9000 { 26 + compatible = "arm,gic-400"; 27 + reg = <0x0 0xdfff9000 0x0 0x1000>, 28 + <0x0 0xdfffa000 0x0 0x2000>, 29 + <0x0 0xdfffc000 0x0 0x2000>, 30 + <0x0 0xdfffe000 0x0 0x2000>; 31 + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 32 + #interrupt-cells = <3>; 33 + interrupt-controller; 34 + #address-cells = <0>; 35 + ppi-partitions { 36 + ppi_cluster0: interrupt-partition-0 { 37 + affinity = <&cpu0 &cpu1 &cpu2 &cpu3>; 38 + }; 39 + }; 40 + }; 41 + }; 42 + 43 + ahb { 44 + #address-cells = <2>; 45 + #size-cells = <2>; 46 + compatible = "simple-bus"; 47 + interrupt-parent = <&gic>; 48 + ranges; 49 + 50 + rstc: reset-controller@f0801000 { 51 + compatible = "nuvoton,npcm845-reset"; 52 + reg = <0x0 0xf0801000 0x0 0x78>; 53 + #reset-cells = <2>; 54 + nuvoton,sysgcr = <&gcr>; 55 + }; 56 + 57 + clk: clock-controller@f0801000 { 58 + compatible = "nuvoton,npcm845-clk"; 59 + #clock-cells = <1>; 60 + reg = <0x0 0xf0801000 0x0 0x1000>; 61 + }; 62 + 63 + apb { 64 + #address-cells = <1>; 65 + #size-cells = <1>; 66 + compatible = "simple-bus"; 67 + interrupt-parent = <&gic>; 68 + ranges = <0x0 0x0 0xf0000000 0x00300000>, 69 + <0xfff00000 0x0 0xfff00000 0x00016000>; 70 + 71 + timer0: timer@8000 { 72 + compatible = "nuvoton,npcm845-timer"; 73 + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 74 + reg = <0x8000 0x1C>; 75 + clocks = <&clk NPCM8XX_CLK_REFCLK>; 76 + clock-names = "refclk"; 77 + }; 78 + 79 + serial0: serial@0 { 80 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 81 + reg = <0x0 0x1000>; 82 + clocks = <&clk NPCM8XX_CLK_UART>; 83 + interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>; 84 + reg-shift = <2>; 85 + status = "disabled"; 86 + }; 87 + 88 + serial1: serial@1000 { 89 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 90 + reg = <0x1000 0x1000>; 91 + clocks = <&clk NPCM8XX_CLK_UART>; 92 + interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>; 93 + reg-shift = <2>; 94 + status = "disabled"; 95 + }; 96 + 97 + serial2: serial@2000 { 98 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 99 + reg = <0x2000 0x1000>; 100 + clocks = <&clk NPCM8XX_CLK_UART>; 101 + interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>; 102 + reg-shift = <2>; 103 + status = "disabled"; 104 + }; 105 + 106 + serial3: serial@3000 { 107 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 108 + reg = <0x3000 0x1000>; 109 + clocks = <&clk NPCM8XX_CLK_UART>; 110 + interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>; 111 + reg-shift = <2>; 112 + status = "disabled"; 113 + }; 114 + 115 + serial4: serial@4000 { 116 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 117 + reg = <0x4000 0x1000>; 118 + clocks = <&clk NPCM8XX_CLK_UART>; 119 + interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>; 120 + reg-shift = <2>; 121 + status = "disabled"; 122 + }; 123 + 124 + serial5: serial@5000 { 125 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 126 + reg = <0x5000 0x1000>; 127 + clocks = <&clk NPCM8XX_CLK_UART>; 128 + interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>; 129 + reg-shift = <2>; 130 + status = "disabled"; 131 + }; 132 + 133 + serial6: serial@6000 { 134 + compatible = "nuvoton,npcm845-uart", "nuvoton,npcm750-uart"; 135 + reg = <0x6000 0x1000>; 136 + clocks = <&clk NPCM8XX_CLK_UART>; 137 + interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>; 138 + reg-shift = <2>; 139 + status = "disabled"; 140 + }; 141 + 142 + watchdog0: watchdog@801c { 143 + compatible = "nuvoton,npcm845-wdt", "nuvoton,npcm750-wdt"; 144 + interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>; 145 + reg = <0x801c 0x4>; 146 + status = "disabled"; 147 + clocks = <&clk NPCM8XX_CLK_REFCLK>; 148 + syscon = <&gcr>; 149 + }; 150 + 151 + watchdog1: watchdog@901c { 152 + compatible = "nuvoton,npcm845-wdt", "nuvoton,npcm750-wdt"; 153 + interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; 154 + reg = <0x901c 0x4>; 155 + status = "disabled"; 156 + clocks = <&clk NPCM8XX_CLK_REFCLK>; 157 + syscon = <&gcr>; 158 + }; 159 + 160 + watchdog2: watchdog@a01c { 161 + compatible = "nuvoton,npcm845-wdt", "nuvoton,npcm750-wdt"; 162 + interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 163 + reg = <0xa01c 0x4>; 164 + status = "disabled"; 165 + clocks = <&clk NPCM8XX_CLK_REFCLK>; 166 + syscon = <&gcr>; 167 + }; 168 + }; 169 + }; 170 + };
+30
arch/arm/dts/nuvoton-npcm845-evb.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // Copyright (c) 2021 Nuvoton Technology tomer.maimon@nuvoton.com 3 + 4 + /dts-v1/; 5 + #include "nuvoton-npcm845.dtsi" 6 + 7 + / { 8 + model = "Nuvoton npcm845 Development Board (Device Tree)"; 9 + compatible = "nuvoton,npcm845-evb", "nuvoton,npcm845"; 10 + 11 + aliases { 12 + serial0 = &serial0; 13 + }; 14 + 15 + chosen { 16 + stdout-path = &serial0; 17 + }; 18 + 19 + memory { 20 + reg = <0x0 0x0 0x0 0x40000000>; 21 + }; 22 + }; 23 + 24 + &serial0 { 25 + status = "okay"; 26 + }; 27 + 28 + &watchdog1 { 29 + status = "okay"; 30 + };
+77
arch/arm/dts/nuvoton-npcm845.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // Copyright (c) 2021 Nuvoton Technology tomer.maimon@nuvoton.com 3 + 4 + #include "nuvoton-common-npcm8xx.dtsi" 5 + #include "nuvoton-npcm8xx-u-boot.dtsi" 6 + 7 + / { 8 + #address-cells = <2>; 9 + #size-cells = <2>; 10 + 11 + cpus { 12 + #address-cells = <2>; 13 + #size-cells = <0>; 14 + 15 + cpu0: cpu@0 { 16 + device_type = "cpu"; 17 + compatible = "arm,cortex-a35"; 18 + clocks = <&clk NPCM8XX_CLK_CPU>; 19 + reg = <0x0 0x0>; 20 + next-level-cache = <&l2>; 21 + enable-method = "psci"; 22 + }; 23 + 24 + cpu1: cpu@1 { 25 + device_type = "cpu"; 26 + compatible = "arm,cortex-a35"; 27 + clocks = <&clk NPCM8XX_CLK_CPU>; 28 + reg = <0x0 0x1>; 29 + next-level-cache = <&l2>; 30 + enable-method = "psci"; 31 + }; 32 + 33 + cpu2: cpu@2 { 34 + device_type = "cpu"; 35 + compatible = "arm,cortex-a35"; 36 + clocks = <&clk NPCM8XX_CLK_CPU>; 37 + reg = <0x0 0x2>; 38 + next-level-cache = <&l2>; 39 + enable-method = "psci"; 40 + }; 41 + 42 + cpu3: cpu@3 { 43 + device_type = "cpu"; 44 + compatible = "arm,cortex-a35"; 45 + clocks = <&clk NPCM8XX_CLK_CPU>; 46 + reg = <0x0 0x3>; 47 + next-level-cache = <&l2>; 48 + enable-method = "psci"; 49 + }; 50 + 51 + l2: l2-cache { 52 + compatible = "cache"; 53 + }; 54 + }; 55 + 56 + arm-pmu { 57 + compatible = "arm,cortex-a35-pmu"; 58 + interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>, 59 + <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>, 60 + <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>, 61 + <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>; 62 + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; 63 + }; 64 + 65 + psci { 66 + compatible = "arm,psci-1.0"; 67 + method = "smc"; 68 + }; 69 + 70 + timer { 71 + compatible = "arm,armv8-timer"; 72 + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 73 + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 74 + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 75 + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 76 + }; 77 + };
+136
arch/arm/dts/nuvoton-npcm8xx-u-boot.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + #include <dt-bindings/reset/nuvoton,npcm8xx-reset.h> 4 + 5 + / { 6 + #address-cells = <1>; 7 + #size-cells = <1>; 8 + interrupt-parent = <&gic>; 9 + 10 + /* external reference clock */ 11 + clk_refclk: clk-refclk { 12 + compatible = "fixed-clock"; 13 + #clock-cells = <0>; 14 + clock-frequency = <25000000>; 15 + clock-output-names = "refclk"; 16 + }; 17 + 18 + ahb { 19 + rstc: reset-controller@f0801000 { 20 + compatible = "nuvoton,npcm845-reset", "syscon", 21 + "simple-mfd"; 22 + reg = <0x0 0xf0801000 0x0 0xC4>; 23 + rstc1: reset-controller1 { 24 + compatible = "syscon-reset"; 25 + #reset-cells = <1>; 26 + regmap = <&rstc>; 27 + offset = <NPCM8XX_RESET_IPSRST1>; 28 + mask = <0xFFFFFFFF>; 29 + }; 30 + rstc2: reset-controller2 { 31 + compatible = "syscon-reset"; 32 + #reset-cells = <1>; 33 + regmap = <&rstc>; 34 + offset = <NPCM8XX_RESET_IPSRST2>; 35 + mask = <0xFFFFFFFF>; 36 + }; 37 + rstc3: reset-controller3 { 38 + compatible = "syscon-reset"; 39 + #reset-cells = <1>; 40 + regmap = <&rstc>; 41 + offset = <NPCM8XX_RESET_IPSRST3>; 42 + mask = <0xFFFFFFFF>; 43 + }; 44 + rstc4: reset-controller4 { 45 + compatible = "syscon-reset"; 46 + #reset-cells = <1>; 47 + regmap = <&rstc>; 48 + offset = <NPCM8XX_RESET_IPSRST4>; 49 + mask = <0xFFFFFFFF>; 50 + }; 51 + }; 52 + 53 + clk: clock-controller@f0801000 { 54 + compatible = "nuvoton,npcm845-clk", "syscon"; 55 + #clock-cells = <1>; 56 + clock-controller; 57 + reg = <0x0 0xf0801000 0x0 0x1000>; 58 + clock-names = "refclk"; 59 + clocks = <&clk_refclk>; 60 + }; 61 + 62 + apb { 63 + serial0: serial@0 { 64 + compatible = "nuvoton,npcm845-uart"; 65 + reg = <0x0 0x1000>; 66 + clocks = <&clk NPCM8XX_CLK_UART>, <&clk NPCM8XX_CLK_PLL2DIV2>; 67 + clock-frequency = <24000000>; 68 + status = "disabled"; 69 + }; 70 + 71 + gpio0: gpio0@10000 { 72 + compatible = "nuvoton,npcm-gpio"; 73 + reg = <0x10000 0xB0>; 74 + #gpio-cells = <2>; 75 + gpio-controller; 76 + gpio-bank-name = "gpio0"; 77 + }; 78 + 79 + gpio1: gpio1@11000 { 80 + compatible = "nuvoton,npcm-gpio"; 81 + reg = <0x11000 0xB0>; 82 + #gpio-cells = <2>; 83 + gpio-controller; 84 + gpio-bank-name = "gpio1"; 85 + }; 86 + 87 + gpio2: gpio2@12000 { 88 + compatible = "nuvoton,npcm-gpio"; 89 + reg = <0x12000 0xB0>; 90 + #gpio-cells = <2>; 91 + gpio-controller; 92 + gpio-bank-name = "gpio2"; 93 + }; 94 + 95 + gpio3: gpio3@13000 { 96 + compatible = "nuvoton,npcm-gpio"; 97 + reg = <0x13000 0xB0>; 98 + #gpio-cells = <2>; 99 + gpio-controller; 100 + gpio-bank-name = "gpio3"; 101 + }; 102 + 103 + gpio4: gpio4@14000 { 104 + compatible = "nuvoton,npcm-gpio"; 105 + reg = <0x14000 0xB0>; 106 + #gpio-cells = <2>; 107 + gpio-controller; 108 + gpio-bank-name = "gpio4"; 109 + }; 110 + 111 + gpio5: gpio5@15000 { 112 + compatible = "nuvoton,npcm-gpio"; 113 + reg = <0x15000 0xB0>; 114 + #gpio-cells = <2>; 115 + gpio-controller; 116 + gpio-bank-name = "gpio5"; 117 + }; 118 + 119 + gpio6: gpio6@16000 { 120 + compatible = "nuvoton,npcm-gpio"; 121 + reg = <0x16000 0xB0>; 122 + #gpio-cells = <2>; 123 + gpio-controller; 124 + gpio-bank-name = "gpio6"; 125 + }; 126 + 127 + gpio7: gpio7@17000 { 128 + compatible = "nuvoton,npcm-gpio"; 129 + reg = <0x17000 0xB0>; 130 + #gpio-cells = <2>; 131 + gpio-controller; 132 + gpio-bank-name = "gpio7"; 133 + }; 134 + }; 135 + }; 136 + };
+140
arch/arm/include/asm/arch-npcm8xx/gcr.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0+ */ 2 + /* 3 + * System Global Control Register definitions 4 + * Copyright (c) 2022 Nuvoton Technology Corp. 5 + */ 6 + 7 + #ifndef _NPCM_GCR_H_ 8 + #define _NPCM_GCR_H_ 9 + 10 + #define NPCM_GCR_BA 0xF0800000 11 + 12 + /* On-Chip ARBEL NPCM8XX VERSIONS */ 13 + #define ARBEL_Z1 0x00A35850 14 + #define ARBEL_A1 0x04a35850 15 + #define ARBEL_NPCM845 0x00000000 16 + #define ARBEL_NPCM830 0x00300395 17 + #define ARBEL_NPCM810 0x00000220 18 + 19 + #define MFSEL4_ESPISEL BIT(8) 20 + #define MFSEL1_LPCSEL BIT(26) 21 + #define INTCR2_WDC BIT(21) 22 + 23 + struct npcm_gcr { 24 + unsigned int pdid; 25 + unsigned int pwron; 26 + unsigned int swstrps; 27 + unsigned int rsvd1[2]; 28 + unsigned int miscpe; 29 + unsigned int spldcnt; 30 + unsigned int rsvd2[1]; 31 + unsigned int flockr2; 32 + unsigned int flockr3; 33 + unsigned int rsvd3[3]; 34 + unsigned int a35_mode; 35 + unsigned int spswc; 36 + unsigned int intcr; 37 + unsigned int intsr; 38 + unsigned int obscr1; 39 + unsigned int obsdr1; 40 + unsigned int rsvd4[1]; 41 + unsigned int hifcr; 42 + unsigned int rsvd5[3]; 43 + unsigned int intcr2; 44 + unsigned int rsvd6[1]; 45 + unsigned int srcnt; 46 + unsigned int ressr; 47 + unsigned int rlockr1; 48 + unsigned int flockr1; 49 + unsigned int dscnt; 50 + unsigned int mdlr; 51 + unsigned int scrpad_c; 52 + unsigned int scrpad_b; 53 + unsigned int rsvd7[4]; 54 + unsigned int daclvlr; 55 + unsigned int intcr3; 56 + unsigned int pcirctl; 57 + unsigned int rsvd8[2]; 58 + unsigned int vsintr; 59 + unsigned int rsvd9[1]; 60 + unsigned int sd2sur1; 61 + unsigned int sd2sur2; 62 + unsigned int sd2irv3; 63 + unsigned int intcr4; 64 + unsigned int obscr2; 65 + unsigned int obsdr2; 66 + unsigned int rsvd10[5]; 67 + unsigned int i2csegsel; 68 + unsigned int i2csegctl; 69 + unsigned int vsrcr; 70 + unsigned int mlockr; 71 + unsigned int rsvd11[8]; 72 + unsigned int etsr; 73 + unsigned int dft1r; 74 + unsigned int dft2r; 75 + unsigned int dft3r; 76 + unsigned int edffsr; 77 + unsigned int rsvd12[1]; 78 + unsigned int intcrpce3; 79 + unsigned int intcrpce2; 80 + unsigned int intcrpce0; 81 + unsigned int intcrpce1; 82 + unsigned int dactest; 83 + unsigned int scrpad; 84 + unsigned int usb1phyctl; 85 + unsigned int usb2phyctl; 86 + unsigned int usb3phyctl; 87 + unsigned int intsr2; 88 + unsigned int intcrpce2b; 89 + unsigned int intcrpce0b; 90 + unsigned int intcrpce1b; 91 + unsigned int intcrpce3b; 92 + unsigned int rsvd13[4]; 93 + unsigned int intcrpce2c; 94 + unsigned int intcrpce0c; 95 + unsigned int intcrpce1c; 96 + unsigned int intcrpce3c; 97 + unsigned int rsvd14[40]; 98 + unsigned int sd2irv4; 99 + unsigned int sd2irv5; 100 + unsigned int sd2irv6; 101 + unsigned int sd2irv7; 102 + unsigned int sd2irv8; 103 + unsigned int sd2irv9; 104 + unsigned int sd2irv10; 105 + unsigned int sd2irv11; 106 + unsigned int rsvd15[8]; 107 + unsigned int mfsel1; 108 + unsigned int mfsel2; 109 + unsigned int mfsel3; 110 + unsigned int mfsel4; 111 + unsigned int mfsel5; 112 + unsigned int mfsel6; 113 + unsigned int mfsel7; 114 + unsigned int rsvd16[1]; 115 + unsigned int mfsel_lk1; 116 + unsigned int mfsel_lk2; 117 + unsigned int mfsel_lk3; 118 + unsigned int mfsel_lk4; 119 + unsigned int mfsel_lk5; 120 + unsigned int mfsel_lk6; 121 + unsigned int mfsel_lk7; 122 + unsigned int rsvd17[1]; 123 + unsigned int mfsel_set1; 124 + unsigned int mfsel_set2; 125 + unsigned int mfsel_set3; 126 + unsigned int mfsel_set4; 127 + unsigned int mfsel_set5; 128 + unsigned int mfsel_set6; 129 + unsigned int mfsel_set7; 130 + unsigned int rsvd18[1]; 131 + unsigned int mfsel_clr1; 132 + unsigned int mfsel_clr2; 133 + unsigned int mfsel_clr3; 134 + unsigned int mfsel_clr4; 135 + unsigned int mfsel_clr5; 136 + unsigned int mfsel_clr6; 137 + unsigned int mfsel_clr7; 138 + }; 139 + 140 + #endif
+26
arch/arm/include/asm/arch-npcm8xx/rst.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0+ */ 2 + 3 + #ifndef _NPCM_RST_H_ 4 + #define _NPCM_RST_H_ 5 + 6 + /* Watchdog Timer Controller Register */ 7 + #define WTCR0_REG 0xF000801C 8 + #define WTCR_WTR BIT(0) 9 + #define WTCR_WTRE BIT(1) 10 + #define WTCR_WTE BIT(7) 11 + 12 + /* Reset status bits */ 13 + #define PORST BIT(31) 14 + #define CORST BIT(30) 15 + #define WD0RST BIT(29) 16 + #define SW1RST BIT(28) 17 + #define SW2RST BIT(27) 18 + #define SW3RST BIT(26) 19 + #define SW4RST BIT(25) 20 + #define WD1RST BIT(24) 21 + #define WD2RST BIT(23) 22 + #define RST_STS_MASK GENMASK(31, 23) 23 + 24 + int npcm_get_reset_status(void); 25 + 26 + #endif
+8
arch/arm/mach-npcm/Kconfig
··· 19 19 General support for NPCM7xx BMC (Poleg). 20 20 Nuvoton NPCM7xx BMC is based on the Cortex A9. 21 21 22 + config ARCH_NPCM8XX 23 + bool "Support Nuvoton NPCM8xx SoC" 24 + select ARM64 25 + help 26 + General support for NPCM8xx BMC (Arbel). 27 + Nuvoton NPCM8xx BMC is based on the Cortex A35. 28 + 22 29 endchoice 23 30 24 31 source "arch/arm/mach-npcm/npcm7xx/Kconfig" 32 + source "arch/arm/mach-npcm/npcm8xx/Kconfig" 25 33 26 34 endif
+1
arch/arm/mach-npcm/Makefile
··· 1 1 obj-$(CONFIG_ARCH_NPCM7xx) += npcm7xx/ 2 + obj-$(CONFIG_ARCH_NPCM8XX) += npcm8xx/
+18
arch/arm/mach-npcm/npcm8xx/Kconfig
··· 1 + if ARCH_NPCM8XX 2 + 3 + config SYS_CPU 4 + default "armv8" 5 + 6 + config SYS_SOC 7 + default "npcm8xx" 8 + 9 + config TARGET_ARBEL_EVB 10 + bool "Arbel Evaluation Board" 11 + help 12 + ARBEL_EVB is Nuvoton evaluation board for NPCM845 SoC, 13 + supports general functions of Basebase Management Controller 14 + (BMC). 15 + 16 + source "board/nuvoton/arbel_evb/Kconfig" 17 + 18 + endif
+1
arch/arm/mach-npcm/npcm8xx/Makefile
··· 1 + obj-y += cpu.o reset.o
+135
arch/arm/mach-npcm/npcm8xx/cpu.c
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Copyright (c) 2022 Nuvoton Technology Corp. 4 + */ 5 + 6 + #include <common.h> 7 + #include <dm.h> 8 + #include <asm/global_data.h> 9 + #include <asm/io.h> 10 + #include <asm/system.h> 11 + #include <asm/arch/gcr.h> 12 + #include <asm/armv8/mmu.h> 13 + 14 + #define SYSCNT_CTRL_BASE_ADDR 0xF07FC000 15 + #define SC_CNTCR_ENABLE BIT(0) 16 + #define SC_CNTCR_HDBG BIT(1) 17 + #define SC_CNTCR_FREQ0 BIT(8) 18 + #define SC_CNTCR_FREQ1 BIT(9) 19 + 20 + /* System Counter register map */ 21 + struct sctr_regs { 22 + u32 cntcr; 23 + u32 cntsr; 24 + u32 cntcv1; 25 + u32 cntcv2; 26 + u32 resv1[4]; 27 + u32 cntfid0; 28 + u32 cntfid1; 29 + u32 cntfid2; 30 + u32 resv2[1001]; 31 + u32 counterid[1]; 32 + }; 33 + 34 + DECLARE_GLOBAL_DATA_PTR; 35 + 36 + int print_cpuinfo(void) 37 + { 38 + struct npcm_gcr *gcr = (struct npcm_gcr *)NPCM_GCR_BA; 39 + unsigned int val; 40 + unsigned long mpidr_val; 41 + 42 + asm volatile("mrs %0, mpidr_el1" : "=r" (mpidr_val)); 43 + 44 + val = readl(&gcr->mdlr); 45 + 46 + printf("CPU-%lu: ", mpidr_val & 0x3); 47 + 48 + switch (val) { 49 + case ARBEL_NPCM845: 50 + printf("NPCM845 "); 51 + break; 52 + case ARBEL_NPCM830: 53 + printf("NPCM830 "); 54 + break; 55 + case ARBEL_NPCM810: 56 + printf("NPCM810 "); 57 + break; 58 + default: 59 + printf("NPCM8XX "); 60 + break; 61 + } 62 + 63 + val = readl(&gcr->pdid); 64 + switch (val) { 65 + case ARBEL_Z1: 66 + printf("Z1 @ "); 67 + break; 68 + case ARBEL_A1: 69 + printf("A1 @ "); 70 + break; 71 + default: 72 + printf("Unknown\n"); 73 + break; 74 + } 75 + 76 + return 0; 77 + } 78 + 79 + int arch_cpu_init(void) 80 + { 81 + if (!IS_ENABLED(CONFIG_SYS_DCACHE_OFF)) { 82 + /* Enable cache to speed up system running */ 83 + if (get_sctlr() & CR_M) 84 + return 0; 85 + 86 + icache_enable(); 87 + __asm_invalidate_dcache_all(); 88 + __asm_invalidate_tlb_all(); 89 + set_sctlr(get_sctlr() | CR_C); 90 + } 91 + 92 + return 0; 93 + } 94 + 95 + static struct mm_region npcm_mem_map[1 + CONFIG_NR_DRAM_BANKS + 1] = { 96 + { 97 + /* DRAM */ 98 + .phys = 0x0UL, 99 + .virt = 0x0UL, 100 + .size = 0x80000000UL, 101 + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | 102 + PTE_BLOCK_INNER_SHARE 103 + }, 104 + { 105 + .phys = 0x80000000UL, 106 + .virt = 0x80000000UL, 107 + .size = 0x80000000UL, 108 + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | 109 + PTE_BLOCK_NON_SHARE | 110 + PTE_BLOCK_PXN | PTE_BLOCK_UXN 111 + }, 112 + { 113 + /* List terminator */ 114 + 0, 115 + } 116 + }; 117 + 118 + struct mm_region *mem_map = npcm_mem_map; 119 + 120 + int timer_init(void) 121 + { 122 + struct sctr_regs *sctr = (struct sctr_regs *)SYSCNT_CTRL_BASE_ADDR; 123 + u32 cntfrq_el0; 124 + 125 + /* Enable system counter */ 126 + __asm__ __volatile__("mrs %0, CNTFRQ_EL0\n\t" : "=r" (cntfrq_el0) : : "memory"); 127 + writel(cntfrq_el0, &sctr->cntfid0); 128 + clrsetbits_le32(&sctr->cntcr, SC_CNTCR_FREQ0 | SC_CNTCR_FREQ1, 129 + SC_CNTCR_ENABLE | SC_CNTCR_HDBG); 130 + 131 + gd->arch.tbl = 0; 132 + gd->arch.tbu = 0; 133 + 134 + return 0; 135 + }
+37
arch/arm/mach-npcm/npcm8xx/reset.c
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Copyright (c) 2022 Nuvoton Technology Corp. 4 + */ 5 + 6 + #include <common.h> 7 + #include <asm/io.h> 8 + #include <asm/arch/gcr.h> 9 + #include <asm/arch/rst.h> 10 + 11 + void reset_cpu(void) 12 + { 13 + /* Generate a watchdog0 reset */ 14 + writel(WTCR_WTR | WTCR_WTRE | WTCR_WTE, WTCR0_REG); 15 + 16 + while (1) 17 + ; 18 + } 19 + 20 + void reset_misc(void) 21 + { 22 + struct npcm_gcr *gcr = (struct npcm_gcr *)NPCM_GCR_BA; 23 + 24 + clrbits_le32(&gcr->intcr2, INTCR2_WDC); 25 + } 26 + 27 + int npcm_get_reset_status(void) 28 + { 29 + struct npcm_gcr *gcr = (struct npcm_gcr *)NPCM_GCR_BA; 30 + u32 val; 31 + 32 + val = readl(&gcr->ressr); 33 + if (!val) 34 + val = readl(&gcr->intcr2); 35 + 36 + return val & RST_STS_MASK; 37 + }
+18
board/nuvoton/arbel_evb/Kconfig
··· 1 + if TARGET_ARBEL_EVB 2 + 3 + config SYS_BOARD 4 + default "arbel_evb" 5 + 6 + config SYS_VENDOR 7 + default "nuvoton" 8 + 9 + config SYS_CONFIG_NAME 10 + default "arbel" 11 + 12 + config SYS_MEM_TOP_HIDE 13 + hex "Reserved TOP memory" 14 + default 0xB000000 15 + help 16 + Reserve memory for ECC/GFX/VCD/ECE. 17 + 18 + endif
+7
board/nuvoton/arbel_evb/MAINTAINERS
··· 1 + Arbel EVB 2 + M: Stanley Chu <yschu@nuvoton.com> 3 + M: Jim Liu <JJLIU0@nuvoton.com> 4 + S: Maintained 5 + F: board/nuvoton/arbel_evb/ 6 + F: include/configs/arbel.h 7 + F: configs/arbel_evb_defconfig
+1
board/nuvoton/arbel_evb/Makefile
··· 1 + obj-y += arbel_evb.o
+29
board/nuvoton/arbel_evb/arbel_evb.c
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Copyright (c) 2022 Nuvoton Technology Corp. 4 + */ 5 + 6 + #include <common.h> 7 + #include <dm.h> 8 + #include <asm/io.h> 9 + #include <asm/arch/gcr.h> 10 + 11 + DECLARE_GLOBAL_DATA_PTR; 12 + 13 + int board_init(void) 14 + { 15 + return 0; 16 + } 17 + 18 + int dram_init(void) 19 + { 20 + struct npcm_gcr *gcr = (struct npcm_gcr *)NPCM_GCR_BA; 21 + 22 + /* 23 + * Get dram size from bootblock. 24 + * The value is stored in scrpad_02 register. 25 + */ 26 + gd->ram_size = readl(&gcr->scrpad_b); 27 + 28 + return 0; 29 + }
+66
configs/arbel_evb_defconfig
··· 1 + CONFIG_ARM=y 2 + CONFIG_ARCH_NPCM=y 3 + CONFIG_SYS_MALLOC_LEN=0x240000 4 + CONFIG_SYS_MALLOC_F_LEN=0x1000 5 + CONFIG_NR_DRAM_BANKS=1 6 + CONFIG_ENV_SIZE=0x40000 7 + CONFIG_ENV_OFFSET=0x1C0000 8 + CONFIG_ENV_SECT_SIZE=0x1000 9 + CONFIG_DM_GPIO=y 10 + CONFIG_DEFAULT_DEVICE_TREE="nuvoton-npcm845-evb" 11 + CONFIG_SYS_PROMPT="U-Boot>" 12 + # CONFIG_PSCI_RESET is not set 13 + CONFIG_ARCH_NPCM8XX=y 14 + CONFIG_TARGET_ARBEL_EVB=y 15 + CONFIG_SYS_LOAD_ADDR=0x10000000 16 + CONFIG_ENV_ADDR=0x801C0000 17 + CONFIG_FIT=y 18 + CONFIG_FIT_VERBOSE=y 19 + CONFIG_USE_BOOTCOMMAND=y 20 + CONFIG_BOOTCOMMAND="run common_bootargs; run romboot" 21 + CONFIG_HUSH_PARSER=y 22 + CONFIG_SYS_MAXARGS=32 23 + CONFIG_SYS_BOOTM_LEN=0x1400000 24 + CONFIG_CMD_GPIO=y 25 + CONFIG_CMD_SPI=y 26 + CONFIG_CMD_USB=y 27 + CONFIG_CMD_DHCP=y 28 + CONFIG_CMD_MII=y 29 + CONFIG_CMD_PING=y 30 + CONFIG_CMD_CACHE=y 31 + CONFIG_CMD_UUID=y 32 + CONFIG_CMD_FAT=y 33 + CONFIG_ENV_IS_IN_SPI_FLASH=y 34 + CONFIG_REGMAP=y 35 + CONFIG_SYSCON=y 36 + CONFIG_CLK=y 37 + CONFIG_NPCM_GPIO=y 38 + # CONFIG_INPUT is not set 39 + CONFIG_DM_SPI_FLASH=y 40 + CONFIG_SPI_FLASH_MACRONIX=y 41 + CONFIG_SPI_FLASH_WINBOND=y 42 + CONFIG_PHY_BROADCOM=y 43 + CONFIG_PHY_GIGE=y 44 + CONFIG_ETH_DESIGNWARE=y 45 + CONFIG_RGMII=y 46 + CONFIG_MII=y 47 + CONFIG_PINCTRL=y 48 + CONFIG_PINCONF=y 49 + CONFIG_PINCTRL_NPCM8XX=y 50 + CONFIG_DM_RESET=y 51 + CONFIG_RESET_SYSCON=y 52 + CONFIG_DM_SERIAL=y 53 + CONFIG_NPCM_SERIAL=y 54 + CONFIG_SPI=y 55 + CONFIG_DM_SPI=y 56 + CONFIG_NPCM_FIU_SPI=y 57 + CONFIG_TIMER=y 58 + CONFIG_NPCM_TIMER=y 59 + CONFIG_USB=y 60 + CONFIG_USB_EHCI_HCD=y 61 + CONFIG_USB_EHCI_GENERIC=y 62 + CONFIG_USB_OHCI_HCD=y 63 + CONFIG_USB_OHCI_GENERIC=y 64 + CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=1 65 + CONFIG_USB_STORAGE=y 66 + # CONFIG_EFI_LOADER is not set
+35
include/configs/arbel.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0+ */ 2 + /* 3 + * Copyright (c) 2022 Nuvoton Technology Corp. 4 + */ 5 + 6 + #ifndef __CONFIG_ARBEL_H 7 + #define __CONFIG_ARBEL_H 8 + 9 + #define CONFIG_SYS_SDRAM_BASE 0x0 10 + #define CONFIG_SYS_BOOTMAPSZ (20 << 20) 11 + #define CONFIG_SYS_INIT_RAM_ADDR CONFIG_SYS_SDRAM_BASE 12 + #define CONFIG_SYS_INIT_RAM_SIZE 0x8000 13 + 14 + /* Default environemnt variables */ 15 + #define CONFIG_EXTRA_ENV_SETTINGS "uimage_flash_addr=80200000\0" \ 16 + "stdin=serial\0" \ 17 + "stdout=serial\0" \ 18 + "stderr=serial\0" \ 19 + "ethact=gmac1\0" \ 20 + "autostart=no\0" \ 21 + "ethaddr=00:00:F7:A0:00:FC\0" \ 22 + "eth1addr=00:00:F7:A0:00:FD\0" \ 23 + "eth2addr=00:00:F7:A0:00:FE\0" \ 24 + "eth3addr=00:00:F7:A0:00:FF\0" \ 25 + "serverip=192.168.0.1\0" \ 26 + "ipaddr=192.168.0.2\0" \ 27 + "romboot=echo Booting Kernel from flash at 0x${uimage_flash_addr}; " \ 28 + "echo Using bootargs: ${bootargs};bootm ${uimage_flash_addr}\0" \ 29 + "earlycon=uart8250,mmio32,0xf0000000\0" \ 30 + "console=ttyS0,115200n8\0" \ 31 + "common_bootargs=setenv bootargs earlycon=${earlycon} root=/dev/ram " \ 32 + "console=${console} ramdisk_size=48000\0" \ 33 + "\0" 34 + 35 + #endif
+52
include/dt-bindings/clock/nuvoton,npcm845-clk.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2022 Nuvoton Technology Corp. 4 + * 5 + * Device Tree binding constants for NPCM8XX clock controller. 6 + */ 7 + 8 + #ifndef __DT_BINDINGS_CLOCK_NPCM8XX_H 9 + #define __DT_BINDINGS_CLOCK_NPCM8XX_H 10 + 11 + #define NPCM8XX_CLK_CPU 0 12 + #define NPCM8XX_CLK_GFX_PIXEL 1 13 + #define NPCM8XX_CLK_MC 2 14 + #define NPCM8XX_CLK_ADC 3 15 + #define NPCM8XX_CLK_AHB 4 16 + #define NPCM8XX_CLK_TIMER 5 17 + #define NPCM8XX_CLK_UART 6 18 + #define NPCM8XX_CLK_UART2 7 19 + #define NPCM8XX_CLK_MMC 8 20 + #define NPCM8XX_CLK_SPI3 9 21 + #define NPCM8XX_CLK_PCI 10 22 + #define NPCM8XX_CLK_AXI 11 23 + #define NPCM8XX_CLK_APB4 12 24 + #define NPCM8XX_CLK_APB3 13 25 + #define NPCM8XX_CLK_APB2 14 26 + #define NPCM8XX_CLK_APB1 15 27 + #define NPCM8XX_CLK_APB5 16 28 + #define NPCM8XX_CLK_CLKOUT 17 29 + #define NPCM8XX_CLK_GFX 18 30 + #define NPCM8XX_CLK_SU 19 31 + #define NPCM8XX_CLK_SU48 20 32 + #define NPCM8XX_CLK_SDHC 21 33 + #define NPCM8XX_CLK_SPI0 22 34 + #define NPCM8XX_CLK_SPI1 23 35 + #define NPCM8XX_CLK_SPIX 24 36 + #define NPCM8XX_CLK_RG 25 37 + #define NPCM8XX_CLK_RCP 26 38 + #define NPCM8XX_CLK_PRE_ADC 27 39 + #define NPCM8XX_CLK_ATB 28 40 + #define NPCM8XX_CLK_PRE_CLK 29 41 + #define NPCM8XX_CLK_TH 30 42 + #define NPCM8XX_CLK_REFCLK 31 43 + #define NPCM8XX_CLK_SYSBYPCK 32 44 + #define NPCM8XX_CLK_MCBYPCK 33 45 + #define NPCM8XX_CLK_PLL0 34 46 + #define NPCM8XX_CLK_PLL1 35 47 + #define NPCM8XX_CLK_PLL2 36 48 + #define NPCM8XX_CLK_PLL2DIV2 37 49 + 50 + #define NPCM8XX_NUM_CLOCKS (NPCM8XX_CLK_PLL2DIV2 + 1) 51 + 52 + #endif
+124
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + // Copyright (c) 2020 Nuvoton Technology corporation. 3 + 4 + #ifndef _DT_BINDINGS_NPCM8XX_RESET_H 5 + #define _DT_BINDINGS_NPCM8XX_RESET_H 6 + 7 + #define NPCM8XX_RESET_IPSRST1 0x20 8 + #define NPCM8XX_RESET_IPSRST2 0x24 9 + #define NPCM8XX_RESET_IPSRST3 0x34 10 + #define NPCM8XX_RESET_IPSRST4 0x74 11 + 12 + /* Reset lines on IP1 reset module (NPCM8XX_RESET_IPSRST1) */ 13 + #define NPCM8XX_RESET_GDMA0 3 14 + #define NPCM8XX_RESET_UDC1 5 15 + #define NPCM8XX_RESET_GMAC3 6 16 + #define NPCM8XX_RESET_UART_2_3 7 17 + #define NPCM8XX_RESET_UDC2 8 18 + #define NPCM8XX_RESET_PECI 9 19 + #define NPCM8XX_RESET_AES 10 20 + #define NPCM8XX_RESET_UART_0_1 11 21 + #define NPCM8XX_RESET_MC 12 22 + #define NPCM8XX_RESET_SMB2 13 23 + #define NPCM8XX_RESET_SMB3 14 24 + #define NPCM8XX_RESET_SMB4 15 25 + #define NPCM8XX_RESET_SMB5 16 26 + #define NPCM8XX_RESET_PWM_M0 18 27 + #define NPCM8XX_RESET_TIMER_0_4 19 28 + #define NPCM8XX_RESET_TIMER_5_9 20 29 + #define NPCM8XX_RESET_GMAC4 21 30 + #define NPCM8XX_RESET_UDC4 22 31 + #define NPCM8XX_RESET_UDC5 23 32 + #define NPCM8XX_RESET_UDC6 24 33 + #define NPCM8XX_RESET_UDC3 25 34 + #define NPCM8XX_RESET_ADC 27 35 + #define NPCM8XX_RESET_SMB6 28 36 + #define NPCM8XX_RESET_SMB7 29 37 + #define NPCM8XX_RESET_SMB0 30 38 + #define NPCM8XX_RESET_SMB1 31 39 + 40 + /* Reset lines on IP2 reset module (NPCM8XX_RESET_IPSRST2) */ 41 + #define NPCM8XX_RESET_MFT0 0 42 + #define NPCM8XX_RESET_MFT1 1 43 + #define NPCM8XX_RESET_MFT2 2 44 + #define NPCM8XX_RESET_MFT3 3 45 + #define NPCM8XX_RESET_MFT4 4 46 + #define NPCM8XX_RESET_MFT5 5 47 + #define NPCM8XX_RESET_MFT6 6 48 + #define NPCM8XX_RESET_MFT7 7 49 + #define NPCM8XX_RESET_MMC 8 50 + #define NPCM8XX_RESET_GFX_SYS 10 51 + #define NPCM8XX_RESET_AHB_PCIBRG 11 52 + #define NPCM8XX_RESET_VDMA 12 53 + #define NPCM8XX_RESET_ECE 13 54 + #define NPCM8XX_RESET_VCD 14 55 + #define NPCM8XX_RESET_VIRUART1 16 56 + #define NPCM8XX_RESET_VIRUART2 17 57 + #define NPCM8XX_RESET_SIOX1 18 58 + #define NPCM8XX_RESET_SIOX2 19 59 + #define NPCM8XX_RESET_BT 20 60 + #define NPCM8XX_RESET_3DES 21 61 + #define NPCM8XX_RESET_PSPI2 23 62 + #define NPCM8XX_RESET_GMAC2 25 63 + #define NPCM8XX_RESET_USBH1 26 64 + #define NPCM8XX_RESET_GMAC1 28 65 + #define NPCM8XX_RESET_CP1 31 66 + 67 + /* Reset lines on IP3 reset module (NPCM8XX_RESET_IPSRST3) */ 68 + #define NPCM8XX_RESET_PWM_M1 0 69 + #define NPCM8XX_RESET_SMB12 1 70 + #define NPCM8XX_RESET_SPIX 2 71 + #define NPCM8XX_RESET_SMB13 3 72 + #define NPCM8XX_RESET_UDC0 4 73 + #define NPCM8XX_RESET_UDC7 5 74 + #define NPCM8XX_RESET_UDC8 6 75 + #define NPCM8XX_RESET_UDC9 7 76 + #define NPCM8XX_RESET_USBHUB 8 77 + #define NPCM8XX_RESET_PCI_MAILBOX 9 78 + #define NPCM8XX_RESET_GDMA1 10 79 + #define NPCM8XX_RESET_GDMA2 11 80 + #define NPCM8XX_RESET_SMB14 12 81 + #define NPCM8XX_RESET_SHA 13 82 + #define NPCM8XX_RESET_SEC_ECC 14 83 + #define NPCM8XX_RESET_PCIE_RC 15 84 + #define NPCM8XX_RESET_TIMER_10_14 16 85 + #define NPCM8XX_RESET_RNG 17 86 + #define NPCM8XX_RESET_SMB15 18 87 + #define NPCM8XX_RESET_SMB8 19 88 + #define NPCM8XX_RESET_SMB9 20 89 + #define NPCM8XX_RESET_SMB10 21 90 + #define NPCM8XX_RESET_SMB11 22 91 + #define NPCM8XX_RESET_ESPI 23 92 + #define NPCM8XX_RESET_USBPHY1 24 93 + #define NPCM8XX_RESET_USBPHY2 25 94 + 95 + /* Reset lines on IP4 reset module (NPCM8XX_RESET_IPSRST4) */ 96 + #define NPCM8XX_RESET_SMB16 0 97 + #define NPCM8XX_RESET_SMB17 1 98 + #define NPCM8XX_RESET_SMB18 2 99 + #define NPCM8XX_RESET_SMB19 3 100 + #define NPCM8XX_RESET_SMB20 4 101 + #define NPCM8XX_RESET_SMB21 5 102 + #define NPCM8XX_RESET_SMB22 6 103 + #define NPCM8XX_RESET_SMB23 7 104 + #define NPCM8XX_RESET_I3C0 8 105 + #define NPCM8XX_RESET_I3C1 9 106 + #define NPCM8XX_RESET_I3C2 10 107 + #define NPCM8XX_RESET_I3C3 11 108 + #define NPCM8XX_RESET_I3C4 12 109 + #define NPCM8XX_RESET_I3C5 13 110 + #define NPCM8XX_RESET_UART4 16 111 + #define NPCM8XX_RESET_UART5 17 112 + #define NPCM8XX_RESET_UART6 18 113 + #define NPCM8XX_RESET_PCIMBX2 19 114 + #define NPCM8XX_RESET_SMB24 22 115 + #define NPCM8XX_RESET_SMB25 23 116 + #define NPCM8XX_RESET_SMB26 24 117 + #define NPCM8XX_RESET_USBPHY3 25 118 + #define NPCM8XX_RESET_PCIRCPHY 27 119 + #define NPCM8XX_RESET_PWM_M2 28 120 + #define NPCM8XX_RESET_JTM1 29 121 + #define NPCM8XX_RESET_JTM2 30 122 + #define NPCM8XX_RESET_USBH2 31 123 + 124 + #endif