[PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board

Donald Shannon posted 2 patches 1 month, 1 week ago
There is a newer version of this series
[PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Donald Shannon 1 month, 1 week ago
This is an Aspeed AST2600 based BMC board for the NVIDIA VR144NVL
Platform.

Reference to Ast2600 SOC [1].
Reference to DC-SCM Spec [2].

Link: https://www.aspeedtech.com/server_ast2600/ [1]
Link: https://www.opencompute.org/w/index.php?title=Server/MHS/DC-SCM-Specs-and-Designs [2]

Signed-off-by: Donald Shannon <donalds@nvidia.com>
---
 arch/arm/boot/dts/aspeed/Makefile             |   1 +
 .../dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts | 779 ++++++++++++++++++
 2 files changed, 780 insertions(+)
 create mode 100644 arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts

diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/Makefile
index 8062c685f7e8..b479824c434b 100644
--- a/arch/arm/boot/dts/aspeed/Makefile
+++ b/arch/arm/boot/dts/aspeed/Makefile
@@ -55,6 +55,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
 	aspeed-bmc-lenovo-hr855xg2.dtb \
 	aspeed-bmc-microsoft-olympus.dtb \
 	aspeed-bmc-nvidia-gb200nvl-bmc.dtb \
+	aspeed-bmc-nvidia-vr144nvl.dtb \
 	aspeed-bmc-opp-lanyang.dtb \
 	aspeed-bmc-opp-mowgli.dtb \
 	aspeed-bmc-opp-nicole.dtb \
diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
new file mode 100644
index 000000000000..5984984b5109
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
@@ -0,0 +1,779 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	model = "AST2600 VR144NVL BMC";
+	compatible = "nvidia,vr144nvl-bmc", "aspeed,ast2600";
+
+	aliases {
+		serial2 = &uart3;
+		serial4 = &uart5;
+		i2c16 = &c0uphy0;
+		i2c17 = &c0uphy2;
+		i2c24 = &c1uphy0;
+		i2c25 = &c1uphy2;
+		i2c32 = &i2c_usb_hub;
+		i2c33 = &i2c_tpm;
+		i2c34 = &i2c_dp;
+		i2c35 = &i2c_rtc;
+	};
+
+	buttons {
+		compatible = "gpio-keys";
+		button-power {
+			label = "power_btn";
+			linux,code = <KEY_POWER>;
+			gpios = <&exp7 9 GPIO_ACTIVE_LOW>;
+		};
+		button-uid {
+			label = "uid_btn";
+			linux,code = <KEY_FN_1>;
+			gpios = <&exp7 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	chosen {
+		stdout-path = &uart5;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		hb-led {
+			gpios = <&gpio0 127 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_HEARTBEAT;
+			color = <LED_COLOR_ID_GREEN>;
+			label = "bmc-hbled";
+			linux,default-trigger = "heartbeat";
+			default-state = "on";
+			retain-state-suspended;
+			retain-state-shutdown;
+		};
+		pwr-led {
+			gpios = <&exp7 8 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_POWER;
+			color = <LED_COLOR_ID_WHITE>;
+			label = "pwr-led";
+			linux,default-trigger = "default-on";
+			default-state = "on";
+			retain-state-suspended;
+			retain-state-shutdown;
+		};
+		uid-led {
+			gpios = <&exp7 10 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_INDICATOR;
+			color = <LED_COLOR_ID_BLUE>;
+			label = "uid-led";
+			default-state = "off";
+			retain-state-suspended;
+			retain-state-shutdown;
+		};
+		fault-led {
+			gpios = <&exp7 12 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_PANIC;
+			color = <LED_COLOR_ID_WHITE>;
+			label = "fault-led";
+			default-state = "off";
+			retain-state-suspended;
+			retain-state-shutdown;
+			panic-indicator;
+		};
+		warn-led {
+			gpios = <&exp7 15 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_PANIC;
+			color = <LED_COLOR_ID_RED>;
+			label = "warn-led";
+			default-state = "off";
+			retain-state-suspended;
+			retain-state-shutdown;
+		};
+	};
+
+	memory@80000000 {
+		device_type = "memory";
+		reg = <0x80000000 0x80000000>;
+	};
+
+	reg_3v3_stby: regulator-3v3-standby {
+		compatible = "regulator-fixed";
+		regulator-name = "3v3-standby";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio0 ASPEED_GPIO(M, 3) GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	reserved-memory {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		vga_memory: framebuffer@9f000000 {
+			no-map;
+			reg = <0x9f000000 0x01000000>; /* 16M */
+		};
+
+		ramoops@a0000000 {
+			compatible = "ramoops";
+			reg = <0xa0000000 0x100000>; /* 1MB */
+			record-size = <0x10000>; /* 64KB */
+			max-reason = <2>; /* KMSG_DUMP_OOPS */
+		};
+
+		gfx_memory: framebuffer {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x01000000>;
+			alignment = <0x01000000>;
+		};
+
+		video_engine_memory: jpegbuffer {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x02000000>;	/* 32M */
+			alignment = <0x01000000>;
+		};
+	};
+};
+
+// Enable Primary flash on FMC for bring up activity
+&fmc {
+	status = "okay";
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		label = "bmc";
+		spi-max-frequency = <50000000>;
+		status = "okay";
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			u-boot@0 {
+				// 896KB
+				reg = <0x0 0xe0000>;
+				label = "u-boot";
+			};
+
+			kernel@100000 {
+				// 9MB
+				reg = <0x100000 0x900000>;
+				label = "kernel";
+			};
+
+			rofs@a00000 {
+				// 55292KB (extends to end of 64MB SPI - 4KB)
+				reg = <0xa00000 0x35FF000>;
+				label = "rofs";
+			};
+		};
+	};
+};
+
+&spi2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_spi2_default>;
+	status = "okay";
+	// Data SPI is 64MB in size
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		label = "config";
+		spi-max-frequency = <50000000>;
+		status = "okay";
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			u-boot-env@0 {
+				// 256KB
+				reg = <0x0 0x40000>;
+				label = "u-boot-env";
+			};
+
+			rwfs@40000 {
+				// 16MB
+				reg = <0x40000 0x1000000>;
+				label = "rwfs";
+			};
+
+			log@1040000 {
+				// 40MB
+				reg = <0x1040000 0x2800000>;
+				label = "log";
+			};
+		};
+	};
+};
+
+&mdio0 {
+	status = "okay";
+	ethphy0: ethernet-phy@0 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0>;
+	};
+};
+
+&mac0 {
+	pinctrl-names = "default";
+	phy-mode = "rgmii-id";
+	phy-handle = <&ethphy0>;
+	pinctrl-0 = <&pinctrl_rgmii1_default>;
+	status = "okay";
+};
+
+// USB Port B
+&ehci1 {
+	status = "okay";
+};
+
+// USB Port B
+&uhci {
+	status = "okay";
+};
+
+// USB port A
+&vhub {
+	status = "okay";
+};
+
+&rng {
+	status = "okay";
+};
+
+&video {
+	memory-region = <&video_engine_memory>;
+	status = "okay";
+};
+
+&gpio0 {
+	gpio-line-names =
+		/*A0-A7*/ "", "", "", "", "", "", "", "",
+		/*B0-B7*/ "", "", "", "", "", "", "", "",
+		/*C0-C7*/ "", "", "", "", "", "", "", "",
+		/*D0-D7*/ "", "", "", "", "", "", "", "",
+		/*E0-E7*/ "RTL8221_PHY_RST_L-O", "RTL8211_PHY_INT_L-I",	"", "", "", "", "",
+					"MUX_SGPIO_SEL-O",
+		/*F0-F7*/ "", "", "", "", "", "", "", "",
+		/*G0-G7*/ "", "", "", "", "", "", "", "",
+		/*H0-H7*/ "", "", "", "", "", "", "", "",
+		/*I0-I7*/ "", "", "", "", "", "QSPI2_RST_L-O", "GLOBAL_WP-O", "BMC_DDR4_TEN-O",
+		/*J0-J7*/ "", "", "", "", "", "", "", "",
+		/*K0-K7*/ "", "", "", "", "", "", "", "",
+		/*L0-L7*/ "", "", "", "", "", "", "", "",
+		/*M0-M7*/ "HUB_RST_N-O", "BMC_FRU_WP-O", "SCM_PGOOD_C-O", "HPM_STBY_POWER_EN-O",
+					"STBY_POWER_PG_3V3-I", "PCIE_EP_RST_C_L-O", "", "",
+		/*N0-N7*/ "", "", "", "", "", "", "", "",
+		/*O0-O7*/ "", "", "", "", "", "", "", "",
+		/*P0-P7*/ "", "", "", "", "", "", "", "BMC_HBLED_L-O",
+		/*Q0-Q7*/ "", "", "", "", "", "", "", "",
+		/*R0-R7*/ "", "SP0_AP_INTR_N-I", "", "", "", "", "", "",
+		/*S0-S7*/ "", "", "", "", "", "", "", "",
+		/*T0-T7*/ "", "", "", "", "", "", "", "",
+		/*U0-U7*/ "", "", "", "", "", "", "", "",
+		/*V0-V7*/ "", "", "", "","PCB_TEMP_ALERT_L-I", "","", "",
+		/*W0-W7*/ "", "", "", "", "", "", "", "",
+		/*X0-X7*/ "", "", "", "", "", "", "", "",
+		/*Y0-Y7*/ "", "", "", "EMMC_RST_L-O", "","", "", "",
+		/*Z0-Z7*/ "GPIOZ0_EROT_OOB_INTR_N_C-I","", "", "", "", "", "", "";
+};
+
+&gpio1 {
+	/* 36 1.8V GPIOs */
+	gpio-line-names =
+		/*A0-A7*/ "", "", "", "", "", "", "", "",
+		/*B0-B7*/ "", "", "", "", "AP_EROT_REQ-O", "EROT_AP_GNT-I", "I2C_MGMT0_ALERT_N-I",
+					"",
+		/*C0-C7*/ "", "", "", "", "", "", "", "",
+		/*D0-D7*/ "", "", "", "", "", "", "", "I2C_SSIF_ALERT_N-I",
+		/*E0-E7*/ "", "", "", "", "", "", "", "";
+};
+
+&uart1 {
+	status = "okay";
+};
+
+&uart5 {
+	status = "okay";
+};
+
+// I2C1
+&i2c0 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C2
+// Baseboard 0 Management 1
+&i2c1 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	i2c-mux@70 {
+		compatible = "nxp,pca9548";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x70>;
+		i2c-mux-idle-disconnect;
+		vdd-supply = <&reg_3v3_stby>;
+
+		c0uphy0: i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+		};
+
+		c0uphy2: i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+		};
+	};
+
+	exp0: gpio@20 {
+		compatible = "nxp,pca9535";
+		reg = <0x20>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"MCU_RESET_L-O",
+			"MCU_RECOVERY_L-O",
+			"GPU_MCU_RESET_L_3V3-O",
+			"GPU_MCU_RECOVERY_L_3V3-O",
+			"THERM_OVERT_L-I",
+			"THERM_WARN_L-I",
+			"HMC_IST_PRE_RST_L-O",
+			"CPLD_READY-I",
+			"MODULE_PWR_GOOD-I",
+			"MCU_HMC_ALERT_L-I",
+			"USB_HMC_HUB_RST_L-O",
+			"HPM_MCU_OK-I",
+			"CPU0_SHDN_OK_L_3V3-I",
+			"PRIMARY_NODE_L-O",
+			"IST_SYS_RST_L-O",
+			"PWR_BRAKE_STATUS_L-I";
+	};
+
+	exp1: gpio@21 {
+		compatible = "nxp,pca9535";
+		reg = <0x21>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"CPU_FORCED_RECOVERY_L-O",
+			"CPU_BOOT_DEV_SEL0-O",
+			"CPU_BOOT_DEV_SEL1-O",
+			"CPU_BOOT_DEV_SEL2-O",
+			"BOARD_ID_0-I",
+			"CPU_RECOVERY_TYPE0-O",
+			"CPU_RECOVERY_TYPE1-O",
+			"CPU_IST_BOOT_HMC-O",
+			"CPU_BOOT_CHAIN0-O",
+			"BOARD_ID_1-I",
+			"BOARD_ID_2-I",
+			"CPU_DIE_SEL0-O",
+			"CPU_DIE_SEL1-O",
+			"CPU_DIE_SEL2-O",
+			"CPU_BOOT_COMPLETE-I",
+			"IOX_JTAG_NVSEL-O";
+	};
+
+	eeprom@50 {
+		compatible = "atmel,24c64";
+		reg = <0x50>;
+		pagesize = <32>;
+	};
+};
+
+// I2C3
+// Baseboard 0 Management 0
+&i2c2 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	exp3: gpio@20 {
+		compatible = "nxp,pca9535";
+		reg = <0x20>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"BMC_SHDN_FORCE_L-O",
+			"IOX_STBY_PWR_PGOOD-I",
+			"THERM_OVERT_L-I",
+			"THERM_WARN_L-I",
+			"GLOBAL_WP_BMC-O",
+			"USB_HUB0_RST_L-O",
+			"IOX_PRE_RST_N-O",
+			"LEAK_DETECT_L-I",
+			"RUN_PWR_EN-O",
+			"MODULE_PWR_GOOD-I",
+			"CPU_CHIPTHROT_L_3V3-I",
+			"SHDN_REQ_L_3V3-O",
+			"CPU0_SHDN_OK_L_3V3-I",
+			"CPU1_SHDN_OK_L_3V3-I",
+			"PWR_BRAKE_L_3V3-O",
+			"PWR_BRAKE_STATUS_L-I";
+	};
+
+	exp4: gpio@21 {
+		compatible = "nxp,pca9535";
+		reg = <0x21>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"I2C_BUS_MUX_RST_L-O",
+			"HPM_MCU_OK-I",
+			"AIC_USB_EN-O",
+			"SOCAMM_DAC_SEL0-O",
+			"SNN_SOCAMM_DAC_SEL1-O",
+			"C0_SOCAMM_I2C_SEL_R-O",
+			"SNN_C1_SOCAMM_I2C_SEL_R-O",
+			"EEPROM_POWER_DISABLE-O",
+			"CPU_L0L1_RST_L_3V3-I",
+			"CPU_L2_RST_L_3V3-I",
+			"BOARD_ID_0-I",
+			"BOARD_ID_1-I",
+			"BMC_LEAK_TEST_L-O",
+			"MCU_BMC_ALERT_L-I",
+			"CPU_BOOT_COMPLETE_3V3-I",
+			"BOARD_ID_2-I";
+	};
+
+	eeprom@50 {
+		compatible = "atmel,24c64";
+		reg = <0x50>;
+		pagesize = <32>;
+	};
+};
+
+// I2C4
+// Baseboard 1 Management 1
+&i2c3 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	i2c-mux@70 {
+		compatible = "nxp,pca9548";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x70>;
+		i2c-mux-idle-disconnect;
+		vdd-supply = <&reg_3v3_stby>;
+
+		c1uphy0: i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+		};
+
+		c1uphy2: i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+		};
+	};
+
+	exp5: gpio@20 {
+		compatible = "nxp,pca9535";
+		reg = <0x20>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"MCU_RESET_L_C1-O",
+			"MCU_RECOVERY_L_C1-O",
+			"GPU_MCU_RESET_L_3V3_C1-O",
+			"GPU_MCU_RECOVERY_L_3V3_C1-O",
+			"THERM_OVERT_L_C1-I",
+			"THERM_WARN_L_C1-I",
+			"HMC_IST_PRE_RST_L_C1-O",
+			"CPLD_READY_C1-I",
+			"MODULE_PWR_GOOD_C1-I",
+			"MCU_HMC_ALERT_L_C1-I",
+			"USB_HMC_HUB_RST_L_C1-O",
+			"HPM_MCU_OK_C1-I",
+			"CPU0_SHDN_OK_L_3V3_C1-I",
+			"PRIMARY_NODE_L_C1-O",
+			"IST_SYS_RST_L_C1-O",
+			"PWR_BRAKE_STATUS_L_C1-I";
+	};
+
+	exp6: gpio@21 {
+		compatible = "nxp,pca9535";
+		reg = <0x21>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"CPU_FORCED_RECOVERY_L_C1-O",
+			"CPU_BOOT_DEV_SEL0_C1-O",
+			"CPU_BOOT_DEV_SEL1_C1-O",
+			"CPU_BOOT_DEV_SEL2_C1-O",
+			"BOARD_ID_0_C1-I",
+			"CPU_RECOVERY_TYPE0_C1-O",
+			"CPU_RECOVERY_TYPE1_C1-O",
+			"CPU_IST_BOOT_HMC_C1-O",
+			"CPU_BOOT_CHAIN0_C1-O",
+			"BOARD_ID_1_C1-I",
+			"BOARD_ID_2_C1-I",
+			"CPU_DIE_SEL0_C1-O",
+			"CPU_DIE_SEL1_C1-O",
+			"CPU_DIE_SEL2_C1-O",
+			"CPU_BOOT_COMPLETE_C1-I",
+			"IOX_JTAG_NVSEL_C1-O";
+	};
+
+	eeprom@50 {
+		compatible = "atmel,24c64";
+		reg = <0x50>;
+		pagesize = <32>;
+	};
+};
+
+// I2C5
+&i2c4 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C6
+// Management Board
+&i2c5 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	exp7: gpio@20 {
+		compatible = "nxp,pca9555";
+		reg = <0x20>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"HMC_RST_R_L-O",
+			"HMC_RECOVERY_R-O",
+			"HMC_SPI_MUX_R_SEL-O",
+			"GLOBAL_WP-O",
+			"HMC_READY-I",
+			"HMC_PRSNT_R-I",
+			"BMC_SELF_PWR_CYCLE-O",
+			"EEDO_LED2-O",
+			"PWR_LED_L-O",
+			"PWR_BTN_L-I",
+			"UID_LED_L-O",
+			"UID_BTN_L-I",
+			"FAULT_LED_L-I",
+			"USB2_HUB_RST_L-O",
+			"BMC_M2_RST_L-O",
+			"WARN_LED_L-O";
+	};
+
+	temp-sensor@48 {
+		compatible = "ti,tmp1075";
+		reg = <0x48>;
+	};
+};
+
+// I2C7
+// BMC Expander + Management Board
+&i2c6 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	exp8: gpio@20 {
+		compatible = "ti,tca6408";
+		reg = <0x20>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-line-names =
+			"",
+			"",
+			"EROT_FATAL_ERROR_N-I",
+			"",
+			"",
+			"EROT_RECOV_N-O",
+			"NRESET_IN_IOX_N-O",
+			"";
+	};
+
+	i2c-mux@70 {
+		compatible = "nxp,pca9546";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x70>;
+		i2c-mux-idle-disconnect;
+		vdd-supply = <&reg_3v3_stby>;
+
+		i2c_usb_hub:i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+		};
+
+		i2c_tpm:i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+
+		};
+
+		i2c_dp:i2c@2 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <2>;
+		};
+
+		i2c_rtc:i2c@3 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <3>;
+		};
+	};
+};
+
+// I2C8
+// Baseboard 1 Management 0
+&i2c7 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	exp9: gpio@20 {
+		compatible = "nxp,pca9535";
+		reg = <0x20>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"BMC_SHDN_FORCE_L_C1-O",
+			"IOX_STBY_PWR_PGOOD_C1-I",
+			"THERM_OVERT_L_C1-I",
+			"THERM_WARN_L_C1-I",
+			"GLOBAL_WP_BMC_C1-O",
+			"USB_HUB0_RST_L_C1-O",
+			"IOX_PRE_RST_N_C1-O",
+			"LEAK_DETECT_L_C1-I",
+			"RUN_PWR_EN_C1-O",
+			"MODULE_PWR_GOOD_C1-I",
+			"CPU_CHIPTHROT_L_3V3_C1-I",
+			"SHDN_REQ_L_3V3_C1-O",
+			"CPU0_SHDN_OK_L_3V3_C1-I",
+			"CPU1_SHDN_OK_L_3V3_C1-I",
+			"PWR_BRAKE_L_3V3_C1-O",
+			"PWR_BRAKE_STATUS_L_C1-I";
+	};
+
+	exp10: gpio@21 {
+		compatible = "nxp,pca9535";
+		reg = <0x21>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <ASPEED_GPIO(B, 6) IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <2>;
+		vcc-supply = <&reg_3v3_stby>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names =
+			"I2C_BUS_MUX_RST_L_C1-O",
+			"HPM_MCU_OK_C1-I",
+			"AIC_USB_EN_C1-O",
+			"SOCAMM_DAC_SEL0_C1-O",
+			"SNN_SOCAMM_DAC_SEL1_C1-O",
+			"C0_SOCAMM_I2C_SEL_R_C1-O",
+			"SNN_C1_SOCAMM_I2C_SEL_R_C1-O",
+			"EEPROM_POWER_DISABLE_C1-O",
+			"CPU_L0L1_RST_L_3V3_C1-I",
+			"CPU_L2_RST_L_3V3_C1-I",
+			"BOARD_ID_0_C1-I",
+			"BOARD_ID_1_C1-I",
+			"BMC_LEAK_TEST_L_C1-O",
+			"MCU_BMC_ALERT_L_C1-I",
+			"CPU_BOOT_COMPLETE_3V3_C1-I",
+			"BOARD_ID_2_C1-I";
+	};
+
+	eeprom@50 {
+		compatible = "atmel,24c64";
+		reg = <0x50>;
+		pagesize = <32>;
+	};
+};
+
+// I2C9
+&i2c8 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C10
+&i2c9 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C11
+// BMC FRU + TEMP
+&i2c10 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	eeprom@50 {
+		compatible = "atmel,24c02";
+		reg = <0x50>;
+		pagesize = <16>;
+	};
+
+	temp-sensor@48 {
+		compatible = "ti,tmp1075";
+		reg = <0x48>;
+	};
+
+};
+
+// I2C13
+&i2c12 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C14
+&i2c13 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C15
+&i2c14 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+// I2C16
+&i2c15 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
-- 
2.43.0
Re: [PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Andrew Jeffery 1 month ago
Hi Donald,

On Fri, 2025-08-22 at 13:38 -0700, Donald Shannon wrote:
> This is an Aspeed AST2600 based BMC board for the NVIDIA VR144NVL
> Platform.
> 
> Reference to Ast2600 SOC [1].
> Reference to DC-SCM Spec [2].
> 
> Link: https://www.aspeedtech.com/server_ast2600/ [1]
> Link: https://www.opencompute.org/w/index.php?title=Server/MHS/DC-SCM-Specs-and-Designs [2]
> 
> Signed-off-by: Donald Shannon <donalds@nvidia.com>
> ---
>  arch/arm/boot/dts/aspeed/Makefile             |   1 +
>  .../dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts | 779 ++++++++++++++++++
>  2 files changed, 780 insertions(+)
>  create mode 100644 arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
> 
> diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/Makefile
> index 8062c685f7e8..b479824c434b 100644
> --- a/arch/arm/boot/dts/aspeed/Makefile
> +++ b/arch/arm/boot/dts/aspeed/Makefile
> @@ -55,6 +55,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
>         aspeed-bmc-lenovo-hr855xg2.dtb \
>         aspeed-bmc-microsoft-olympus.dtb \
>         aspeed-bmc-nvidia-gb200nvl-bmc.dtb \
> +       aspeed-bmc-nvidia-vr144nvl.dtb \
>         aspeed-bmc-opp-lanyang.dtb \
>         aspeed-bmc-opp-mowgli.dtb \
>         aspeed-bmc-opp-nicole.dtb \
> diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
> new file mode 100644
> index 000000000000..5984984b5109
> --- /dev/null
> +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
> @@ -0,0 +1,779 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/dts-v1/;
> +
> +#include "aspeed-g6.dtsi"
> +#include <dt-bindings/gpio/aspeed-gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> +       model = "AST2600 VR144NVL BMC";
> +       compatible = "nvidia,vr144nvl-bmc", "aspeed,ast2600";
> +
> +       aliases {
> +               serial2 = &uart3;
> +               serial4 = &uart5;
> +               i2c16 = &c0uphy0;
> +               i2c17 = &c0uphy2;
> +               i2c24 = &c1uphy0;
> +               i2c25 = &c1uphy2;
> +               i2c32 = &i2c_usb_hub;
> +               i2c33 = &i2c_tpm;
> +               i2c34 = &i2c_dp;
> +               i2c35 = &i2c_rtc;
> +       };
> +
> +       buttons {
> +               compatible = "gpio-keys";
> +               button-power {
> +                       label = "power_btn";
> +                       linux,code = <KEY_POWER>;
> +                       gpios = <&exp7 9 GPIO_ACTIVE_LOW>;
> +               };
> +               button-uid {
> +                       label = "uid_btn";
> +                       linux,code = <KEY_FN_1>;
> +                       gpios = <&exp7 11 GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +
> +       chosen {
> +               stdout-path = &uart5;
> +       };
> +
> +       leds {
> +               compatible = "gpio-leds";
> +               hb-led {
> +                       gpios = <&gpio0 127 GPIO_ACTIVE_LOW>;
> +                       function = LED_FUNCTION_HEARTBEAT;
> +                       color = <LED_COLOR_ID_GREEN>;
> +                       label = "bmc-hbled";
> +                       linux,default-trigger = "heartbeat";
> +                       default-state = "on";
> +                       retain-state-suspended;
> +                       retain-state-shutdown;
> +               };
> +               pwr-led {
> +                       gpios = <&exp7 8 GPIO_ACTIVE_LOW>;
> +                       function = LED_FUNCTION_POWER;
> +                       color = <LED_COLOR_ID_WHITE>;
> +                       label = "pwr-led";
> +                       linux,default-trigger = "default-on";
> +                       default-state = "on";
> +                       retain-state-suspended;
> +                       retain-state-shutdown;
> +               };
> +               uid-led {
> +                       gpios = <&exp7 10 GPIO_ACTIVE_LOW>;
> +                       function = LED_FUNCTION_INDICATOR;
> +                       color = <LED_COLOR_ID_BLUE>;
> +                       label = "uid-led";
> +                       default-state = "off";
> +                       retain-state-suspended;
> +                       retain-state-shutdown;
> +               };
> +               fault-led {
> +                       gpios = <&exp7 12 GPIO_ACTIVE_LOW>;
> +                       function = LED_FUNCTION_PANIC;
> +                       color = <LED_COLOR_ID_WHITE>;
> +                       label = "fault-led";
> +                       default-state = "off";
> +                       retain-state-suspended;
> +                       retain-state-shutdown;
> +                       panic-indicator;
> +               };
> +               warn-led {
> +                       gpios = <&exp7 15 GPIO_ACTIVE_LOW>;
> +                       function = LED_FUNCTION_PANIC;
> +                       color = <LED_COLOR_ID_RED>;
> +                       label = "warn-led";
> +                       default-state = "off";
> +                       retain-state-suspended;
> +                       retain-state-shutdown;
> +               };

To be consistent with my request on your other devicetree series, can
you please order nodes that either have no unit address or reference a
label alphabetically, in line with the DTS style guide?

> +       };
> +
> +       memory@80000000 {
> +               device_type = "memory";
> +               reg = <0x80000000 0x80000000>;
> +       };
> +
> +       reg_3v3_stby: regulator-3v3-standby {
> +               compatible = "regulator-fixed";
> +               regulator-name = "3v3-standby";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               gpio = <&gpio0 ASPEED_GPIO(M, 3) GPIO_ACTIVE_HIGH>;
> +               enable-active-high;
> +               regulator-always-on;
> +       };
> +
> +       reserved-memory {
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +               ranges;
> +
> +               vga_memory: framebuffer@9f000000 {
> +                       no-map;
> +                       reg = <0x9f000000 0x01000000>; /* 16M */
> +               };
> +
> +               ramoops@a0000000 {
> +                       compatible = "ramoops";
> +                       reg = <0xa0000000 0x100000>; /* 1MB */
> +                       record-size = <0x10000>; /* 64KB */
> +                       max-reason = <2>; /* KMSG_DUMP_OOPS */
> +               };
> +
> +               gfx_memory: framebuffer {
> +                       compatible = "shared-dma-pool";
> +                       reusable;
> +                       size = <0x01000000>;
> +                       alignment = <0x01000000>;
> +               };
> +
> +               video_engine_memory: jpegbuffer {
> +                       compatible = "shared-dma-pool";
> +                       reusable;
> +                       size = <0x02000000>;    /* 32M */
> +                       alignment = <0x01000000>;
> +               };
> +       };
> +};
> +
> +// Enable Primary flash on FMC for bring up activity
> +&fmc {
> +       status = "okay";
> +       flash@0 {
> +               compatible = "jedec,spi-nor";
> +               label = "bmc";
> +               spi-max-frequency = <50000000>;
> +               status = "okay";
> +               partitions {
> +                       compatible = "fixed-partitions";
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +
> +                       u-boot@0 {
> +                               // 896KB
> +                               reg = <0x0 0xe0000>;
> +                               label = "u-boot";
> +                       };
> +
> +                       kernel@100000 {
> +                               // 9MB
> +                               reg = <0x100000 0x900000>;
> +                               label = "kernel";
> +                       };
> +
> +                       rofs@a00000 {
> +                               // 55292KB (extends to end of 64MB SPI - 4KB)
> +                               reg = <0xa00000 0x35FF000>;
> +                               label = "rofs";
> +                       };
> +               };

This isn't using one of the usual OpenBMC flash layouts? Can you add a
comment as to why?

> +       };
> +};
> +
> +&spi2 {
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&pinctrl_spi2_default>;
> +       status = "okay";
> +       // Data SPI is 64MB in size
> +       flash@0 {
> +               compatible = "jedec,spi-nor";
> +               label = "config";
> +               spi-max-frequency = <50000000>;
> +               status = "okay";
> +               partitions {
> +                       compatible = "fixed-partitions";
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +
> +                       u-boot-env@0 {
> +                               // 256KB
> +                               reg = <0x0 0x40000>;
> +                               label = "u-boot-env";
> +                       };
> +
> +                       rwfs@40000 {
> +                               // 16MB
> +                               reg = <0x40000 0x1000000>;
> +                               label = "rwfs";
> +                       };
> +
> +                       log@1040000 {
> +                               // 40MB
> +                               reg = <0x1040000 0x2800000>;
> +                               label = "log";
> +                       };
> +               };
> +       };
> +};
> +
> +&mdio0 {
> +       status = "okay";
> +       ethphy0: ethernet-phy@0 {
> +               compatible = "ethernet-phy-ieee802.3-c22";
> +               reg = <0>;
> +       };
> +};
> +
> +&mac0 {
> +       pinctrl-names = "default";
> +       phy-mode = "rgmii-id";

Is this correct, in the context of the query here?

https://lore.kernel.org/all/6a3d7eb4-c091-437f-98f8-2b8577e539a7@lunn.ch/

If not, please drop the node from the patch until the MAC driver is
fixed with respect to the RGMII delays.

Andrew
Re: [PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Donald Shannon 3 weeks, 3 days ago
On 9/3/25 00:07, Andrew Jeffery wrote:

> Hi Donald,
>
> On Fri, 2025-08-22 at 13:38 -0700, Donald Shannon wrote:
>> This is an Aspeed AST2600 based BMC board for the NVIDIA VR144NVL
>> Platform.
>>
>> Reference to Ast2600 SOC [1].
>> Reference to DC-SCM Spec [2].
>>
>> Link: https://www.aspeedtech.com/server_ast2600/ [1]
>> Link: https://www.opencompute.org/w/index.php?title=Server/MHS/DC-SCM-Specs-and-Designs [2]
>>
>> Signed-off-by: Donald Shannon <donalds@nvidia.com>
>> ---
>>   arch/arm/boot/dts/aspeed/Makefile             |   1 +
>>   .../dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts | 779 ++++++++++++++++++
>>   2 files changed, 780 insertions(+)
>>   create mode 100644 arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>>
>> diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/Makefile
>> index 8062c685f7e8..b479824c434b 100644
>> --- a/arch/arm/boot/dts/aspeed/Makefile
>> +++ b/arch/arm/boot/dts/aspeed/Makefile
>> @@ -55,6 +55,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
>>          aspeed-bmc-lenovo-hr855xg2.dtb \
>>          aspeed-bmc-microsoft-olympus.dtb \
>>          aspeed-bmc-nvidia-gb200nvl-bmc.dtb \
>> +       aspeed-bmc-nvidia-vr144nvl.dtb \
>>          aspeed-bmc-opp-lanyang.dtb \
>>          aspeed-bmc-opp-mowgli.dtb \
>>          aspeed-bmc-opp-nicole.dtb \
>> diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>> new file mode 100644
>> index 000000000000..5984984b5109
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>> @@ -0,0 +1,779 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/dts-v1/;
>> +
>> +#include "aspeed-g6.dtsi"
>> +#include <dt-bindings/gpio/aspeed-gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/leds/common.h>
>> +
>> +/ {
>> +       model = "AST2600 VR144NVL BMC";
>> +       compatible = "nvidia,vr144nvl-bmc", "aspeed,ast2600";
>> +
>> +       aliases {
>> +               serial2 = &uart3;
>> +               serial4 = &uart5;
>> +               i2c16 = &c0uphy0;
>> +               i2c17 = &c0uphy2;
>> +               i2c24 = &c1uphy0;
>> +               i2c25 = &c1uphy2;
>> +               i2c32 = &i2c_usb_hub;
>> +               i2c33 = &i2c_tpm;
>> +               i2c34 = &i2c_dp;
>> +               i2c35 = &i2c_rtc;
>> +       };
>> +
>> +       buttons {
>> +               compatible = "gpio-keys";
>> +               button-power {
>> +                       label = "power_btn";
>> +                       linux,code = <KEY_POWER>;
>> +                       gpios = <&exp7 9 GPIO_ACTIVE_LOW>;
>> +               };
>> +               button-uid {
>> +                       label = "uid_btn";
>> +                       linux,code = <KEY_FN_1>;
>> +                       gpios = <&exp7 11 GPIO_ACTIVE_LOW>;
>> +               };
>> +       };
>> +
>> +       chosen {
>> +               stdout-path = &uart5;
>> +       };
>> +
>> +       leds {
>> +               compatible = "gpio-leds";
>> +               hb-led {
>> +                       gpios = <&gpio0 127 GPIO_ACTIVE_LOW>;
>> +                       function = LED_FUNCTION_HEARTBEAT;
>> +                       color = <LED_COLOR_ID_GREEN>;
>> +                       label = "bmc-hbled";
>> +                       linux,default-trigger = "heartbeat";
>> +                       default-state = "on";
>> +                       retain-state-suspended;
>> +                       retain-state-shutdown;
>> +               };
>> +               pwr-led {
>> +                       gpios = <&exp7 8 GPIO_ACTIVE_LOW>;
>> +                       function = LED_FUNCTION_POWER;
>> +                       color = <LED_COLOR_ID_WHITE>;
>> +                       label = "pwr-led";
>> +                       linux,default-trigger = "default-on";
>> +                       default-state = "on";
>> +                       retain-state-suspended;
>> +                       retain-state-shutdown;
>> +               };
>> +               uid-led {
>> +                       gpios = <&exp7 10 GPIO_ACTIVE_LOW>;
>> +                       function = LED_FUNCTION_INDICATOR;
>> +                       color = <LED_COLOR_ID_BLUE>;
>> +                       label = "uid-led";
>> +                       default-state = "off";
>> +                       retain-state-suspended;
>> +                       retain-state-shutdown;
>> +               };
>> +               fault-led {
>> +                       gpios = <&exp7 12 GPIO_ACTIVE_LOW>;
>> +                       function = LED_FUNCTION_PANIC;
>> +                       color = <LED_COLOR_ID_WHITE>;
>> +                       label = "fault-led";
>> +                       default-state = "off";
>> +                       retain-state-suspended;
>> +                       retain-state-shutdown;
>> +                       panic-indicator;
>> +               };
>> +               warn-led {
>> +                       gpios = <&exp7 15 GPIO_ACTIVE_LOW>;
>> +                       function = LED_FUNCTION_PANIC;
>> +                       color = <LED_COLOR_ID_RED>;
>> +                       label = "warn-led";
>> +                       default-state = "off";
>> +                       retain-state-suspended;
>> +                       retain-state-shutdown;
>> +               };
> To be consistent with my request on your other devicetree series, can
> you please order nodes that either have no unit address or reference a
> label alphabetically, in line with the DTS style guide?
>
>> +       };
>> +
>> +       memory@80000000 {
>> +               device_type = "memory";
>> +               reg = <0x80000000 0x80000000>;
>> +       };
>> +
>> +       reg_3v3_stby: regulator-3v3-standby {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "3v3-standby";
>> +               regulator-min-microvolt = <3300000>;
>> +               regulator-max-microvolt = <3300000>;
>> +               gpio = <&gpio0 ASPEED_GPIO(M, 3) GPIO_ACTIVE_HIGH>;
>> +               enable-active-high;
>> +               regulator-always-on;
>> +       };
>> +
>> +       reserved-memory {
>> +               #address-cells = <1>;
>> +               #size-cells = <1>;
>> +               ranges;
>> +
>> +               vga_memory: framebuffer@9f000000 {
>> +                       no-map;
>> +                       reg = <0x9f000000 0x01000000>; /* 16M */
>> +               };
>> +
>> +               ramoops@a0000000 {
>> +                       compatible = "ramoops";
>> +                       reg = <0xa0000000 0x100000>; /* 1MB */
>> +                       record-size = <0x10000>; /* 64KB */
>> +                       max-reason = <2>; /* KMSG_DUMP_OOPS */
>> +               };
>> +
>> +               gfx_memory: framebuffer {
>> +                       compatible = "shared-dma-pool";
>> +                       reusable;
>> +                       size = <0x01000000>;
>> +                       alignment = <0x01000000>;
>> +               };
>> +
>> +               video_engine_memory: jpegbuffer {
>> +                       compatible = "shared-dma-pool";
>> +                       reusable;
>> +                       size = <0x02000000>;    /* 32M */
>> +                       alignment = <0x01000000>;
>> +               };
>> +       };
>> +};
>> +
>> +// Enable Primary flash on FMC for bring up activity
>> +&fmc {
>> +       status = "okay";
>> +       flash@0 {
>> +               compatible = "jedec,spi-nor";
>> +               label = "bmc";
>> +               spi-max-frequency = <50000000>;
>> +               status = "okay";
>> +               partitions {
>> +                       compatible = "fixed-partitions";
>> +                       #address-cells = <1>;
>> +                       #size-cells = <1>;
>> +
>> +                       u-boot@0 {
>> +                               // 896KB
>> +                               reg = <0x0 0xe0000>;
>> +                               label = "u-boot";
>> +                       };
>> +
>> +                       kernel@100000 {
>> +                               // 9MB
>> +                               reg = <0x100000 0x900000>;
>> +                               label = "kernel";
>> +                       };
>> +
>> +                       rofs@a00000 {
>> +                               // 55292KB (extends to end of 64MB SPI - 4KB)
>> +                               reg = <0xa00000 0x35FF000>;
>> +                               label = "rofs";
>> +                       };
>> +               };
> This isn't using one of the usual OpenBMC flash layouts? Can you add a
> comment as to why?
>
>> +       };
>> +};
>> +
>> +&spi2 {
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&pinctrl_spi2_default>;
>> +       status = "okay";
>> +       // Data SPI is 64MB in size
>> +       flash@0 {
>> +               compatible = "jedec,spi-nor";
>> +               label = "config";
>> +               spi-max-frequency = <50000000>;
>> +               status = "okay";
>> +               partitions {
>> +                       compatible = "fixed-partitions";
>> +                       #address-cells = <1>;
>> +                       #size-cells = <1>;
>> +
>> +                       u-boot-env@0 {
>> +                               // 256KB
>> +                               reg = <0x0 0x40000>;
>> +                               label = "u-boot-env";
>> +                       };
>> +
>> +                       rwfs@40000 {
>> +                               // 16MB
>> +                               reg = <0x40000 0x1000000>;
>> +                               label = "rwfs";
>> +                       };
>> +
>> +                       log@1040000 {
>> +                               // 40MB
>> +                               reg = <0x1040000 0x2800000>;
>> +                               label = "log";
>> +                       };
>> +               };
>> +       };
>> +};
>> +
>> +&mdio0 {
>> +       status = "okay";
>> +       ethphy0: ethernet-phy@0 {
>> +               compatible = "ethernet-phy-ieee802.3-c22";
>> +               reg = <0>;
>> +       };
>> +};
>> +
>> +&mac0 {
>> +       pinctrl-names = "default";
>> +       phy-mode = "rgmii-id";
> Is this correct, in the context of the query here?
>
> https://lore.kernel.org/all/6a3d7eb4-c091-437f-98f8-2b8577e539a7@lunn.ch/
>
> If not, please drop the node from the patch until the MAC driver is
> fixed with respect to the RGMII delays.
>
> Andrew

Hi Andrew,

I will change this to alphabetical order.

The extra space in our flash is for root of trust application. I will note this in the next patch.

I see that the ftgmac100 drivers do not use the phy-mode parameter so I will leave it out.

Thanks,
Don

Re: [PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Donald Shannon 3 weeks, 2 days ago
On 9/9/25 16:05, Donald Shannon wrote:
> On 9/3/25 00:07, Andrew Jeffery wrote:
>
>> Hi Donald,
>>
>> On Fri, 2025-08-22 at 13:38 -0700, Donald Shannon wrote:
>>> This is an Aspeed AST2600 based BMC board for the NVIDIA VR144NVL
>>> Platform.
>>>
>>> Reference to Ast2600 SOC [1].
>>> Reference to DC-SCM Spec [2].
>>>
>>> Link: https://www.aspeedtech.com/server_ast2600/ [1]
>>> Link: https://www.opencompute.org/w/index.php?title=Server/MHS/DC-SCM-Specs-and-Designs [2]
>>>
>>> Signed-off-by: Donald Shannon <donalds@nvidia.com>
>>> ---
>>>   arch/arm/boot/dts/aspeed/Makefile             |   1 +
>>>   .../dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts | 779 ++++++++++++++++++
>>>   2 files changed, 780 insertions(+)
>>>   create mode 100644 arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>>>
>>> diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/Makefile
>>> index 8062c685f7e8..b479824c434b 100644
>>> --- a/arch/arm/boot/dts/aspeed/Makefile
>>> +++ b/arch/arm/boot/dts/aspeed/Makefile
>>> @@ -55,6 +55,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
>>>          aspeed-bmc-lenovo-hr855xg2.dtb \
>>>          aspeed-bmc-microsoft-olympus.dtb \
>>>          aspeed-bmc-nvidia-gb200nvl-bmc.dtb \
>>> +       aspeed-bmc-nvidia-vr144nvl.dtb \
>>>          aspeed-bmc-opp-lanyang.dtb \
>>>          aspeed-bmc-opp-mowgli.dtb \
>>>          aspeed-bmc-opp-nicole.dtb \
>>> diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>>> new file mode 100644
>>> index 000000000000..5984984b5109
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-nvidia-vr144nvl.dts
>>> @@ -0,0 +1,779 @@
>>> +// SPDX-License-Identifier: GPL-2.0+
>>> +/dts-v1/;
>>> +
>>> +#include "aspeed-g6.dtsi"
>>> +#include <dt-bindings/gpio/aspeed-gpio.h>
>>> +#include <dt-bindings/input/input.h>
>>> +#include <dt-bindings/leds/common.h>
>>> +
>>> +/ {
>>> +       model = "AST2600 VR144NVL BMC";
>>> +       compatible = "nvidia,vr144nvl-bmc", "aspeed,ast2600";
>>> +
>>> +       aliases {
>>> +               serial2 = &uart3;
>>> +               serial4 = &uart5;
>>> +               i2c16 = &c0uphy0;
>>> +               i2c17 = &c0uphy2;
>>> +               i2c24 = &c1uphy0;
>>> +               i2c25 = &c1uphy2;
>>> +               i2c32 = &i2c_usb_hub;
>>> +               i2c33 = &i2c_tpm;
>>> +               i2c34 = &i2c_dp;
>>> +               i2c35 = &i2c_rtc;
>>> +       };
>>> +
>>> +       buttons {
>>> +               compatible = "gpio-keys";
>>> +               button-power {
>>> +                       label = "power_btn";
>>> +                       linux,code = <KEY_POWER>;
>>> +                       gpios = <&exp7 9 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +               button-uid {
>>> +                       label = "uid_btn";
>>> +                       linux,code = <KEY_FN_1>;
>>> +                       gpios = <&exp7 11 GPIO_ACTIVE_LOW>;
>>> +               };
>>> +       };
>>> +
>>> +       chosen {
>>> +               stdout-path = &uart5;
>>> +       };
>>> +
>>> +       leds {
>>> +               compatible = "gpio-leds";
>>> +               hb-led {
>>> +                       gpios = <&gpio0 127 GPIO_ACTIVE_LOW>;
>>> +                       function = LED_FUNCTION_HEARTBEAT;
>>> +                       color = <LED_COLOR_ID_GREEN>;
>>> +                       label = "bmc-hbled";
>>> +                       linux,default-trigger = "heartbeat";
>>> +                       default-state = "on";
>>> +                       retain-state-suspended;
>>> +                       retain-state-shutdown;
>>> +               };
>>> +               pwr-led {
>>> +                       gpios = <&exp7 8 GPIO_ACTIVE_LOW>;
>>> +                       function = LED_FUNCTION_POWER;
>>> +                       color = <LED_COLOR_ID_WHITE>;
>>> +                       label = "pwr-led";
>>> +                       linux,default-trigger = "default-on";
>>> +                       default-state = "on";
>>> +                       retain-state-suspended;
>>> +                       retain-state-shutdown;
>>> +               };
>>> +               uid-led {
>>> +                       gpios = <&exp7 10 GPIO_ACTIVE_LOW>;
>>> +                       function = LED_FUNCTION_INDICATOR;
>>> +                       color = <LED_COLOR_ID_BLUE>;
>>> +                       label = "uid-led";
>>> +                       default-state = "off";
>>> +                       retain-state-suspended;
>>> +                       retain-state-shutdown;
>>> +               };
>>> +               fault-led {
>>> +                       gpios = <&exp7 12 GPIO_ACTIVE_LOW>;
>>> +                       function = LED_FUNCTION_PANIC;
>>> +                       color = <LED_COLOR_ID_WHITE>;
>>> +                       label = "fault-led";
>>> +                       default-state = "off";
>>> +                       retain-state-suspended;
>>> +                       retain-state-shutdown;
>>> +                       panic-indicator;
>>> +               };
>>> +               warn-led {
>>> +                       gpios = <&exp7 15 GPIO_ACTIVE_LOW>;
>>> +                       function = LED_FUNCTION_PANIC;
>>> +                       color = <LED_COLOR_ID_RED>;
>>> +                       label = "warn-led";
>>> +                       default-state = "off";
>>> +                       retain-state-suspended;
>>> +                       retain-state-shutdown;
>>> +               }; 
>> To be consistent with my request on your other devicetree series, can
>> you please order nodes that either have no unit address or reference a
>> label alphabetically, in line with the DTS style guide?
>>
>>> +       };
>>> +
>>> +       memory@80000000 {
>>> +               device_type = "memory";
>>> +               reg = <0x80000000 0x80000000>;
>>> +       };
>>> +
>>> +       reg_3v3_stby: regulator-3v3-standby {
>>> +               compatible = "regulator-fixed";
>>> +               regulator-name = "3v3-standby";
>>> +               regulator-min-microvolt = <3300000>;
>>> +               regulator-max-microvolt = <3300000>;
>>> +               gpio = <&gpio0 ASPEED_GPIO(M, 3) GPIO_ACTIVE_HIGH>;
>>> +               enable-active-high;
>>> +               regulator-always-on;
>>> +       };
>>> +
>>> +       reserved-memory {
>>> +               #address-cells = <1>;
>>> +               #size-cells = <1>;
>>> +               ranges;
>>> +
>>> +               vga_memory: framebuffer@9f000000 {
>>> +                       no-map;
>>> +                       reg = <0x9f000000 0x01000000>; /* 16M */
>>> +               };
>>> +
>>> +               ramoops@a0000000 {
>>> +                       compatible = "ramoops";
>>> +                       reg = <0xa0000000 0x100000>; /* 1MB */
>>> +                       record-size = <0x10000>; /* 64KB */
>>> +                       max-reason = <2>; /* KMSG_DUMP_OOPS */
>>> +               };
>>> +
>>> +               gfx_memory: framebuffer {
>>> +                       compatible = "shared-dma-pool";
>>> +                       reusable;
>>> +                       size = <0x01000000>;
>>> +                       alignment = <0x01000000>;
>>> +               };
>>> +
>>> +               video_engine_memory: jpegbuffer {
>>> +                       compatible = "shared-dma-pool";
>>> +                       reusable;
>>> +                       size = <0x02000000>;    /* 32M */
>>> +                       alignment = <0x01000000>;
>>> +               };
>>> +       };
>>> +};
>>> +
>>> +// Enable Primary flash on FMC for bring up activity
>>> +&fmc {
>>> +       status = "okay";
>>> +       flash@0 {
>>> +               compatible = "jedec,spi-nor";
>>> +               label = "bmc";
>>> +               spi-max-frequency = <50000000>;
>>> +               status = "okay";
>>> +               partitions {
>>> +                       compatible = "fixed-partitions";
>>> +                       #address-cells = <1>;
>>> +                       #size-cells = <1>;
>>> +
>>> +                       u-boot@0 {
>>> +                               // 896KB
>>> +                               reg = <0x0 0xe0000>;
>>> +                               label = "u-boot";
>>> +                       };
>>> +
>>> +                       kernel@100000 {
>>> +                               // 9MB
>>> +                               reg = <0x100000 0x900000>;
>>> +                               label = "kernel";
>>> +                       };
>>> +
>>> +                       rofs@a00000 {
>>> +                               // 55292KB (extends to end of 64MB SPI - 4KB)
>>> +                               reg = <0xa00000 0x35FF000>;
>>> +                               label = "rofs";
>>> +                       };
>>> +               }; 
>> This isn't using one of the usual OpenBMC flash layouts? Can you add a
>> comment as to why?
>>
>>> +       };
>>> +};
>>> +
>>> +&spi2 {
>>> +       pinctrl-names = "default";
>>> +       pinctrl-0 = <&pinctrl_spi2_default>;
>>> +       status = "okay";
>>> +       // Data SPI is 64MB in size
>>> +       flash@0 {
>>> +               compatible = "jedec,spi-nor";
>>> +               label = "config";
>>> +               spi-max-frequency = <50000000>;
>>> +               status = "okay";
>>> +               partitions {
>>> +                       compatible = "fixed-partitions";
>>> +                       #address-cells = <1>;
>>> +                       #size-cells = <1>;
>>> +
>>> +                       u-boot-env@0 {
>>> +                               // 256KB
>>> +                               reg = <0x0 0x40000>;
>>> +                               label = "u-boot-env";
>>> +                       };
>>> +
>>> +                       rwfs@40000 {
>>> +                               // 16MB
>>> +                               reg = <0x40000 0x1000000>;
>>> +                               label = "rwfs";
>>> +                       };
>>> +
>>> +                       log@1040000 {
>>> +                               // 40MB
>>> +                               reg = <0x1040000 0x2800000>;
>>> +                               label = "log";
>>> +                       };
>>> +               };
>>> +       };
>>> +};
>>> +
>>> +&mdio0 {
>>> +       status = "okay";
>>> +       ethphy0: ethernet-phy@0 {
>>> +               compatible = "ethernet-phy-ieee802.3-c22";
>>> +               reg = <0>;
>>> +       };
>>> +};
>>> +
>>> +&mac0 {
>>> +       pinctrl-names = "default";
>>> +       phy-mode = "rgmii-id"; 
>> Is this correct, in the context of the query here?
>>
>> https://lore.kernel.org/all/6a3d7eb4-c091-437f-98f8-2b8577e539a7@lunn.ch/
>>
>> If not, please drop the node from the patch until the MAC driver is
>> fixed with respect to the RGMII delays.
>>
>> Andrew 
>
> Hi Andrew,
>
> I will change this to alphabetical order.
>
> The extra space in our flash is for root of trust application. I will note this in the next patch.
>
> I see that the ftgmac100 drivers do not use the phy-mode parameter so I will leave it out.
>
> Thanks,
> Don
>

Hi Andrew,

I am getting conflicting messages in my v3 patch series and want to confirm what the consensus
is for removing or keeping the unused phy-mode parameter. There is some inconsistency in
the existing dts-es as well.

Our board phy implements tx and rx delay, so -id would be the appropriate one to use if we
decide to use it.

Should I keep it or remove it?

Thanks,
Don
Re: [PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Andrew Jeffery 2 weeks, 4 days ago
Hi Donald,

On Wed, 2025-09-10 at 09:46 -0700, Donald Shannon wrote:
> On 9/9/25 16:05, Donald Shannon wrote:
> > On 9/3/25 00:07, Andrew Jeffery wrote:
> > 
> > > Hi Donald,
> > > 
> > > On Fri, 2025-08-22 at 13:38 -0700, Donald Shannon wrote:
> > > > This is an Aspeed AST2600 based BMC board for the NVIDIA VR144NVL
> > > > Platform.
> > > > 

*snip*

> > > > +
> > > > +&mdio0 {
> > > > +       status = "okay";
> > > > +       ethphy0: ethernet-phy@0 {
> > > > +               compatible = "ethernet-phy-ieee802.3-c22";
> > > > +               reg = <0>;
> > > > +       };
> > > > +};
> > > > +
> > > > +&mac0 {
> > > > +       pinctrl-names = "default";
> > > > +       phy-mode = "rgmii-id"; 
> > > Is this correct, in the context of the query here?
> > > 
> > > https://lore.kernel.org/all/6a3d7eb4-c091-437f-98f8-2b8577e539a7@lunn.ch/
> > > 
> > > If not, please drop the node from the patch until the MAC driver is
> > > fixed with respect to the RGMII delays.
> > > 
> > > Andrew 
> > 
> > Hi Andrew,
> > 
> > I will change this to alphabetical order.
> > 
> > The extra space in our flash is for root of trust application. I will note this in the next patch.
> > 
> > I see that the ftgmac100 drivers do not use the phy-mode parameter so I will leave it out.
> > 
> > Thanks,
> > Don
> > 
> 
> Hi Andrew,
> 
> I am getting conflicting messages in my v3 patch series and want to confirm what the consensus
> is for removing or keeping the unused phy-mode parameter.
> 

The background is that there's been some concerns over phy-mode wrt to
where the RGMII delays are inserted, and the impact on the phy
configuration. My intent was that if you were unsure that you would
remove the entire mac node rather than just the phy-mode property. That
way there's no networking that can break when ASPEED sort out issues
with the ftgmac100 driver. You would have to carry a downstream patch
to add the node back for networking, but I feel that's an improvement
on carrying the entire devicetree downstream.

However:

>  There is some inconsistency in
> the existing dts-es as well.

Yes, this is part of the problem.

> 
> Our board phy implements tx and rx delay, so -id would be the appropriate one to use if we
> decide to use it.

Right, so long as there's no delay configured for the MAC in the SCU
(see SCU340-35C) and networking functions for your board then I think
it's fine to keep the node and specify `phy-mode = "rgmii-id";`. Any
fixes to the driver shouldn't break that arrangement (as in this
configuration it should deconfigure any delays for the MAC in the SCU).

There's some good documentation here:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/ethernet-controller.yaml?h=v6.16#n264

and relevant discussion here:

https://lore.kernel.org/all/f28736b5-f4e4-488e-8c9b-55afc7316c5e@lunn.ch/

Sorry for the confusion.

Andrew
Re: [PATCH v2 2/2] ARM: dts: aspeed: Add NVIDIA VR144NVL board
Posted by Andrew Lunn 2 weeks, 4 days ago
> > 
> > Our board phy implements tx and rx delay, so -id would be the appropriate one to use if we
> > decide to use it.

I'm curious. How do you achieve this? Have you hacked the bootloader?

> Right, so long as there's no delay configured for the MAC in the SCU
> (see SCU340-35C) and networking functions for your board then I think
> it's fine to keep the node and specify `phy-mode = "rgmii-id";`.

Yes, this is how it is supposed to work. But please add a comment to
the commit message about how this actually works, e.g. if you have a
hacked bootloader, please make that clear, in case somebody wants to
run the mainline version on this hardware.

	Andrew