Initial introduction of Facebook Bletchley equipped with
Aspeed 2600 BMC SoC.
Signed-off-by: Howard Chiu <[email protected]>
---
arch/arm/boot/dts/Makefile | 1 +
.../dts/aspeed-bmc-facebook-bletchley.dts | 1160 +++++++++++++++++
2 files changed, 1161 insertions(+)
create mode 100644 arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 7e0934180724..2cc2d804e75a 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1474,6 +1474,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
aspeed-bmc-facebook-wedge400.dtb \
aspeed-bmc-facebook-yamp.dtb \
aspeed-bmc-facebook-yosemitev2.dtb \
+ aspeed-bmc-facebook-bletchley.dtb \
aspeed-bmc-ibm-everest.dtb \
aspeed-bmc-ibm-rainier.dtb \
aspeed-bmc-ibm-rainier-1s4u.dtb \
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
new file mode 100644
index 000000000000..af30be95fb23
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
@@ -0,0 +1,1160 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2021 Facebook Inc.
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/leds/leds-pca955x.h>
+#include <dt-bindings/usb/pd.h>
+
+/ {
+ model = "Facebook Bletchley BMC";
+ compatible = "facebook,bletchley-bmc", "aspeed,ast2600";
+
+ aliases {
+ serial4 = &uart5;
+ };
+
+ chosen {
+ bootargs = "console=ttyS4,115200n8";
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x80000000 0x80000000>;
+ };
+
+ iio-hwmon {
+ compatible = "iio-hwmon";
+ io-channels = <&adc0 0>, <&adc0 1>, <&adc0 2>, <&adc0 3>,
+ <&adc0 4>, <&adc0 5>, <&adc0 6>, <&adc0 7>,
+ <&adc1 0>, <&adc1 1>, <&adc1 2>, <&adc1 3>,
+ <&adc1 4>, <&adc1 5>, <&adc1 6>, <&adc1 7>;
+ };
+
+ spi_gpio: spi-gpio {
+ status = "okay";
+ compatible = "spi-gpio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ gpio-sck = <&gpio0 ASPEED_GPIO(Z, 3) GPIO_ACTIVE_HIGH>;
+ gpio-mosi = <&gpio0 ASPEED_GPIO(Z, 4) GPIO_ACTIVE_HIGH>;
+ gpio-miso = <&gpio0 ASPEED_GPIO(Z, 5) GPIO_ACTIVE_HIGH>;
+ num-chipselects = <1>;
+ cs-gpios = <&gpio0 ASPEED_GPIO(Z, 0) GPIO_ACTIVE_LOW>;
+
+ tpmdev@0 {
+ compatible = "tcg,tpm_tis-spi";
+ spi-max-frequency = <33000000>;
+ reg = <0>;
+ };
+ };
+
+ switchphy: ethernet-phy@0 {
+ // Fixed-link
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ sys_log_id {
+ retain-state-shutdown;
+ default-state = "keep";
+ gpios = <&front_leds 0 GPIO_ACTIVE_HIGH>;
+ };
+ fan0_blue {
+ retain-state-shutdown;
+ default-state = "on";
+ gpios = <&fan_ioexp 8 GPIO_ACTIVE_HIGH>;
+ };
+ fan1_blue {
+ retain-state-shutdown;
+ default-state = "on";
+ gpios = <&fan_ioexp 9 GPIO_ACTIVE_HIGH>;
+ };
+ fan2_blue {
+ retain-state-shutdown;
+ default-state = "on";
+ gpios = <&fan_ioexp 10 GPIO_ACTIVE_HIGH>;
+ };
+ fan3_blue {
+ retain-state-shutdown;
+ default-state = "on";
+ gpios = <&fan_ioexp 11 GPIO_ACTIVE_HIGH>;
+ };
+ fan0_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&fan_ioexp 12 GPIO_ACTIVE_HIGH>;
+ };
+ fan1_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&fan_ioexp 13 GPIO_ACTIVE_HIGH>;
+ };
+ fan2_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&fan_ioexp 14 GPIO_ACTIVE_HIGH>;
+ };
+ fan3_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&fan_ioexp 15 GPIO_ACTIVE_HIGH>;
+ };
+ sled0_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled0_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled0_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled0_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ sled1_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled1_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled1_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled1_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ sled2_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled2_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled2_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled2_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ sled3_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled3_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled3_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled3_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ sled4_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled4_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled4_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled4_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ sled5_ember {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled5_leds 0 GPIO_ACTIVE_LOW>;
+ };
+ sled5_blue {
+ retain-state-shutdown;
+ default-state = "off";
+ gpios = <&sled5_leds 1 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&mac2 {
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&switchphy>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_rgmii3_default>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+};
+
+&rtc {
+ status = "okay";
+};
+
+&fmc {
+ status = "okay";
+ flash@0 {
+ status = "okay";
+ m25p,fast-read;
+ label = "bmc";
+ spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout-64.dtsi"
+ };
+};
+
+&spi2 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_spi2_default>;
+
+ flash@0 {
+ status = "okay";
+ m25p,fast-read;
+ label = "pnor";
+ spi-max-frequency = <100000000>;
+ };
+};
+
+&uart5 {
+ // Workaround for A0
+ compatible = "snps,dw-apb-uart";
+};
+
+&i2c0 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled0_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED0_BMC_CCG5_INT","SLED0_INA230_ALERT","SLED0_P12V_STBY_ALERT",
+ "SLED0_SSD_ALERT","SLED0_MS_DETECT","SLED0_MD_REF_PWM","",
+ "SLED0_MD_STBY_RESET","SLED0_MD_IOEXP_EN_FAULT","SLED0_MD_DIR","SLED0_MD_DECAY",
+ "SLED0_MD_MODE1","SLED0_MD_MODE2","SLED0_MD_MODE3","SLED0_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled0_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED0_EMBER_LED","SLED0_BLUE_LED","SLED0_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled0_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled1_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED1_BMC_CCG5_INT","SLED1_INA230_ALERT","SLED1_P12V_STBY_ALERT",
+ "SLED1_SSD_ALERT","SLED1_MS_DETECT","SLED1_MD_REF_PWM","",
+ "SLED1_MD_STBY_RESET","SLED1_MD_IOEXP_EN_FAULT","SLED1_MD_DIR","SLED1_MD_DECAY",
+ "SLED1_MD_MODE1","SLED1_MD_MODE2","SLED1_MD_MODE3","SLED1_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled1_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED1_EMBER_LED","SLED1_BLUE_LED","SLED1_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled1_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c2 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled2_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED2_BMC_CCG5_INT","SLED2_INA230_ALERT","SLED2_P12V_STBY_ALERT",
+ "SLED2_SSD_ALERT","SLED2_MS_DETECT","SLED2_MD_REF_PWM","",
+ "SLED2_MD_STBY_RESET","SLED2_MD_IOEXP_EN_FAULT","SLED2_MD_DIR","SLED2_MD_DECAY",
+ "SLED2_MD_MODE1","SLED2_MD_MODE2","SLED2_MD_MODE3","SLED2_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled2_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED2_EMBER_LED","SLED2_BLUE_LED","SLED2_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled2_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled3_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED3_BMC_CCG5_INT","SLED3_INA230_ALERT","SLED3_P12V_STBY_ALERT",
+ "SLED3_SSD_ALERT","SLED3_MS_DETECT","SLED3_MD_REF_PWM","",
+ "SLED3_MD_STBY_RESET","SLED3_MD_IOEXP_EN_FAULT","SLED3_MD_DIR","SLED3_MD_DECAY",
+ "SLED3_MD_MODE1","SLED3_MD_MODE2","SLED3_MD_MODE3","SLED3_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled3_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED3_EMBER_LED","SLED3_BLUE_LED","SLED3_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled3_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled4_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED4_BMC_CCG5_INT","SLED4_INA230_ALERT","SLED4_P12V_STBY_ALERT",
+ "SLED4_SSD_ALERT","SLED4_MS_DETECT","SLED4_MD_REF_PWM","",
+ "SLED4_MD_STBY_RESET","SLED4_MD_IOEXP_EN_FAULT","SLED4_MD_DIR","SLED4_MD_DECAY",
+ "SLED4_MD_MODE1","SLED4_MD_MODE2","SLED4_MD_MODE3","SLED4_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled4_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED4_EMBER_LED","SLED4_BLUE_LED","SLED4_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled4_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c5 {
+ status = "okay";
+ /* TODO: Add HSC MP5023 */
+ /* TODO: Add ADC INA230 */
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ sled5_ioexp: pca9539@76 {
+ compatible = "nxp,pca9539";
+ reg = <0x76>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "","SLED5_BMC_CCG5_INT","SLED5_INA230_ALERT","SLED5_P12V_STBY_ALERT",
+ "SLED5_SSD_ALERT","SLED5_MS_DETECT","SLED5_MD_REF_PWM","",
+ "SLED5_MD_STBY_RESET","SLED5_MD_IOEXP_EN_FAULT","SLED5_MD_DIR","SLED5_MD_DECAY",
+ "SLED5_MD_MODE1","SLED5_MD_MODE2","SLED5_MD_MODE3","SLED5_AC_PWR_EN";
+
+ gpio@0 {
+ reg = <0>;
+ };
+ gpio@1 {
+ reg = <1>;
+ };
+ gpio@2 {
+ reg = <2>;
+ };
+ gpio@3 {
+ reg = <3>;
+ };
+ gpio@4 {
+ reg = <4>;
+ };
+ gpio@5 {
+ reg = <5>;
+ };
+ gpio@6 {
+ reg = <6>;
+ };
+ gpio@7 {
+ reg = <7>;
+ };
+ gpio@8 {
+ reg = <8>;
+ };
+ gpio@9 {
+ reg = <9>;
+ };
+ gpio@10 {
+ reg = <10>;
+ };
+ gpio@11 {
+ reg = <11>;
+ };
+ gpio@12 {
+ reg = <12>;
+ };
+ gpio@13 {
+ reg = <13>;
+ };
+ gpio@14 {
+ reg = <14>;
+ };
+ gpio@15 {
+ reg = <15>;
+ };
+ };
+
+ sled5_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SLED5_EMBER_LED","SLED5_BLUE_LED","SLED5_RST_IOEXP","",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+
+ sled5_fusb302: typec-portc@54 {
+ compatible = "fcs,fusb302";
+ reg = <0x54>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+ PDO_VAR(3000, 12000, 3000)
+ PDO_PPS_APDO(3000, 11000, 3000)>;
+ op-sink-microwatt = <10000000>;
+ };
+ };
+};
+
+&i2c6 {
+ status = "okay";
+
+ eeprom@56 {
+ compatible = "atmel,24c64";
+ reg = <0x56>;
+ };
+
+ rtc@51 {
+ compatible = "nxp,pcf85263";
+ reg = <0x51>;
+ };
+};
+
+&i2c10 {
+ status = "okay";
+
+ hdc1080@40 {
+ compatible = "ti,hdc1080";
+ reg = <0x40>;
+ };
+
+ front_leds: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "SYSTEM_LOG_ID_LED","PWRGD_P5V_STBY","PWRGD_P1V0_DVDD","PWRGD_P1V0_AVDD",
+ "","","","",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@3 {
+ reg = <3>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+};
+
+&i2c12 {
+ status = "okay";
+
+ adm1278@11 {
+ compatible = "adi,adm1278";
+ reg = <0x11>;
+ };
+
+ tmp421@4c {
+ compatible = "ti,tmp421";
+ reg = <0x4c>;
+ };
+
+ tmp421@4f {
+ compatible = "ti,tmp421";
+ reg = <0x4f>;
+ };
+
+ fan_ioexp: pca9552@67 {
+ compatible = "nxp,pca9552";
+ reg = <0x67>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ gpio-line-names =
+ "FAN0_PRSNT","FAN1_PRSNT","FAN2_PRSNT","FAN3_PRSNT",
+ "FAN0_PWRGD","FAN1_PWRGD","FAN2_PWRGD","FAN3_PWRGD",
+ "","","","",
+ "","","","";
+
+ gpio@0 {
+ reg = <0>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@1 {
+ reg = <1>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@2 {
+ reg = <2>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@3 {
+ reg = <3>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@4 {
+ reg = <4>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@5 {
+ reg = <5>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@6 {
+ reg = <6>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@7 {
+ reg = <7>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@8 {
+ reg = <8>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@9 {
+ reg = <9>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@10 {
+ reg = <10>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@11 {
+ reg = <11>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@12 {
+ reg = <12>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@13 {
+ reg = <13>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@14 {
+ reg = <14>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ gpio@15 {
+ reg = <15>;
+ type = <PCA955X_TYPE_GPIO>;
+ };
+ };
+};
+
+&i2c13 {
+ multi-master;
+ aspeed,hw-timeout-ms = <1000>;
+ status = "okay";
+};
+
+&gpio0 {
+ gpio-line-names =
+ /*A0-A7*/ "","","","","","","","",
+ /*B0-B7*/ "","","","","","","","",
+ /*C0-C7*/ "","","","","","","","",
+ /*D0-D7*/ "","","","","","","","",
+ /*E0-E7*/ "","","","","","","","",
+ /*F0-F7*/ "","","","","","","","",
+ /*G0-G7*/ "","","","","","","","",
+ /*H0-H7*/ "","","","","","","","",
+ /*I0-I7*/ "","","","","","","","",
+ /*J0-J7*/ "","","","","","","","",
+ /*K0-K7*/ "","","","","","","","",
+ /*L0-L7*/ "","","","","","","","",
+ /*M0-M7*/ "alert_sled1","alert_sled2",
+ "alert_sled3","alert_sled4",
+ "alert_sled5","alert_sled6",
+ "p12v_aux_alert1","",
+ /*N0-N7*/ "","","","","","","","",
+ /*O0-O7*/ "","","","","","","","",
+ /*P0-P7*/ "","","","","","","","",
+ /*Q0-Q7*/ "","","","","","","","",
+ /*R0-R7*/ "","","","","","","","",
+ /*S0-S7*/ "","","","","","","","",
+ /*T0-T7*/ "","","","","","","","",
+ /*U0-U7*/ "","","","","","","","",
+ /*V0-V7*/ "","","","","","","","",
+ /*W0-W7*/ "","","","","","","","",
+ /*X0-X7*/ "","","","","","","","",
+ /*Y0-Y7*/ "","","","","","","","",
+ /*Z0-Z7*/ "","","","","","","","";
+};
+
+&adc0 {
+ vref = <1800>;
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_adc0_default &pinctrl_adc1_default
+ &pinctrl_adc2_default &pinctrl_adc3_default
+ &pinctrl_adc4_default &pinctrl_adc5_default
+ &pinctrl_adc6_default &pinctrl_adc7_default>;
+};
+
+&adc1 {
+ vref = <2500>;
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_adc8_default &pinctrl_adc9_default
+ &pinctrl_adc10_default &pinctrl_adc11_default
+ &pinctrl_adc12_default &pinctrl_adc13_default
+ &pinctrl_adc14_default &pinctrl_adc15_default>;
+};
--
2.25.1
Hello Howard,
Thanks for supplying this. I have a few comments below.
On Wed, Nov 03, 2021 at 03:14:18PM +0800, Howard Chiu wrote:
> Initial introduction of Facebook Bletchley equipped with
> Aspeed 2600 BMC SoC.
>
> Signed-off-by: Howard Chiu <[email protected]>
> ---
> arch/arm/boot/dts/Makefile | 1 +
> .../dts/aspeed-bmc-facebook-bletchley.dts | 1160 +++++++++++++++++
> 2 files changed, 1161 insertions(+)
> create mode 100644 arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 7e0934180724..2cc2d804e75a 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -1474,6 +1474,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
> aspeed-bmc-facebook-wedge400.dtb \
> aspeed-bmc-facebook-yamp.dtb \
> aspeed-bmc-facebook-yosemitev2.dtb \
> + aspeed-bmc-facebook-bletchley.dtb \
> aspeed-bmc-ibm-everest.dtb \
> aspeed-bmc-ibm-rainier.dtb \
> aspeed-bmc-ibm-rainier-1s4u.dtb \
I believe the preference is to keep these sorted.
> diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
> new file mode 100644
> index 000000000000..af30be95fb23
> --- /dev/null
> +++ b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
> +
> + chosen {
> + bootargs = "console=ttyS4,115200n8";
> + };
Do we want this to be 115200 or 57600?
> + fan1_ember {
> + retain-state-shutdown;
> + default-state = "off";
> + gpios = <&fan_ioexp 13 GPIO_ACTIVE_HIGH>;
I see a number of references to 'ember'/'EMBER'. I think the intention is
'amber'.
amber: a honey-yellow color typical of amber
or a yellow light used as a cautionary signal
ember: a small piece of burning or glowing coal or wood in a dying fire.
> +&fmc {
> + status = "okay";
> + flash@0 {
> + status = "okay";
> + m25p,fast-read;
> + label = "bmc";
> + spi-max-frequency = <50000000>;
> +#include "openbmc-flash-layout-64.dtsi"
Is this board using 64MB or 128MB modules? Many of the newer systems have been
starting to use 128MB. I just want to confirm this is correct.
> + sled0_ioexp: pca9539@76 {
> + compatible = "nxp,pca9539";
> + reg = <0x76>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + gpio-controller;
> + #gpio-cells = <2>;
> +
> + gpio-line-names =
> + "","SLED0_BMC_CCG5_INT","SLED0_INA230_ALERT","SLED0_P12V_STBY_ALERT",
> + "SLED0_SSD_ALERT","SLED0_MS_DETECT","SLED0_MD_REF_PWM","",
> + "SLED0_MD_STBY_RESET","SLED0_MD_IOEXP_EN_FAULT","SLED0_MD_DIR","SLED0_MD_DECAY",
> + "SLED0_MD_MODE1","SLED0_MD_MODE2","SLED0_MD_MODE3","SLED0_AC_PWR_EN";
In general, in OpenBMC, we have a preference for the GPIOs to not be schematic
names but to be named based on their [software-oriented] function. Please take
a look at:
https://github.com/openbmc/docs/blob/master/designs/device-tree-gpio-naming.md
Any function you see that isn't documented there we should try to get documented
before fixing the GPIO name to match it.
> + gpio-line-names =
> + "SLED0_EMBER_LED","SLED0_BLUE_LED","SLED0_RST_IOEXP","",
The LEDs are ones I know are already documented in the above linked file.
> +&i2c13 {
> + multi-master;
> + aspeed,hw-timeout-ms = <1000>;
> + status = "okay";
> +};
Was this intentional to have defined a multi-master bus with nothing on it?
--
Patrick Williams
Hi Patrick
> Hello Howard,
>
> Thanks for supplying this. I have a few comments below.
>
> On Wed, Nov 03, 2021 at 03:14:18PM +0800, Howard Chiu wrote:
> > Initial introduction of Facebook Bletchley equipped with
> > Aspeed 2600 BMC SoC.
> >
> > Signed-off-by: Howard Chiu <[email protected]>
> > ---
> > arch/arm/boot/dts/Makefile | 1 +
> > .../dts/aspeed-bmc-facebook-bletchley.dts | 1160
> +++++++++++++++++
> > 2 files changed, 1161 insertions(+)
> > create mode 100644
> arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index 7e0934180724..2cc2d804e75a 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -1474,6 +1474,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
> > aspeed-bmc-facebook-wedge400.dtb \
> > aspeed-bmc-facebook-yamp.dtb \
> > aspeed-bmc-facebook-yosemitev2.dtb \
> > + aspeed-bmc-facebook-bletchley.dtb \
> > aspeed-bmc-ibm-everest.dtb \
> > aspeed-bmc-ibm-rainier.dtb \
> > aspeed-bmc-ibm-rainier-1s4u.dtb \
>
> I believe the preference is to keep these sorted.
Will be fixed in the next patch
>
> > diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
> b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
> > new file mode 100644
> > index 000000000000..af30be95fb23
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
>
> > +
> > + chosen {
> > + bootargs = "console=ttyS4,115200n8";
> > + };
>
> Do we want this to be 115200 or 57600?
Will be modified to 57600 in the next patch
>
> > + fan1_ember {
> > + retain-state-shutdown;
> > + default-state = "off";
> > + gpios = <&fan_ioexp 13 GPIO_ACTIVE_HIGH>;
>
> I see a number of references to 'ember'/'EMBER'. I think the intention is
> 'amber'.
>
> amber: a honey-yellow color typical of amber
> or a yellow light used as a cautionary signal
>
> ember: a small piece of burning or glowing coal or wood in a dying fire.
Will be changed to "amber" in the next patch
>
>
> > +&fmc {
> > + status = "okay";
> > + flash@0 {
> > + status = "okay";
> > + m25p,fast-read;
> > + label = "bmc";
> > + spi-max-frequency = <50000000>;
> > +#include "openbmc-flash-layout-64.dtsi"
>
> Is this board using 64MB or 128MB modules? Many of the newer systems
> have been
> starting to use 128MB. I just want to confirm this is correct.
1Gb SPI flash, MX66L1G45GMI-08G
>
> > + sled0_ioexp: pca9539@76 {
> > + compatible = "nxp,pca9539";
> > + reg = <0x76>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + gpio-controller;
> > + #gpio-cells = <2>;
> > +
> > + gpio-line-names =
> > +
> "","SLED0_BMC_CCG5_INT","SLED0_INA230_ALERT","SLED0_P12V_STBY_
> ALERT",
> > +
> "SLED0_SSD_ALERT","SLED0_MS_DETECT","SLED0_MD_REF_PWM","",
> > +
> "SLED0_MD_STBY_RESET","SLED0_MD_IOEXP_EN_FAULT","SLED0_MD_D
> IR","SLED0_MD_DECAY",
> > +
> "SLED0_MD_MODE1","SLED0_MD_MODE2","SLED0_MD_MODE3","SLED
> 0_AC_PWR_EN";
>
> In general, in OpenBMC, we have a preference for the GPIOs to not be
> schematic
> names but to be named based on their [software-oriented] function. Please
> take
> a look at:
>
>
> https://github.com/openbmc/docs/blob/master/designs/device-tree-gpio-na
> ming.md
>
> Any function you see that isn't documented there we should try to get
> documented
> before fixing the GPIO name to match it.
>
I intend to delete them for now if I have to document them first, because most of them are platform-specific GPIO, not for general purpose and also not suitable to current OpenBMC.
For example, OpenBMC believes there is only one GPIO to be used to power on the chassis, but Bletchley has six.
I define gpio-line-names for gpioset/geioget/phosphor-multi-gpio-monitor usage, and they can be replaced with gpiochip number and offset instead.
The disadvantage is that they won't be human-friendly when TEs develop their tool to test these GPIOs.
> > + gpio-line-names =
> > + "SLED0_EMBER_LED","SLED0_BLUE_LED","SLED0_RST_IOEXP","",
>
> The LEDs are ones I know are already documented in the above linked file.
I can delete them because gpio-line-names is not necessary for usage.
They are added for human-friendly usage when using GPIO tools.
>
> > +&i2c13 {
> > + multi-master;
> > + aspeed,hw-timeout-ms = <1000>;
> > + status = "okay";
> > +};
>
> Was this intentional to have defined a multi-master bus with nothing on it?
There is a OCP debug card which is a hot plugging device.
We only need to specify this bus with "multi-mater" property for IPMB support.
>
> --
> Patrick Williams
On Thu, Nov 04, 2021 at 03:30:08AM +0000, Howard Chiu (邱冠睿) wrote:
> > Is this board using 64MB or 128MB modules? Many of the newer systems
> > have been
> > starting to use 128MB. I just want to confirm this is correct.
> 1Gb SPI flash, MX66L1G45GMI-08G
1Gb = 1024Mb / 8 = 128MB, right? Shouldn't we use the 128MB layout?
> > > + sled0_ioexp: pca9539@76 {
> > > + compatible = "nxp,pca9539";
> > > + reg = <0x76>;
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > + gpio-controller;
> > > + #gpio-cells = <2>;
> > > +
> > > + gpio-line-names =
> > > +
> > "","SLED0_BMC_CCG5_INT","SLED0_INA230_ALERT","SLED0_P12V_STBY_
> > ALERT",
> > > +
> > "SLED0_SSD_ALERT","SLED0_MS_DETECT","SLED0_MD_REF_PWM","",
> > > +
> > "SLED0_MD_STBY_RESET","SLED0_MD_IOEXP_EN_FAULT","SLED0_MD_D
> > IR","SLED0_MD_DECAY",
> > > +
> > "SLED0_MD_MODE1","SLED0_MD_MODE2","SLED0_MD_MODE3","SLED
> > 0_AC_PWR_EN";
> >
> > In general, in OpenBMC, we have a preference for the GPIOs to not be
> > schematic
> > names but to be named based on their [software-oriented] function. Please
> > take
> > a look at:
> >
> >
> > https://github.com/openbmc/docs/blob/master/designs/device-tree-gpio-na
> > ming.md
> >
> > Any function you see that isn't documented there we should try to get
> > documented
> > before fixing the GPIO name to match it.
> >
> I intend to delete them for now if I have to document them first, because
> most of them are platform-specific GPIO, not for general purpose and also not
> suitable to current OpenBMC.
> For example, OpenBMC believes there is only one GPIO to be used to power on
> the chassis, but Bletchley has six.
> I define gpio-line-names for gpioset/geioget/phosphor-multi-gpio-monitor
> usage, and they can be replaced with gpiochip number and offset instead.
> The disadvantage is that they won't be human-friendly when TEs develop their tool to test these GPIOs.
> > > + gpio-line-names =
> > > + "SLED0_EMBER_LED","SLED0_BLUE_LED","SLED0_RST_IOEXP","",
Deleting them entirely sounds even less desirable. If these were just for
humans, then having a schematic name is better than nothing. But when you
suggest their usage to be "TEs develop their tool to test these GPIOs" that
seems to indicate this becomes ABI and we want stable, documented names, to
limit the churn on users.
I don't believe the gpiochip/pin numbers are considered stable ABI. Our team
has previously had to do an abstraction between 4.x and 5.x kernel because of
changes in that space.
My initial preference would be that you leave them in as schematic names, for
human purposes, until you start using them in code at which point they should be
well-documented and using the style we've set out in the document above.
Re: "OpenBMC believes there is only one GPIO to be used to power on the chassis,
but Bletchley has six."... This does not make it system-specific. Yosemite-v2
has 4 independently managed systems, with their own power sequencing. There
should be work going on by that team to expand the GPIO documentation to cover N
sub-chassis as well; it just might be that you are ahead of them in documenting
it.
It should be trivial to expand the `power-chassis-control` and
`power-chassis-good` documentation to support sub-chassis. I can do this for
you if you need. Many of your GPIOs were related to LEDs which are also already
covered by this doc (except might need minor wording for sub-chassis as well).
Can you let me know which other GPIO functions you think you'll need that aren't
already in that document and we can work to get them added?
> > > +&i2c13 {
> > > + multi-master;
> > > + aspeed,hw-timeout-ms = <1000>;
> > > + status = "okay";
> > > +};
> >
> > Was this intentional to have defined a multi-master bus with nothing on it?
> There is a OCP debug card which is a hot plugging device.
> We only need to specify this bus with "multi-mater" property for IPMB support.
Got it.
--
Patrick Williams
> > > Is this board using 64MB or 128MB modules? Many of the newer systems
> > > have been
> > > starting to use 128MB. I just want to confirm this is correct.
> > 1Gb SPI flash, MX66L1G45GMI-08G
>
> 1Gb = 1024Mb / 8 = 128MB, right? Shouldn't we use the 128MB layout?
Will be fixed in the next patch
>
> > > > + sled0_ioexp: pca9539@76 {
> > > > + compatible = "nxp,pca9539";
> > > > + reg = <0x76>;
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > + gpio-controller;
> > > > + #gpio-cells = <2>;
> > > > +
> > > > + gpio-line-names =
> > > > +
> > > "","SLED0_BMC_CCG5_INT","SLED0_INA230_ALERT","SLED0_P12V_STBY_
> > > ALERT",
> > > > +
> > > "SLED0_SSD_ALERT","SLED0_MS_DETECT","SLED0_MD_REF_PWM","",
> > > > +
> > > "SLED0_MD_STBY_RESET","SLED0_MD_IOEXP_EN_FAULT","SLED0_MD_D
> > > IR","SLED0_MD_DECAY",
> > > > +
> > > "SLED0_MD_MODE1","SLED0_MD_MODE2","SLED0_MD_MODE3","SLED
> > > 0_AC_PWR_EN";
> > >
> > > In general, in OpenBMC, we have a preference for the GPIOs to not be
> > > schematic
> > > names but to be named based on their [software-oriented] function.
> Please
> > > take
> > > a look at:
> > >
> > >
> > >
> https://github.com/openbmc/docs/blob/master/designs/device-tree-gpio-na
> > > ming.md
> > >
> > > Any function you see that isn't documented there we should try to get
> > > documented
> > > before fixing the GPIO name to match it.
> > >
> > I intend to delete them for now if I have to document them first, because
> > most of them are platform-specific GPIO, not for general purpose and also
> not
> > suitable to current OpenBMC.
> > For example, OpenBMC believes there is only one GPIO to be used to power
> on
> > the chassis, but Bletchley has six.
> > I define gpio-line-names for gpioset/geioget/phosphor-multi-gpio-monitor
> > usage, and they can be replaced with gpiochip number and offset instead.
> > The disadvantage is that they won't be human-friendly when TEs develop
> their tool to test these GPIOs.
> > > > + gpio-line-names =
> > > > +
> "SLED0_EMBER_LED","SLED0_BLUE_LED","SLED0_RST_IOEXP","",
>
> Deleting them entirely sounds even less desirable. If these were just for
> humans, then having a schematic name is better than nothing. But when you
> suggest their usage to be "TEs develop their tool to test these GPIOs" that
> seems to indicate this becomes ABI and we want stable, documented names,
> to
> limit the churn on users.
>
> I don't believe the gpiochip/pin numbers are considered stable ABI. Our
> team
> has previously had to do an abstraction between 4.x and 5.x kernel because of
> changes in that space.
>
> My initial preference would be that you leave them in as schematic names, for
> human purposes, until you start using them in code at which point they should
> be
> well-documented and using the style we've set out in the document above.
>
> Re: "OpenBMC believes there is only one GPIO to be used to power on the
> chassis,
> but Bletchley has six."... This does not make it system-specific. Yosemite-v2
> has 4 independently managed systems, with their own power sequencing.
> There
> should be work going on by that team to expand the GPIO documentation to
> cover N
> sub-chassis as well; it just might be that you are ahead of them in documenting
> it.
>
> It should be trivial to expand the `power-chassis-control` and
> `power-chassis-good` documentation to support sub-chassis. I can do this for
> you if you need. Many of your GPIOs were related to LEDs which are also
> already
> covered by this doc (except might need minor wording for sub-chassis as well).
> Can you let me know which other GPIO functions you think you'll need that
> aren't
> already in that document and we can work to get them added?
I don't have enough experience with LF-OpenBMC so that I tried not to modify any present documentation since I don't know how to make them reliable to LF-OpenBMC community for common usage
If you have idea to expand the naming rule, I will follow it.
For LEDs, they are not really necessary because led-manager only used the node name. gpio-lines-name is only human-friendly for debug purpose when user uses GPIO tool, which make them easier to control GPIO directly.
In general purpose, controlling LED via D-Bus is better.
>
> > > > +&i2c13 {
> > > > + multi-master;
> > > > + aspeed,hw-timeout-ms = <1000>;
> > > > + status = "okay";
> > > > +};
> > >
> > > Was this intentional to have defined a multi-master bus with nothing on it?
> > There is a OCP debug card which is a hot plugging device.
> > We only need to specify this bus with "multi-mater" property for IPMB
> support.
>
> Got it.
>
> --
> Patrick Williams