Re: [PATCH v4 2/2] ARM: dts: aspeed: ventura2: Add Meta ventura2 BMC
Andrew Jeffery <[email protected]>
| Newsgroups | org.ozlabs.lists.linux-aspeed,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <39b9a80fe4f49d72cefb8d3f8f1bb3776b9c4226.camel@codeconstruct.com.au> |
Hi Kyle, Firstly, are you trying to represent multiple revisions of the hardware design in this devicetree? I'm curious due to the 'legacy' labels below. On Fri, 2026-04-24 at 17:30 +0800, Kyle Hsieh wrote: > Add linux device tree entry related to the Meta(Facebook) rmc-node. > The system use an AT2600 BMC. > This node is named "ventura2". > > Signed-off-by: Kyle Hsieh <[email protected]> > --- > arch/arm/boot/dts/aspeed/Makefile | 1 + > .../dts/aspeed/aspeed-bmc-facebook-ventura2.dts | 2925 ++++++++++++++++++++ > 2 files changed, 2926 insertions(+) > > diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/Makefile > index 9adf9278dc94..6b96997629d4 100644 > --- a/arch/arm/boot/dts/aspeed/Makefile > +++ b/arch/arm/boot/dts/aspeed/Makefile > @@ -32,6 +32,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \ > aspeed-bmc-facebook-minipack.dtb \ > aspeed-bmc-facebook-santabarbara.dtb \ > aspeed-bmc-facebook-tiogapass.dtb \ > + aspeed-bmc-facebook-ventura2.dtb \ > aspeed-bmc-facebook-wedge40.dtb \ > aspeed-bmc-facebook-wedge100.dtb \ > aspeed-bmc-facebook-wedge400-data64.dtb \ > diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-ventura2.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-ventura2.dts > new file mode 100644 > index 000000000000..8d4ddb473862 > --- /dev/null > +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-ventura2.dts > @@ -0,0 +1,2925 @@ > +// SPDX-License-Identifier: GPL-2.0 > +// Copyright (c) 2023 Facebook Inc. > +/dts-v1/; > + > +#include "aspeed-g6.dtsi" > +#include <dt-bindings/i2c/i2c.h> > +#include <dt-bindings/gpio/aspeed-gpio.h> > + > +/ { > + model = "Facebook Ventura2 RMC"; > + compatible = "facebook,ventura2-rmc", "aspeed,ast2600"; > + aliases { > + serial2 = &uart3; > + serial4 = &uart5; > + > + /* > + * i2c switch 0-0077, pca9548, 8 child channels assigned > + * with bus number 16-23. > + */ > + i2c16 = &i2c0mux0ch0; > + i2c17 = &i2c0mux0ch1; > + i2c18 = &i2c0mux0ch2; > + i2c19 = &i2c0mux0ch3; > + i2c20 = &i2c0mux0ch4; > + i2c21 = &i2c0mux0ch5; > + i2c22 = &i2c0mux0ch6; > + i2c23 = &i2c0mux0ch7; > + > + /* > + * i2c switch 1-0077, pca9548, 8 child channels assigned > + * with bus number 24-31. > + */ > + i2c24 = &i2c1mux0ch0; > + i2c25 = &i2c1mux0ch1; > + i2c26 = &i2c1mux0ch2; > + i2c27 = &i2c1mux0ch3; > + i2c28 = &i2c1mux0ch4; > + i2c29 = &i2c1mux0ch5; > + i2c30 = &i2c1mux0ch6; > + i2c31 = &i2c1mux0ch7; > + > + /* > + * i2c switch 4-0077, pca9548, 8 child channels assigned > + * with bus number 32-39. > + */ > + i2c32 = &i2c4mux0ch0; > + i2c33 = &i2c4mux0ch1; > + i2c34 = &i2c4mux0ch2; > + i2c35 = &i2c4mux0ch3; > + i2c36 = &i2c4mux0ch4; > + i2c37 = &i2c4mux0ch5; > + i2c38 = &i2c4mux0ch6; > + i2c39 = &i2c4mux0ch7; > + > + /* > + * i2c switch 5-0077, pca9548, 8 child channels assigned > + * with bus number 40-47. > + */ > + i2c40 = &i2c5mux0ch0; > + i2c41 = &i2c5mux0ch1; > + i2c42 = &i2c5mux0ch2; > + i2c43 = &i2c5mux0ch3; > + i2c44 = &i2c5mux0ch4; > + i2c45 = &i2c5mux0ch5; > + i2c46 = &i2c5mux0ch6; > + i2c47 = &i2c5mux0ch7; > + > + /* > + * i2c switch 8-0077, pca9548, 8 child channels assigned > + * with bus number 48-55. > + */ > + i2c48 = &i2c8mux0ch0; > + i2c49 = &i2c8mux0ch1; > + i2c50 = &i2c8mux0ch2; > + i2c51 = &i2c8mux0ch3; > + i2c52 = &i2c8mux0ch4; > + i2c53 = &i2c8mux0ch5; > + i2c54 = &i2c8mux0ch6; > + i2c55 = &i2c8mux0ch7; > + > + /* > + * i2c switch 11-0077, pca9548, 8 child channels assigned > + * with bus number 56-63. > + */ > + i2c56 = &i2c11mux0ch0; > + i2c57 = &i2c11mux0ch1; > + i2c58 = &i2c11mux0ch2; > + i2c59 = &i2c11mux0ch3; > + i2c60 = &i2c11mux0ch4; > + i2c61 = &i2c11mux0ch5; > + i2c62 = &i2c11mux0ch6; > + i2c63 = &i2c11mux0ch7; > + > + /* > + * i2c switch 13-0077, pca9548, 8 child channels assigned > + * with bus number 64-71. > + */ > + i2c64 = &i2c13mux0ch0; > + i2c65 = &i2c13mux0ch1; > + i2c66 = &i2c13mux0ch2; > + i2c67 = &i2c13mux0ch3; > + i2c68 = &i2c13mux0ch4; > + i2c69 = &i2c13mux0ch5; > + i2c70 = &i2c13mux0ch6; > + i2c71 = &i2c13mux0ch7; > + > + /* > + * i2c switch 15-0077, pca9548, 8 child channels assigned > + * with bus number 72-79. > + */ > + i2c72 = &i2c15mux0ch0; > + i2c73 = &i2c15mux0ch1; > + i2c74 = &i2c15mux0ch2; > + i2c75 = &i2c15mux0ch3; > + i2c76 = &i2c15mux0ch4; > + i2c77 = &i2c15mux0ch5; > + i2c78 = &i2c15mux0ch6; > + i2c79 = &i2c15mux0ch7; Can you please add comments justifying why all of these aliases are necessary given a number of them are for busses with no devices described under them? > + }; > + > + chosen { > + stdout-path = "serial4:57600n8"; > + }; > + > + fan_leds { > + compatible = "gpio-leds"; > + > + led-0 { > + label = "fcb0fan0_ledd1_blue"; Given the labels are exposed to userspace and is something applications likely consume, is the double 'd' in led intentional? > + default-state = "off"; > + gpios = <&fan_io_expander0 0 GPIO_ACTIVE_LOW>; > + }; > + > + led-1 { > + label = "fcb0fan1_ledd2_blue"; > + default-state = "off"; > + gpios = <&fan_io_expander0 1 GPIO_ACTIVE_LOW>; > + }; > + > + led-2 { > + label = "fcb0fan2_ledd3_blue"; > + default-state = "off"; > + gpios = <&fan_io_expander1 0 GPIO_ACTIVE_LOW>; > + }; > + > + led-3 { > + label = "fcb0fan3_ledd4_blue"; > + default-state = "off"; > + gpios = <&fan_io_expander1 1 GPIO_ACTIVE_LOW>; > + }; > + > + led-4 { > + label = "fcb0fan0_ledd1_amber"; > + default-state = "off"; > + gpios = <&fan_io_expander0 4 GPIO_ACTIVE_LOW>; > + }; > + > + led-5 { > + label = "fcb0fan1_ledd2_amber"; > + default-state = "off"; > + gpios = <&fan_io_expander0 5 GPIO_ACTIVE_LOW>; > + }; > + > + led-6 { > + label = "fcb0fan2_ledd3_amber"; > + default-state = "off"; > + gpios = <&fan_io_expander1 4 GPIO_ACTIVE_LOW>; > + }; > + > + led-7 { > + label = "fcb0fan3_ledd4_amber"; > + default-state = "off"; > + gpios = <&fan_io_expander1 5 GPIO_ACTIVE_LOW>; > + }; > + }; > + ... > + > +&fmc { > + status = "okay"; > + flash@0 { > + status = "okay"; > + m25p,fast-read; > + label = "bmc"; > + spi-max-frequency = <50000000>; > + #include "openbmc-flash-layout-128.dtsi" > + }; > + flash@1 { > + status = "okay"; > + m25p,fast-read; > + label = "alt-bmc"; > + spi-max-frequency = <50000000>; Perhaps include the alternate flash layout dtsi here? > + }; > +}; > + > +&peci0 { Can you please order the nodes alphabetically. P is not between F and G. > + status = "okay"; > +}; > + > ... > + > +&i2c10 { > + status = "okay"; > + > + legacy_prsnt_io_expander0: gpio@11 { Why 'legacy'? > + compatible = "nxp,pca9555"; > + reg = <0x11>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <40 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PRSNT1_N_BUF_R", "TRAY_PRSNT2_N_BUF_R", > + "TRAY_PRSNT3_N_BUF_R", "TRAY_PRSNT4_N_BUF_R", > + "TRAY_PRSNT5_N_BUF_R", "TRAY_PRSNT6_N_BUF_R", > + "TRAY_PRSNT7_N_BUF_R", "TRAY_PRSNT8_N_BUF_R", > + "TRAY_PRSNT9_N_BUF_R", "TRAY_PRSNT10_N_BUF_R", > + "TRAY_PRSNT11_N_BUF_R", "TRAY_PRSNT12_N_BUF_R", > + "TRAY_PRSNT13_N_BUF_R", "TRAY_PRSNT14_N_BUF_R", > + "TRAY_PRSNT15_N_BUF_R", "TRAY_PRSNT16_N_BUF_R"; > + }; > + > + legacy_prsnt_io_expander1: gpio@12 { > + compatible = "nxp,pca9555"; > + reg = <0x12>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <40 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PRSNT17_N_BUF_R", "TRAY_PRSNT18_N_BUF_R", > + "TRAY_PRSNT19_N_BUF_R", "TRAY_PRSNT20_N_BUF_R", > + "TRAY_PRSNT21_N_BUF_R", "TRAY_PRSNT22_N_BUF_R", > + "TRAY_PRSNT23_N_BUF_R", "TRAY_PRSNT24_N_BUF_R", > + "TRAY_PRSNT25_N_BUF_R", "TRAY_PRSNT26_N_BUF_R", > + "TRAY_PRSNT27_N_BUF_R", "TRAY_PRSNT28_N_BUF_R", > + "TRAY_PRSNT29_N_BUF_R", "TRAY_PRSNT30_N_BUF_R", > + "TRAY_PRSNT31_N_BUF_R", "TRAY_PRSNT32_N_BUF_R"; > + }; > + > + legacy_prsnt_io_expander2: gpio@13 { > + compatible = "nxp,pca9555"; > + reg = <0x13>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <40 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PRSNT33_N_BUF_R", "TRAY_PRSNT34_N_BUF_R", > + "TRAY_PRSNT35_N_BUF_R", "TRAY_PRSNT36_N_BUF_R", > + "TRAY_PRSNT37_N_BUF_R", "TRAY_PRSNT38_N_BUF_R", > + "TRAY_PRSNT39_N_BUF_R", "TRAY_PRSNT40_N_BUF_R", > + "", "", > + "", "", > + "", "", > + "", ""; > + }; > + > + power-monitor@14 { > + compatible = "infineon,xdp710"; > + reg = <0x14>; > + }; > + > + legacy_pwrgd_io_expander1: gpio@15 { > + compatible = "nxp,pca9555"; > + reg = <0x15>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <42 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PWRGD17_N_BUF_R", "TRAY_PWRGD18_N_BUF_R", > + "TRAY_PWRGD19_N_BUF_R", "TRAY_PWRGD20_N_BUF_R", > + "TRAY_PWRGD21_N_BUF_R", "TRAY_PWRGD22_N_BUF_R", > + "TRAY_PWRGD23_N_BUF_R", "TRAY_PWRGD24_N_BUF_R", > + "TRAY_PWRGD25_N_BUF_R", "TRAY_PWRGD26_N_BUF_R", > + "TRAY_PWRGD27_N_BUF_R", "TRAY_PWRGD28_N_BUF_R", > + "TRAY_PWRGD29_N_BUF_R", "TRAY_PWRGD30_N_BUF_R", > + "TRAY_PWRGD31_N_BUF_R", "TRAY_PWRGD32_N_BUF_R"; > + }; > + > + legacy_pwrgd_io_expander2: gpio@16 { > + compatible = "nxp,pca9555"; > + reg = <0x16>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <42 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PWRGD33_N_BUF_R", "TRAY_PWRGD34_N_BUF_R", > + "TRAY_PWRGD35_N_BUF_R", "TRAY_PWRGD36_N_BUF_R", > + "TRAY_PWRGD37_N_BUF_R", "TRAY_PWRGD38_N_BUF_R", > + "TRAY_PWRGD39_N_BUF_R", "TRAY_PWRGD40_N_BUF_R", > + "", "", > + "", "", > + "", "", > + "", ""; > + }; > + > + legacy_leak_io_expander0: gpio@17 { > + compatible = "nxp,pca9555"; > + reg = <0x17>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <46 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_LEAK_DETECT1_N_BUF_R", "TRAY_LEAK_DETECT2_N_BUF_R", > + "TRAY_LEAK_DETECT3_N_BUF_R", "TRAY_LEAK_DETECT4_N_BUF_R", > + "TRAY_LEAK_DETECT5_N_BUF_R", "TRAY_LEAK_DETECT6_N_BUF_R", > + "TRAY_LEAK_DETECT7_N_BUF_R", "TRAY_LEAK_DETECT8_N_BUF_R", > + "TRAY_LEAK_DETECT9_N_BUF_R", "TRAY_LEAK_DETECT10_N_BUF_R", > + "TRAY_LEAK_DETECT11_N_BUF_R", "TRAY_LEAK_DETECT12_N_BUF_R", > + "TRAY_LEAK_DETECT13_N_BUF_R", "TRAY_LEAK_DETECT14_N_BUF_R", > + "TRAY_LEAK_DETECT15_N_BUF_R", "TRAY_LEAK_DETECT16_N_BUF_R"; > + }; > + > + legacy_leak_io_expander1: gpio@18 { > + compatible = "nxp,pca9555"; > + reg = <0x18>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <46 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_LEAK_DETECT17_N_BUF_R", "TRAY_LEAK_DETECT18_N_BUF_R", > + "TRAY_LEAK_DETECT19_N_BUF_R", "TRAY_LEAK_DETECT20_N_BUF_R", > + "TRAY_LEAK_DETECT21_N_BUF_R", "TRAY_LEAK_DETECT22_N_BUF_R", > + "TRAY_LEAK_DETECT23_N_BUF_R", "TRAY_LEAK_DETECT24_N_BUF_R", > + "TRAY_LEAK_DETECT25_N_BUF_R", "TRAY_LEAK_DETECT26_N_BUF_R", > + "TRAY_LEAK_DETECT27_N_BUF_R", "TRAY_LEAK_DETECT28_N_BUF_R", > + "TRAY_LEAK_DETECT29_N_BUF_R", "TRAY_LEAK_DETECT30_N_BUF_R", > + "TRAY_LEAK_DETECT31_N_BUF_R", "TRAY_LEAK_DETECT32_N_BUF_R"; > + }; > + > + legacy_leak_io_expander2: gpio@19 { > + compatible = "nxp,pca9555"; > + reg = <0x19>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <46 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_LEAK_DETECT33_N_BUF_R", "TRAY_LEAK_DETECT34_N_BUF_R", > + "TRAY_LEAK_DETECT35_N_BUF_R", "TRAY_LEAK_DETECT36_N_BUF_R", > + "TRAY_LEAK_DETECT37_N_BUF_R", "TRAY_LEAK_DETECT38_N_BUF_R", > + "TRAY_LEAK_DETECT39_N_BUF_R", "TRAY_LEAK_DETECT40_N_BUF_R", > + "", "", > + "", "", > + "", "", > + "", ""; > + }; > + > + legacy_small_leak_io_expander0: gpio@1a { > + compatible = "nxp,pca9555"; > + reg = <0x1a>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <44 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_SMALL_LEAK1_N_BUF_R", "TRAY_SMALL_LEAK2_N_BUF_R", > + "TRAY_SMALL_LEAK3_N_BUF_R", "TRAY_SMALL_LEAK4_N_BUF_R", > + "TRAY_SMALL_LEAK5_N_BUF_R", "TRAY_SMALL_LEAK6_N_BUF_R", > + "TRAY_SMALL_LEAK7_N_BUF_R", "TRAY_SMALL_LEAK8_N_BUF_R", > + "TRAY_SMALL_LEAK9_N_BUF_R", "TRAY_SMALL_LEAK10_N_BUF_R", > + "TRAY_SMALL_LEAK11_N_BUF_R", "TRAY_SMALL_LEAK12_N_BUF_R", > + "TRAY_SMALL_LEAK13_N_BUF_R", "TRAY_SMALL_LEAK14_N_BUF_R", > + "TRAY_SMALL_LEAK15_N_BUF_R", "TRAY_SMALL_LEAK16_N_BUF_R"; > + }; > + > + legacy_small_leak_io_expander1: gpio@1b { > + compatible = "nxp,pca9555"; > + reg = <0x1b>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <44 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_SMALL_LEAK17_N_BUF_R", "TRAY_SMALL_LEAK18_N_BUF_R", > + "TRAY_SMALL_LEAK19_N_BUF_R", "TRAY_SMALL_LEAK20_N_BUF_R", > + "TRAY_SMALL_LEAK21_N_BUF_R", "TRAY_SMALL_LEAK22_N_BUF_R", > + "TRAY_SMALL_LEAK23_N_BUF_R", "TRAY_SMALL_LEAK24_N_BUF_R", > + "TRAY_SMALL_LEAK25_N_BUF_R", "TRAY_SMALL_LEAK26_N_BUF_R", > + "TRAY_SMALL_LEAK27_N_BUF_R", "TRAY_SMALL_LEAK28_N_BUF_R", > + "TRAY_SMALL_LEAK29_N_BUF_R", "TRAY_SMALL_LEAK30_N_BUF_R", > + "TRAY_SMALL_LEAK31_N_BUF_R", "TRAY_SMALL_LEAK32_N_BUF_R"; > + }; > + > + legacy_small_leak_io_expander2: gpio@1c { > + compatible = "nxp,pca9555"; > + reg = <0x1c>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <44 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_SMALL_LEAK33_N_BUF_R", "TRAY_SMALL_LEAK34_N_BUF_R", > + "TRAY_SMALL_LEAK35_N_BUF_R", "TRAY_SMALL_LEAK36_N_BUF_R", > + "TRAY_SMALL_LEAK37_N_BUF_R", "TRAY_SMALL_LEAK38_N_BUF_R", > + "TRAY_SMALL_LEAK39_N_BUF_R", "TRAY_SMALL_LEAK40_N_BUF_R", > + "", "", > + "", "", > + "", "", > + "", ""; > + }; > + > + legacy_pwrgd_io_expander0: gpio@28 { > + compatible = "nxp,pca9555"; > + reg = <0x28>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&sgpiom0>; > + interrupts = <42 IRQ_TYPE_LEVEL_LOW>; > + > + gpio-line-names = > + "TRAY_PWRGD1_N_BUF_R", "TRAY_PWRGD2_N_BUF_R", > + "TRAY_PWRGD3_N_BUF_R", "TRAY_PWRGD4_N_BUF_R", > + "TRAY_PWRGD5_N_BUF_R", "TRAY_PWRGD6_N_BUF_R", > + "TRAY_PWRGD7_N_BUF_R", "TRAY_PWRGD8_N_BUF_R", > + "TRAY_PWRGD9_N_BUF_R", "TRAY_PWRGD10_N_BUF_R", > + "TRAY_PWRGD11_N_BUF_R", "TRAY_PWRGD12_N_BUF_R", > + "TRAY_PWRGD13_N_BUF_R", "TRAY_PWRGD14_N_BUF_R", > + "TRAY_PWRGD15_N_BUF_R", "TRAY_PWRGD16_N_BUF_R"; > + }; > + ... > + > +&mdio0 { > + status = "okay"; > +}; > + > +&peci0 { > + status = "okay"; > +}; Ah, so the earlier peci node is redundant. Can you please remove it? Andrew