@@ -2,3 +2,4 @@
dtb-$(CONFIG_ARCH_MA35) += ma35d1-iot-512m.dtb
dtb-$(CONFIG_ARCH_MA35) += ma35d1-som-256m.dtb
dtb-$(CONFIG_ARCH_NPCM) += nuvoton-npcm845-evb.dtb
+dtb-$(CONFIG_ARCH_NPCM) += nuvoton-npcm845-yosemite4.dtb
new file mode 100644
@@ -0,0 +1,1493 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// Copyright 2023 Facebook Inc.
+
+/dts-v1/;
+#include "nuvoton-npcm845.dtsi"
+#include "nuvoton-npcm845-pincfg-evb.dtsi"
+#include <dt-bindings/i2c/i2c.h>
+
+/ {
+ model = "Facebook Yosemite 4 BMC";
+ compatible = "facebook,yosemite4-n-bmc", "nuvoton,npcm845";
+
+ aliases {
+ serial4 = &serial0;
+ serial0 = &serial1;
+ serial1 = &serial3;
+ serial2 = &serial4;
+ serial3 = &serial5;
+ serial5 = &cpld_serial0;
+ serial6 = &cpld_serial1;
+ serial7 = &cpld_serial2;
+ serial8 = &cpld_serial3;
+ fiu0 = &fiu0;
+
+ i2c16 = &imux16;
+ i2c17 = &imux17;
+ i2c18 = &imux18;
+ i2c19 = &imux19;
+ i2c20 = &imux20;
+ i2c21 = &imux21;
+ i2c22 = &imux22;
+ i2c23 = &imux23;
+ i2c24 = &imux24;
+ i2c25 = &imux25;
+ i2c26 = &imux26;
+ i2c27 = &imux27;
+ i2c28 = &imux28;
+ i2c29 = &imux29;
+ i2c30 = &imux30;
+ i2c31 = &imux31;
+ i2c32 = &imux32;
+ i2c33 = &imux33;
+ i2c34 = &imux34;
+ i2c35 = &imux35;
+ i2c36 = &imux36;
+ i2c37 = &imux37;
+ };
+
+ chosen {
+ stdout-path = &serial0;
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ iio-hwmon {
+ compatible = "iio-hwmon";
+ io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
+ <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>;
+ };
+
+ firmware {
+ optee {
+ compatible = "linaro,optee-tz";
+ method = "smc";
+ };
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ tip_reserved: tip@0x0 {
+ reg = <0x0 0x0 0x0 0x6200000>;
+ };
+ };
+
+ spi_gpio: spi-gpio {
+ compatible = "spi-gpio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-sck = <&gpio0 19 GPIO_ACTIVE_HIGH>; // GPIO19
+ gpio-mosi = <&gpio0 18 GPIO_ACTIVE_HIGH>; // GPIO18
+ gpio-miso = <&gpio0 17 GPIO_ACTIVE_HIGH>; // GPIO17
+ num-chipselects = <1>;
+ cs-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>; // GPIO203
+
+ tpmdev@0 {
+ compatible = "tcg,tpm_tis-spi";
+ spi-max-frequency = <33000000>;
+ reg = <0>;
+ };
+ };
+
+ cpld_serial0: cpld_uart@f8000800 {
+ device_type = "serial";
+ compatible = "ns16450";
+ reg = <0x0 0xf8000800 0x0 0x200>;
+ reg-shift = <0>;
+ clocks = <&clk NPCM8XX_CLK_UART>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
+ cpld_serial1: cpld_uart@f8000a00 {
+ device_type = "serial";
+ compatible = "ns16450";
+ reg = <0x0 0xf8000a00 0x0 0x200>;
+ reg-shift = <0>;
+ clocks = <&clk NPCM8XX_CLK_UART>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
+ cpld_serial2: cpld_uart@f8000c00 {
+ device_type = "serial";
+ compatible = "ns16450";
+ reg = <0x0 0xf8000c00 0x0 0x200>;
+ reg-shift = <0>;
+ clocks = <&clk NPCM8XX_CLK_UART>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
+ cpld_serial3: cpld_uart@f8000e00 {
+ device_type = "serial";
+ compatible = "ns16450";
+ reg = <0x0 0xf8000e00 0x0 0x200>;
+ reg-shift = <0>;
+ clocks = <&clk NPCM8XX_CLK_UART>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+};
+
+&serial0 {
+ status = "okay";
+};
+
+&serial1 {
+ status = "okay";
+};
+
+&serial3 {
+ status = "okay";
+};
+
+&serial4 {
+ status = "okay";
+};
+
+&serial5 {
+ status = "okay";
+};
+
+&watchdog1 {
+ status = "okay";
+};
+
+&watchdog2 {
+ status = "okay";
+};
+
+&gmac2 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&r1_pins
+ &r1oen_pins>;
+ use-ncsi;
+};
+
+&gmac3 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&r2_pins
+ &r2oen_pins>;
+ use-ncsi;
+};
+
+&fiu0 {
+ status = "okay";
+ spi-nor@0 {
+ compatible = "jedec,spi-nor";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ spi-rx-bus-width = <2>;
+ spi-tx-bus-width = <2>;
+ reg = <0>;
+ spi-max-frequency = <5000000>;
+ partitions@80000000 {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ bmc@0 {
+ label = "bmc";
+ reg = <0x00000000 0x08000000>;
+ };
+ u-boot@0 {
+ label = "u-boot";
+ reg = <0x00000000 0x003C0000>;
+ };
+ u-boot-env@3c0000 {
+ label = "u-boot-env";
+ reg = <0x003C0000 0x00040000>;
+ };
+ kernel@200000 {
+ label = "kernel";
+ reg = <0x00400000 0x00800000>;
+ };
+ rofs@c00000 {
+ label = "rofs";
+ reg = <0x00C00000 0x03000000>;
+ };
+ rwfs@3c00000 {
+ label = "rwfs";
+ reg = <0x3C00000 0x400000>;
+ };
+ };
+ };
+};
+
+&fiux {
+ spix-mode;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spix_pins>;
+ status = "okay";
+};
+
+&ehci1 {
+ status = "okay";
+};
+
+&ehci2 {
+ status = "okay";
+};
+
+&i3c1 {
+ reg = <0xfff11000 0x1000>,
+ <0xf0851000 0x1000>,
+ <0xf0800304 0x4>;
+ status = "okay";
+ i3c-scl-hz = <8000000>;
+ i2c-scl-hz = <400000>;
+ dma-mux = <8>;
+ use-dma;
+ mctp-controller;
+ hub@0x70 {
+ reg = <0x70 0x3c0 0x00700000>;
+ cp0-ldo = "1.2V";
+ cp1-ldo = "1.2V";
+ tp0145-ldo = "1.2V";
+ tp2367-ldo = "1.2V";
+ tp0145-pullup = "2k";
+ tp2367-pullup = "2k";
+
+ target-port@0 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@1 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@2 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@3 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ };
+};
+
+&i3c2 {
+ reg = <0xfff12000 0x1000>,
+ <0xf0852000 0x1000>,
+ <0xf0800308 0x4>;
+ status = "okay";
+ i3c-scl-hz = <8000000>;
+ i2c-scl-hz = <400000>;
+ dma-mux = <10>;
+ use-dma;
+ mctp-controller;
+ hub@0x70 {
+ reg = <0x70 0x3c0 0x00700000>;
+ cp0-ldo = "1.2V";
+ cp1-ldo = "1.2V";
+ tp0145-ldo = "1.2V";
+ tp2367-ldo = "1.2V";
+ tp0145-pullup = "2k";
+ tp2367-pullup = "2k";
+
+ target-port@0 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@1 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@2 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ target-port@3 {
+ mode = "i3c";
+ pullup = "enabled";
+ };
+ };
+};
+
+&i2c0 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c1 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c2 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c5 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c8 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ i2c-mux@70 {
+ compatible = "nxp,pca9544";
+ i2c-mux-idle-disconnect;
+ reg = <0x70>;
+
+ imux16: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux17: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux18: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux19: i2c@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+ };
+};
+
+&i2c9 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ i2c-mux@71 {
+ compatible = "nxp,pca9544";
+ i2c-mux-idle-disconnect;
+ reg = <0x71>;
+
+ imux20: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux21: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux22: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+
+ imux23: i2c@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+
+ gpio@49 {
+ compatible = "nxp,pca9537";
+ reg = <0x49>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+ };
+ };
+};
+
+&i2c10 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ i2c-mux@74 {
+ compatible = "nxp,pca9544";
+ i2c-mux-idle-disconnect;
+ reg = <0x74>;
+
+ imux28: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@24 {
+ compatible = "nxp,pca9506";
+ reg = <0x24>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-line-names =
+ "","","","",
+ "NIC0_MAIN_PWR_EN","NIC1_MAIN_PWR_EN",
+ "NIC2_MAIN_PWR_EN","NIC3_MAIN_PWR_EN",
+ "","","","","","","","",
+ "","","","","","","","",
+ "","","","","","","","";
+ };
+ };
+
+ imux29: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+ };
+};
+
+&i2c11 {
+ status = "okay";
+
+ power-sensor@10 {
+ compatible = "adi,adm1272";
+ reg = <0x10>;
+ };
+
+ power-sensor@12 {
+ compatible = "adi,adm1272";
+ reg = <0x12>;
+ };
+
+ gpio_ext1: pca9555@20 {
+ compatible = "nxp,pca9555";
+ pinctrl-names = "default";
+ gpio-controller;
+ #gpio-cells = <2>;
+ reg = <0x20>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
+ gpio-line-names =
+ "P48V_OCP_GPIO1","P48V_OCP_GPIO2",
+ "P48V_OCP_GPIO3","FAN_BOARD_0_REVISION_0_R",
+ "FAN_BOARD_0_REVISION_1_R","FAN_BOARD_1_REVISION_0_R",
+ "FAN_BOARD_1_REVISION_1_R","RST_MUX_R_N",
+ "RST_LED_CONTROL_FAN_BOARD_0_N","RST_LED_CONTROL_FAN_BOARD_1_N",
+ "RST_IOEXP_FAN_BOARD_0_N","RST_IOEXP_FAN_BOARD_1_N",
+ "PWRGD_LOAD_SWITCH_FAN_BOARD_0_R","PWRGD_LOAD_SWITCH_FAN_BOARD_1_R",
+ "","";
+ };
+
+ gpio_ext2: pca9555@21 {
+ compatible = "nxp,pca9555";
+ pinctrl-names = "default";
+ gpio-controller;
+ #gpio-cells = <2>;
+ reg = <0x21>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
+ gpio-line-names =
+ "DELTA_MODULE_TYPE","VSENSE_ERR_VDROP_R",
+ "EN_P48V_AUX_0","EN_P48V_AUX_1",
+ "MEDUSA_BOARD_REV_0","MEDUSA_BOARD_REV_1",
+ "MEDUSA_BOARD_REV_2","MEDUSA_BOARD_TYPE",
+ "HSC_OCP_SLOT_ODD_GPIO1","HSC_OCP_SLOT_ODD_GPIO2",
+ "HSC_OCP_SLOT_ODD_GPIO3","HSC_OCP_SLOT_EVEN_GPIO1",
+ "HSC_OCP_SLOT_EVEN_GPIO2","HSC_OCP_SLOT_EVEN_GPIO3",
+ "ADC_TYPE_0_R","ADC_TYPE_1_R";
+ };
+
+ gpio_ext3: pca9555@22 {
+ compatible = "nxp,pca9555";
+ pinctrl-names = "default";
+ gpio-controller;
+ #gpio-cells = <2>;
+ reg = <0x22>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
+ gpio-line-names =
+ "CARD_TYPE_SLOT1","CARD_TYPE_SLOT2",
+ "CARD_TYPE_SLOT3","CARD_TYPE_SLOT4",
+ "CARD_TYPE_SLOT5","CARD_TYPE_SLOT6",
+ "CARD_TYPE_SLOT7","CARD_TYPE_SLOT8",
+ "OC_P48V_HSC_0_N","FLT_P48V_HSC_0_N",
+ "PWRGD_P12V_AUX_1","OC_P48V_HSC_1_N",
+ "FLT_P48V_HSC_1_N","PWRGD_P12V_AUX_1",
+ "MEDUSA_ADC_EFUSE_TYPE_R","P12V_HSC_TYPE";
+ };
+
+ gpio_ext4: pca9555@23 {
+ compatible = "nxp,pca9555";
+ pinctrl-names = "default";
+ gpio-controller;
+ #gpio-cells = <2>;
+ reg = <0x23>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
+ gpio-line-names =
+ "HSC1_ALERT1_R_N","HSC2_ALERT1_R_N",
+ "HSC3_ALERT1_R_N","HSC4_ALERT1_R_N",
+ "HSC5_ALERT1_R_N","HSC6_ALERT1_R_N",
+ "HSC7_ALERT1_R_N","HSC8_ALERT1_R_N",
+ "HSC1_ALERT2_R_N","HSC2_ALERT2_R_N",
+ "HSC3_ALERT2_R_N","HSC4_ALERT2_R_N",
+ "HSC5_ALERT2_R_N","HSC6_ALERT2_R_N",
+ "HSC7_ALERT2_R_N","HSC8_ALERT2_R_N";
+ };
+
+ temperature-sensor@48 {
+ compatible = "ti,tmp75";
+ reg = <0x48>;
+ };
+
+ temperature-sensor@49 {
+ compatible = "ti,tmp75";
+ reg = <0x49>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c128";
+ reg = <0x54>;
+ };
+
+ power-sensor@62 {
+ compatible = "pmbus";
+ reg = <0x62>;
+ };
+
+ power-sensor@64 {
+ compatible = "pmbus";
+ reg = <0x64>;
+ };
+
+ power-sensor@65 {
+ compatible = "pmbus";
+ reg = <0x65>;
+ };
+
+ power-sensor@68 {
+ compatible = "pmbus";
+ reg = <0x68>;
+ };
+};
+
+&i2c12 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ i2c-mux@70 {
+ compatible = "nxp,pca9544";
+ i2c-mux-idle-disconnect;
+ reg = <0x70>;
+
+ imux34: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ temperature-sensor@48 {
+ compatible = "ti,tmp75";
+ reg = <0x48>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c128";
+ reg = <0x50>;
+ };
+
+ eeprom@54 {
+ compatible = "atmel,24c64";
+ reg = <0x54>;
+ };
+
+ rtc@6f {
+ compatible = "nuvoton,nct3018y";
+ reg = <0x6f>;
+ };
+ };
+
+ imux35: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+
+ imux36: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+ };
+
+ imux37: i2c@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+ };
+ };
+};
+
+&i2c13 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ gpio@20 {
+ compatible = "nxp,pca9506";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@21 {
+ compatible = "nxp,pca9506";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@22 {
+ compatible = "nxp,pca9506";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ gpio@23 {
+ compatible = "nxp,pca9506";
+ reg = <0x23>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&i2c14 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+ adc@1d {
+ compatible = "ti,adc128d818";
+ reg = <0x1d>;
+ ti,mode = /bits/ 8 <1>;
+ };
+
+ adc@36 {
+ compatible = "ti,adc128d818";
+ reg = <0x36>;
+ ti,mode = /bits/ 8 <1>;
+ };
+
+ adc@37 {
+ compatible = "ti,adc128d818";
+ reg = <0x37>;
+ ti,mode = /bits/ 8 <1>;
+ };
+
+ temperature-sensor@4e {
+ compatible = "ti,tmp75";
+ reg = <0x4e>;
+ };
+
+ temperature-sensor@4f {
+ compatible = "ti,tmp75";
+ reg = <0x4f>;
+ };
+
+ eeprom@51 {
+ compatible = "atmel,24c128";
+ reg = <0x51>;
+ };
+
+ i2c-mux@74 {
+ compatible = "nxp,pca9546";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ i2c-mux-idle-disconnect;
+ reg = <0x74>;
+
+ imux30: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ adc@1f {
+ compatible = "ti,adc128d818";
+ reg = <0x1f>;
+ ti,mode = /bits/ 8 <1>;
+ };
+
+ pwm@20{
+ compatible = "maxim,max31790";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x20>;
+ channel@4 {
+ reg = <4>;
+ sensor-type = "TACH";
+ };
+
+ channel@5 {
+ reg = <5>;
+ sensor-type = "TACH";
+ };
+ };
+
+ gpio@22{
+ compatible = "ti,tca6424";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ pwm@2f{
+ compatible = "maxim,max31790";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x2f>;
+ channel@4 {
+ reg = <4>;
+ sensor-type = "TACH";
+ };
+
+ channel@5 {
+ reg = <5>;
+ sensor-type = "TACH";
+ };
+ };
+
+ adc@33 {
+ compatible = "maxim,max11615";
+ reg = <0x33>;
+ };
+
+ eeprom@52 {
+ compatible = "atmel,24c128";
+ reg = <0x52>;
+ };
+
+ gpio@61 {
+ compatible = "nxp,pca9552";
+ reg = <0x61>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+ };
+
+ imux31: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ adc@1f {
+ compatible = "ti,adc128d818";
+ reg = <0x1f>;
+ ti,mode = /bits/ 8 <1>;
+ };
+
+ pwm@20{
+ compatible = "maxim,max31790";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x20>;
+ channel@4 {
+ reg = <4>;
+ sensor-type = "TACH";
+ };
+
+ channel@5 {
+ reg = <5>;
+ sensor-type = "TACH";
+ };
+ };
+
+ gpio@22{
+ compatible = "ti,tca6424";
+ reg = <0x22>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+
+ pwm@2f{
+ compatible = "maxim,max31790";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x2f>;
+ channel@4 {
+ reg = <4>;
+ sensor-type = "TACH";
+ };
+
+ channel@5 {
+ reg = <5>;
+ sensor-type = "TACH";
+ };
+ };
+
+ adc@33 {
+ compatible = "maxim,max11615";
+ reg = <0x33>;
+ };
+
+ eeprom@52 {
+ compatible = "atmel,24c128";
+ reg = <0x52>;
+ };
+
+ gpio@61 {
+ compatible = "nxp,pca9552";
+ reg = <0x61>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+ };
+ };
+
+ i2c-mux@73 {
+ compatible = "nxp,pca9544";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ i2c-mux-idle-disconnect;
+ reg = <0x73>;
+
+ imux32: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ adc@35 {
+ compatible = "maxim,max11617";
+ reg = <0x35>;
+ };
+ };
+
+ imux33: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ adc@35 {
+ compatible = "maxim,max11617";
+ reg = <0x35>;
+ };
+ };
+ };
+};
+
+&i2c15 {
+ status = "okay";
+ clock-frequency = <400000>;
+ mctp-controller;
+ multi-master;
+
+ mctp@10 {
+ compatible = "mctp-i2c-controller";
+ reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+ };
+
+ i2c-mux@72 {
+ compatible = "nxp,pca9544";
+ reg = <0x72>;
+
+ imux24: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ mctp-controller;
+ temperature-sensor@1f {
+ compatible = "ti,tmp421";
+ reg = <0x1f>;
+ };
+ };
+
+ imux25: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ mctp-controller;
+ temperature-sensor@1f {
+ compatible = "ti,tmp421";
+ reg = <0x1f>;
+ };
+ };
+
+ imux26: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+ mctp-controller;
+ temperature-sensor@1f {
+ compatible = "ti,tmp421";
+ reg = <0x1f>;
+ };
+ };
+
+ imux27: i2c@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+ mctp-controller;
+ temperature-sensor@1f {
+ compatible = "ti,tmp421";
+ reg = <0x1f>;
+ };
+ };
+ };
+};
+
+&adc {
+ #io-channel-cells = <1>;
+ status = "okay";
+};
+
+&sgpio1 {
+ status = "okay";
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <
+ &jtag2_pins
+ &lpc_pins
+ &pin47
+ &pin4_slew
+ &pin5_slew
+ &pin6_slew
+ &pin7_slew
+ &pin242_slew
+ &pin243_slew
+ &pin244_slew
+ &pin245_slew
+ &bmcuart1_pins
+ &bu4_pins
+ &bu5_pins>;
+
+ gpio0: gpio@f0010000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "","","","","FM_BMC_RTCRST_R","PWRGD_P5V_USB_BMC",
+ "FLAG_P5V_USB_BMC_N","RST_USB_HUB_R_N",
+ "IRQ_BRIDGE_BMC_N","","","","RST_BMC_BRIDGE_R_N",
+ "EN_NIC0_POWER_BMC_R","EN_NIC1_POWER_BMC_R","PWRGD_SLOT6_STBY",
+ "","","","","","","","",
+ "RST_SMB_NIC2_R_N","PWRGD_SLOT5_STBY","","","","","","";
+ };
+
+ gpio1: gpio@f0011000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "","","","PRSNT_SB_SLOT2_BMC_N","PRSNT_SB_SLOT1_BMC_N",
+ "ALT_RTC_BMC_N","ALT_TEMP_BMC_N","PRSNT_OCP_DEBUG_BMC_N",
+ "PRSNT_TPM_BMC_N","","","","INT_SMB_BMC_SLOT1_4_BMC_N",
+ "PRSNT_SB_SLOT4_BMC_N","PWRGD_SLOT2_STBY","",
+ "","","","","","","PWRGD_SLOT3_STBY","PWRGD_SLOT4_STBY",
+ "","RST_PCIE_SLOT7_N","RST_PCIE_SLOT8_N","","",
+ "PWRGD_SLOT1_STBY","PRSNT_SB_SLOT3_BMC_N","";
+ };
+
+ gpio2: gpio@f0012000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "INT_SMB_BMC_SLOT5_8_BMC_N","AC_ON_OFF_BTN_CPLD_SLOT7_N",
+ "AC_ON_OFF_BTN_CPLD_SLOT8_N","FM_RESBTN_SLOT1_BMC_N",
+ "FM_RESBTN_SLOT2_BMC_N","FM_RESBTN_SLOT3_BMC_N",
+ "FM_RESBTN_SLOT4_BMC_N","FM_RESBTN_SLOT5_BMC_N",
+ "FM_RESBTN_SLOT6_BMC_N","FM_RESBTN_SLOT7_BMC_N",
+ "FM_RESBTN_SLOT8_BMC_N","FLT_HSC_SERVER_SLOT4_N",
+ "FLT_HSC_SERVER_SLOT5_N","FLT_HSC_SERVER_SLOT6_N",
+ "FLT_HSC_SERVER_SLOT7_N","FLT_HSC_SERVER_SLOT8_N",
+ "","","","PRSNT_SB_SLOT5_BMC_N","","","","",
+ "","","","RST_SMB_NIC1_R_N","PRSNT_NIC2_N","FM_NIC3_WAKE_N",
+ "AC_ON_OFF_BTN_CPLD_SLOT5_N","";
+ };
+
+ gpio3: gpio@f0013000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "RST_SMB_NIC3_R_N","","","","","","","",
+ "","","","","PWRGD_SLOT7_STBY","PWRGD_SLOT8_STBY",
+ "AC_ON_OFF_BTN_CPLD_SLOT4_N","AC_ON_OFF_BTN_CPLD_SLOT3_N",
+ "AC_ON_OFF_BTN_CPLD_SLOT2_N","AC_ON_OFF_BTN_CPLD_SLOT1_N","","","",
+ "","","",
+ "SEL_BMC_JTAG_MUX_R","PWRGD_SLOT5_STBY","SPI_LOCK_REQ_BMC_N",
+ "SPI_WP_DISABLE_STATUS_R_N","ALT_SMB_BMC_CPLD1_N",
+ "EN_P5V_USB_CPLD_R","RST_SMB_NIC0_R_N",
+ "INT_MEDUSA_IOEXP_TEMP_N";
+ };
+
+ gpio4: gpio@f0014000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "","","","","","","","",
+ "","","","","","","","",
+ "PRSNT_SB_SLOT6_BMC_N","PRSNT_SB_SLOT7_BMC_N",
+ "PRSNT_SB_SLOT8_BMC_N","FM_PWRBRK_NIC_BMC_R2",
+ "ALT_MEDUSA_ADC_N","ALT_SMB_BMC_CPLD2_N",
+ "ALT_MEDUSA_P12V_EFUSE_N","",
+ "RST_PCIE_SLOT2_N","RST_PCIE_SLOT1_N","RST_PCIE_SLOT3_N",
+ "RST_PCIE_SLOT6_N","FLT_HSC_SERVER_SLOT1_N",
+ "FLT_HSC_SERVER_SLOT2_N","INT_SPIDER_ADC_R_N","";
+ };
+
+ gpio5: gpio@f0015000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "","","RTS_BRIDGE_BMC_SLOT5_N","","","","","",
+ "","RTS_BRIDGE_BMC_SLOT6_N","RTS_BRIDGE_BMC_SLOT7_N","","","","",
+ "",
+ "","","","","","","","",
+ "","","","","FM_NIC1_WAKE_N","PRSNT_NIC1_N",
+ "RTS_BRIDGE_BMC_SLOT8_N","AC_ON_OFF_BTN_CPLD_SLOT6_N";
+ };
+
+ gpio6: gpio@f0016000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "FM_NIC0_WAKE_N","","EN_NIC3_POWER_BMC_R","","EN_NIC2_POWER_BMC_R",
+ "","FLT_HSC_SERVER_SLOT3_N","RST_PCIE_SLOT5_N",
+ "","","","","FM_BMC_READY_R2","ALT_SPIDER_TMP75_R_N",
+ "ALT_SPIDER_INA233_R_N","",
+ "FAST_PROCHOT_N","RST_PCIE_SLOT4_N","FM_NIC2_WAKE_N","",
+ "INT_FANBOARD1_IOEXP_N","INT_FANBOARD0_IOEXP_N","","",
+ "","","","","","","","";
+ };
+
+ gpio7: gpio@f0017000 {
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ gpio-line-names =
+ "","","","","","BTN_BMC_R2_N","EN_P3V_BAT_SCALED_R","",
+ "","","","","","","","ALT_P12V_AUX_N",
+ "","","","","","","","",
+ "","","","","","","","";
+ };
+};
+
Add linux device tree entry related to Yosemite 4 specific devices connected to BMC SoC. Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com> --- arch/arm64/boot/dts/nuvoton/Makefile | 1 + .../dts/nuvoton/nuvoton-npcm845-yosemite4.dts | 1493 +++++++++++++++++ 2 files changed, 1494 insertions(+) create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-yosemite4.dts