diff mbox series

[2/2] ARM: dts: aspeed: Add Delta AHE-50DC BMC

Message ID 20221105013321.2719-3-zev@bewilderbeest.net (mailing list archive)
State Superseded
Headers show
Series ARM: dts: aspeed: Add Delta AHE-50DC BMC | expand

Commit Message

Zev Weiss Nov. 5, 2022, 1:33 a.m. UTC
This is a 1U Open19 power shelf with six PSUs and 50 12VDC outputs via
LM25066 efuses.  It's managed by a pair of AST1250 BMCs in a redundant
active/active configuration using a PCA9541 on each I2C bus to
arbitrate access between the two.

Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
---
 arch/arm/boot/dts/Makefile                    |    1 +
 .../arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts | 1094 +++++++++++++++++
 2 files changed, 1095 insertions(+)
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts

Comments

Zev Weiss Nov. 6, 2022, 9:23 a.m. UTC | #1
On Fri, Nov 04, 2022 at 06:33:21PM PDT, Zev Weiss wrote:
>This is a 1U Open19 power shelf with six PSUs and 50 12VDC outputs via
>LM25066 efuses.  It's managed by a pair of AST1250 BMCs in a redundant
>active/active configuration using a PCA9541 on each I2C bus to
>arbitrate access between the two.
>
>Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
>---
> arch/arm/boot/dts/Makefile                    |    1 +
> .../arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts | 1094 +++++++++++++++++
> 2 files changed, 1095 insertions(+)
> create mode 100644 arch/arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts
>

Hmm -- actually, after posting this I realized that the repetitive efuse 
nodes could be expressed in a much more concise and much less tedious, 
error-prone manner using a preprocessor macro or two; I'll send a v2 
with that approach instead.


Zev
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 6aa7dc4db2fc..8961fbb2c0bc 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1588,6 +1588,7 @@  dtb-$(CONFIG_ARCH_ASPEED) += \
 	aspeed-bmc-asrock-e3c246d4i.dtb \
 	aspeed-bmc-asrock-romed8hm3.dtb \
 	aspeed-bmc-bytedance-g220a.dtb \
+	aspeed-bmc-delta-ahe50dc.dtb \
 	aspeed-bmc-facebook-bletchley.dtb \
 	aspeed-bmc-facebook-cloudripper.dtb \
 	aspeed-bmc-facebook-cmm.dtb \
diff --git a/arch/arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts b/arch/arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts
new file mode 100644
index 000000000000..3f1b7eb724d1
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-delta-ahe50dc.dts
@@ -0,0 +1,1094 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g4.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/{
+	model = "Delta Power AHE-50DC";
+	compatible = "delta,ahe50dc-bmc", "aspeed,ast2400";
+
+	aliases {
+		serial4 = &uart5;
+
+		/*
+		 * pca9541-arbitrated logical i2c buses are numbered as the
+		 * corresponding physical bus plus 20
+		 */
+		i2c20 = &i2carb0;
+		i2c21 = &i2carb1;
+		i2c22 = &i2carb2;
+		i2c23 = &i2carb3;
+		i2c24 = &i2carb4;
+		i2c26 = &i2carb6;
+		i2c27 = &i2carb7;
+		i2c28 = &i2carb8;
+		i2c32 = &i2carb12;
+	};
+
+	chosen {
+		stdout-path = &uart3;
+		bootargs = "console=ttyS2,115200n8 earlycon";
+	};
+
+	memory@40000000 {
+		reg = <0x40000000 0x10000000>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		heartbeat {
+			gpios = <&gpio ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+		};
+
+		panic {
+			gpios = <&gpio ASPEED_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "panic";
+		};
+	};
+
+	iio-hwmon {
+		compatible = "iio-hwmon";
+		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>,
+			<&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>;
+	};
+
+	efuse01 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse01>;
+	};
+
+	efuse02 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse02>;
+	};
+
+	efuse03 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse03>;
+	};
+
+	efuse04 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse04>;
+	};
+
+	efuse05 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse05>;
+	};
+
+	efuse06 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse06>;
+	};
+
+	efuse07 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse07>;
+	};
+
+	efuse08 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse08>;
+	};
+
+	efuse09 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse09>;
+	};
+
+	efuse10 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse10>;
+	};
+
+	efuse11 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse11>;
+	};
+
+	efuse12 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse12>;
+	};
+
+	efuse13 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse13>;
+	};
+
+	efuse14 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse14>;
+	};
+
+	efuse15 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse15>;
+	};
+
+	efuse16 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse16>;
+	};
+
+	efuse17 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse17>;
+	};
+
+	efuse18 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse18>;
+	};
+
+	efuse19 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse19>;
+	};
+
+	efuse20 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse20>;
+	};
+
+	efuse21 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse21>;
+	};
+
+	efuse22 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse22>;
+	};
+
+	efuse23 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse23>;
+	};
+
+	efuse24 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse24>;
+	};
+
+	efuse25 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse25>;
+	};
+
+	efuse26 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse26>;
+	};
+
+	efuse27 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse27>;
+	};
+
+	efuse28 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse28>;
+	};
+
+	efuse29 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse29>;
+	};
+
+	efuse30 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse30>;
+	};
+
+	efuse31 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse31>;
+	};
+
+	efuse32 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse32>;
+	};
+
+	efuse33 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse33>;
+	};
+
+	efuse34 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse34>;
+	};
+
+	efuse35 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse35>;
+	};
+
+	efuse36 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse36>;
+	};
+
+	efuse37 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse37>;
+	};
+
+	efuse38 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse38>;
+	};
+
+	efuse39 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse39>;
+	};
+
+	efuse40 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse40>;
+	};
+
+	efuse41 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse41>;
+	};
+
+	efuse42 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse42>;
+	};
+
+	efuse43 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse43>;
+	};
+
+	efuse44 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse44>;
+	};
+
+	efuse45 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse45>;
+	};
+
+	efuse46 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse46>;
+	};
+
+	efuse47 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse47>;
+	};
+
+	efuse48 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse48>;
+	};
+
+	efuse49 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse49>;
+	};
+
+	efuse50 {
+		compatible = "regulator-output";
+		vout-supply = <&efuse50>;
+	};
+};
+
+&fmc {
+	status = "okay";
+
+	flash@0 {
+		status = "okay";
+		m25p,fast-read;
+		label = "flash0";
+		spi-max-frequency = <50000000>; // 50 MHz
+#include "openbmc-flash-layout.dtsi"
+	};
+};
+
+&uart3 {
+	status = "okay";
+};
+
+&mac1 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
+};
+
+&i2c0 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@79 {
+		compatible = "nxp,pca9541";
+		reg = <0x79>;
+
+		i2carb0: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* lm25066 efuses @ 10-17, 40-47, 50-57 */
+			efuse@10 {
+				compatible = "lm25066";
+				reg = <0x10>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse03: vout0 {
+						regulator-name = "efuse03-reg";
+					};
+				};
+			};
+
+			efuse@11 {
+				compatible = "lm25066";
+				reg = <0x11>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse04: vout0 {
+						regulator-name = "efuse04-reg";
+					};
+				};
+			};
+
+			efuse@12 {
+				compatible = "lm25066";
+				reg = <0x12>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse01: vout0 {
+						regulator-name = "efuse01-reg";
+					};
+				};
+			};
+
+			efuse@13 {
+				compatible = "lm25066";
+				reg = <0x13>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse02: vout0 {
+						regulator-name = "efuse02-reg";
+					};
+				};
+			};
+
+			efuse@14 {
+				compatible = "lm25066";
+				reg = <0x14>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse13: vout0 {
+						regulator-name = "efuse13-reg";
+					};
+				};
+			};
+
+			efuse@15 {
+				compatible = "lm25066";
+				reg = <0x15>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse14: vout0 {
+						regulator-name = "efuse14-reg";
+					};
+				};
+			};
+
+			efuse@16 {
+				compatible = "lm25066";
+				reg = <0x16>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse15: vout0 {
+						regulator-name = "efuse15-reg";
+					};
+				};
+			};
+
+			efuse@17 {
+				compatible = "lm25066";
+				reg = <0x17>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse16: vout0 {
+						regulator-name = "efuse16-reg";
+					};
+				};
+			};
+
+			efuse@40 {
+				compatible = "lm25066";
+				reg = <0x40>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse12: vout0 {
+						regulator-name = "efuse12-reg";
+					};
+				};
+			};
+
+			efuse@41 {
+				compatible = "lm25066";
+				reg = <0x41>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse11: vout0 {
+						regulator-name = "efuse11-reg";
+					};
+				};
+			};
+
+			efuse@42 {
+				compatible = "lm25066";
+				reg = <0x42>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse10: vout0 {
+						regulator-name = "efuse10-reg";
+					};
+				};
+			};
+
+			efuse@43 {
+				compatible = "lm25066";
+				reg = <0x43>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse09: vout0 {
+						regulator-name = "efuse09-reg";
+					};
+				};
+			};
+
+			efuse@44 {
+				compatible = "lm25066";
+				reg = <0x44>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse08: vout0 {
+						regulator-name = "efuse08-reg";
+					};
+				};
+			};
+
+			efuse@45 {
+				compatible = "lm25066";
+				reg = <0x45>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse07: vout0 {
+						regulator-name = "efuse07-reg";
+					};
+				};
+			};
+
+			efuse@46 {
+				compatible = "lm25066";
+				reg = <0x46>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse05: vout0 {
+						regulator-name = "efuse05-reg";
+					};
+				};
+			};
+
+			efuse@47 {
+				compatible = "lm25066";
+				reg = <0x47>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse06: vout0 {
+						regulator-name = "efuse06-reg";
+					};
+				};
+			};
+
+			efuse@50 {
+				compatible = "lm25066";
+				reg = <0x50>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse17: vout0 {
+						regulator-name = "efuse17-reg";
+					};
+				};
+			};
+
+			efuse@51 {
+				compatible = "lm25066";
+				reg = <0x51>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse18: vout0 {
+						regulator-name = "efuse18-reg";
+					};
+				};
+			};
+
+			efuse@52 {
+				compatible = "lm25066";
+				reg = <0x52>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse20: vout0 {
+						regulator-name = "efuse20-reg";
+					};
+				};
+			};
+
+			efuse@53 {
+				compatible = "lm25066";
+				reg = <0x53>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse19: vout0 {
+						regulator-name = "efuse19-reg";
+					};
+				};
+			};
+
+			efuse@54 {
+				compatible = "lm25066";
+				reg = <0x54>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse22: vout0 {
+						regulator-name = "efuse22-reg";
+					};
+				};
+			};
+
+			efuse@55 {
+				compatible = "lm25066";
+				reg = <0x55>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse21: vout0 {
+						regulator-name = "efuse21-reg";
+					};
+				};
+			};
+
+			efuse@56 {
+				compatible = "lm25066";
+				reg = <0x56>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse24: vout0 {
+						regulator-name = "efuse24-reg";
+					};
+				};
+			};
+
+			efuse@57 {
+				compatible = "lm25066";
+				reg = <0x57>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse23: vout0 {
+						regulator-name = "efuse23-reg";
+					};
+				};
+			};
+		};
+	};
+};
+
+&i2c1 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@72 {
+		compatible = "nxp,pca9541";
+		reg = <0x72>;
+
+		i2carb1: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&i2c2 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@73 {
+		compatible = "nxp,pca9541";
+		reg = <0x73>;
+
+		i2carb2: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&i2c3 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@74 {
+		compatible = "nxp,pca9541";
+		reg = <0x74>;
+
+		i2carb3: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&i2c4 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@7a {
+		compatible = "nxp,pca9541";
+		reg = <0x7a>;
+
+		i2carb4: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			gpio@20 {
+				compatible = "nxp,pca9534";
+				reg = <0x20>;
+				gpio-controller;
+				#gpio-cells = <2>;
+			};
+
+			/* lm25066 efuses @ 10-17, 40-47, 50-57, 59, 5a */
+			efuse@10 {
+				compatible = "lm25066";
+				reg = <0x10>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse27: vout0 {
+						regulator-name = "efuse27-reg";
+					};
+				};
+			};
+
+			efuse@11 {
+				compatible = "lm25066";
+				reg = <0x11>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse28: vout0 {
+						regulator-name = "efuse28-reg";
+					};
+				};
+			};
+
+			efuse@12 {
+				compatible = "lm25066";
+				reg = <0x12>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse25: vout0 {
+						regulator-name = "efuse25-reg";
+					};
+				};
+			};
+
+			efuse@13 {
+				compatible = "lm25066";
+				reg = <0x13>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse26: vout0 {
+						regulator-name = "efuse26-reg";
+					};
+				};
+			};
+
+			efuse@14 {
+				compatible = "lm25066";
+				reg = <0x14>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse37: vout0 {
+						regulator-name = "efuse37-reg";
+					};
+				};
+			};
+
+			efuse@15 {
+				compatible = "lm25066";
+				reg = <0x15>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse38: vout0 {
+						regulator-name = "efuse38-reg";
+					};
+				};
+			};
+
+			efuse@16 {
+				compatible = "lm25066";
+				reg = <0x16>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse39: vout0 {
+						regulator-name = "efuse39-reg";
+					};
+				};
+			};
+
+			efuse@17 {
+				compatible = "lm25066";
+				reg = <0x17>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse40: vout0 {
+						regulator-name = "efuse40-reg";
+					};
+				};
+			};
+
+			efuse@40 {
+				compatible = "lm25066";
+				reg = <0x40>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse36: vout0 {
+						regulator-name = "efuse36-reg";
+					};
+				};
+			};
+
+			efuse@41 {
+				compatible = "lm25066";
+				reg = <0x41>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse35: vout0 {
+						regulator-name = "efuse35-reg";
+					};
+				};
+			};
+
+			efuse@42 {
+				compatible = "lm25066";
+				reg = <0x42>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse34: vout0 {
+						regulator-name = "efuse34-reg";
+					};
+				};
+			};
+
+			efuse@43 {
+				compatible = "lm25066";
+				reg = <0x43>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse33: vout0 {
+						regulator-name = "efuse33-reg";
+					};
+				};
+			};
+
+			efuse@44 {
+				compatible = "lm25066";
+				reg = <0x44>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse32: vout0 {
+						regulator-name = "efuse32-reg";
+					};
+				};
+			};
+
+			efuse@45 {
+				compatible = "lm25066";
+				reg = <0x45>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse31: vout0 {
+						regulator-name = "efuse31-reg";
+					};
+				};
+			};
+
+			efuse@46 {
+				compatible = "lm25066";
+				reg = <0x46>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse29: vout0 {
+						regulator-name = "efuse29-reg";
+					};
+				};
+			};
+
+			efuse@47 {
+				compatible = "lm25066";
+				reg = <0x47>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse30: vout0 {
+						regulator-name = "efuse30-reg";
+					};
+				};
+			};
+
+			efuse@50 {
+				compatible = "lm25066";
+				reg = <0x50>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse41: vout0 {
+						regulator-name = "efuse41-reg";
+					};
+				};
+			};
+
+			efuse@51 {
+				compatible = "lm25066";
+				reg = <0x51>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse42: vout0 {
+						regulator-name = "efuse42-reg";
+					};
+				};
+			};
+
+			efuse@52 {
+				compatible = "lm25066";
+				reg = <0x52>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse44: vout0 {
+						regulator-name = "efuse44-reg";
+					};
+				};
+			};
+
+			efuse@53 {
+				compatible = "lm25066";
+				reg = <0x53>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse43: vout0 {
+						regulator-name = "efuse43-reg";
+					};
+				};
+			};
+
+			efuse@54 {
+				compatible = "lm25066";
+				reg = <0x54>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse46: vout0 {
+						regulator-name = "efuse46-reg";
+					};
+				};
+			};
+
+			efuse@55 {
+				compatible = "lm25066";
+				reg = <0x55>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse45: vout0 {
+						regulator-name = "efuse45-reg";
+					};
+				};
+			};
+
+			efuse@56 {
+				compatible = "lm25066";
+				reg = <0x56>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse48: vout0 {
+						regulator-name = "efuse48-reg";
+					};
+				};
+			};
+
+			efuse@57 {
+				compatible = "lm25066";
+				reg = <0x57>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse47: vout0 {
+						regulator-name = "efuse47-reg";
+					};
+				};
+			};
+
+			efuse@59 {
+				compatible = "lm25066";
+				reg = <0x59>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse49: vout0 {
+						regulator-name = "efuse49-reg";
+					};
+				};
+			};
+
+			efuse@5a {
+				compatible = "lm25066";
+				reg = <0x5a>;
+				shunt-resistor-micro-ohms = <675>;
+				regulators {
+					efuse50: vout0 {
+						regulator-name = "efuse50-reg";
+					};
+				};
+			};
+		};
+	};
+};
+
+&i2c6 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@75 {
+		compatible = "nxp,pca9541";
+		reg = <0x75>;
+
+		i2carb6: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&i2c7 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@76 {
+		compatible = "nxp,pca9541";
+		reg = <0x76>;
+
+		i2carb7: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&i2c8 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@7c {
+		compatible = "nxp,pca9541";
+		reg = <0x7c>;
+
+		i2carb8: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			fancontrol@30 {
+				compatible = "delta,ahe50dc-fan";
+				reg = <0x30>;
+			};
+
+			/* Baseboard FRU eeprom */
+			eeprom@50 {
+				compatible = "atmel,24c02";
+				reg = <0x50>;
+			};
+		};
+	};
+};
+
+&i2c12 {
+	status = "okay";
+	bus-frequency = <200000>;
+
+	pca9541@71 {
+		compatible = "nxp,pca9541";
+		reg = <0x71>;
+
+		i2carb12: i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
+
+&gpio {
+	status = "okay";
+	gpio-line-names =
+		/*  A */ "", "", "", "", "", "", "", "",
+		/*  B */ "", "", "", "", "", "", "", "",
+		/*  C */ "RESET_PEER_N", "HEARTBEAT_OUT", "", "", "", "", "", "",
+		/*  D */ "", "", "", "", "", "", "", "",
+		/*  E */ "DOOM_N", "", "", "", "", "LED_PWR_BLUE", "", "",
+		/*  F */ "", "", "", "", "", "", "", "",
+		/*  G */ "", "", "", "", "", "", "", "",
+		/*  H */ "", "", "", "", "", "", "", "",
+		/*  I */ "", "", "", "", "", "", "", "",
+		/*  J */ "", "", "BMC_ID", "", "", "", "", "",
+		/*  K */ "", "", "", "", "", "", "", "",
+		/*  L */ "", "", "", "", "", "", "", "",
+		/*  M */ "", "", "", "", "", "", "", "",
+		/*  N */ "", "", "", "", "", "", "", "",
+		/*  O */ "", "", "", "", "", "", "", "",
+		/*  P */ "LED_GREEN", "", "LED_RED", "", "", "", "", "",
+		/*  Q */ "", "", "", "", "", "", "", "",
+		/*  R */ "", "", "", "", "", "", "", "",
+		/*  S */ "", "", "", "", "", "", "", "",
+		/*  T */ "", "", "", "", "", "", "", "",
+		/*  U */ "", "", "", "", "", "", "", "",
+		/*  V */ "", "", "", "", "", "", "", "",
+		/*  W */ "", "", "", "", "", "", "", "",
+		/*  X */ "", "", "", "", "", "", "", "",
+		/*  Y */ "HEARTBEAT_IN", "BOARDREV0", "BOARDREV1", "",
+		/*  Z */ "", "", "", "", "", "", "", "",
+		/* AA */ "", "", "", "", "", "", "", "",
+		/* AB */ "", "", "", "";
+
+	/*
+	 * I don't rightly know what this GPIO really *is*, but setting it to
+	 * zero causes the fans to run at full speed, after which setting it
+	 * back to one causes a power output glitch, so install a hog to keep
+	 * it at one as a failsafe to ensure nothing accidentally touches it.
+	 */
+	doom-guardrail {
+		gpio-hog;
+		gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_LOW>;
+		output-low;
+	};
+};
+
+&adc {
+	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
+		&pinctrl_adc8_default
+		&pinctrl_adc9_default>;
+};