[linux,dev-4.10,v2] ARM: dts: aspeed: Add ARM system BMC device tree

Message ID 20180205030343.25114-1-chen.kenyy@inventec.com
State New
Headers show
Series
  • [linux,dev-4.10,v2] ARM: dts: aspeed: Add ARM system BMC device tree
Related show

Commit Message

Ken Chen Feb. 5, 2018, 3:03 a.m.
Add centriq2400-rep dts and modify platform initial

Signed-off-by: Ken Chen <chen.kenyy@inventec.com>
---
 .../boot/dts/aspeed-bmc-arm-centriq2400-rep.dts    | 350 +++++++++++++++++++++
 arch/arm/mach-aspeed/aspeed.c                      |  22 ++
 2 files changed, 372 insertions(+)
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts

Comments

Ken Chen Feb. 6, 2018, 5:15 a.m. | #1
Should I remove the device hasn't the driver yet?


-----Original Message-----
From: Chen.KenYY 陳永營 TAO 

Sent: Monday, February 05, 2018 11:04 AM
To: openbmc@lists.ozlabs.org
Cc: Chen.KenYY 陳永營 TAO; joel@jms.id.au
Subject: [PATCH linux dev-4.10 v2] ARM: dts: aspeed: Add ARM system BMC device tree

Add centriq2400-rep dts and modify platform initial

Signed-off-by: Ken Chen <chen.kenyy@inventec.com>

---
 .../boot/dts/aspeed-bmc-arm-centriq2400-rep.dts    | 350 +++++++++++++++++++++
 arch/arm/mach-aspeed/aspeed.c                      |  22 ++
 2 files changed, 372 insertions(+)
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts

diff --git a/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
new file mode 100644
index 0000000..4094732
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
@@ -0,0 +1,350 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g5.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+	model = "Qualcomm Centriq 2400  REP AST2520";
+	compatible = "qualcomm,centriq2400-rep-bmc", "aspeed,ast2500";
+
+	chosen {
+		stdout-path = &uart5;
+		bootargs = "console=ttyS4,115200 earlyprintk";
+	};
+
+	memory {
+		reg = <0x80000000 0x40000000>;
+	};
+
+	iio-hwmon {
+		compatible = "iio-hwmon";
+		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
+                        <&adc 4>, <&adc 5>, <&adc 6>, <&adc 8>;
+	};
+
+	iio-hwmon-battery {
+		compatible = "iio-hwmon";
+		io-channels = <&adc 7>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		uid_led {
+			label = "UID_LED";
+			gpios = <&gpio ASPEED_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
+		};
+
+		ras_error_led {
+			label = "RAS_ERROR_LED";
+			gpios = <&gpio ASPEED_GPIO(F, 6) GPIO_ACTIVE_LOW>;
+		};
+
+		system_fault {
+			label = "System_fault";
+			gpios = <&gpio ASPEED_GPIO(A, 1) GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&fmc {
+	status = "okay";
+	flash@0 {
+		status = "okay";
+		m25p,fast-read;
+                lable = "bmc";
+#include "openbmc-flash-layout.dtsi"
+	};
+};
+
+&spi1 {
+        status = "okay";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_spi1_default>;
+        flash@0 {
+                reg = < 0 >; /* chip select number */
+                compatible = "jedec,spi-nor";
+                status = "okay";
+        };
+};
+
+&spi2 {
+        compatible = "aspeed,ast2500-spi-generic";
+        reg = <0x1e631000 0xc4 0x38000000 0x02000000>;
+        interrupts = <59>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        status = "okay";
+        spi2@0 {
+                reg = < 0 >;
+                compatible = "centriq,centriq2400-spi-hwmon";
+                spi-max-frequency = <16000000>;
+                status = "okay";
+        };
+};
+
+&uart3 {
+        status = "okay";
+
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_txd3_default
+                     &pinctrl_rxd3_default>;
+        current-speed = <115200>;
+};
+
+&lpc_ctrl {
+	status = "okay";
+	memory-region = <&flash_memory>;
+	flash = <&spi1>;
+};
+
+&uart5 {
+	status = "okay";
+};
+
+&mac0 {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>; };
+
+&i2c0 {
+	status = "okay";
+
+	pca9542@70 {
+                compatible = "pca9542";
+                reg = <0x70>;
+		i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+			pca9546@77 {
+				compatible = "pca9546";
+				reg = <0x77>;
+				i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+					eeprom@52 {
+						compatible = "atmel,24c02";
+						reg = <0x52>;
+					};
+				};
+				i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+					eeprom@57 {
+						compatible = "atmel,24c02";
+						reg = <0x57>;
+					};
+				};
+			};
+		};
+		i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+			pca9546@77 {
+				compatible = "pca9546";
+				reg = <0x77>;
+				i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+					eeprom@57 {
+						compatible = "atmel,24c02";
+						reg = <0x57>;
+					};
+				};
+			};
+		};
+
+        };
+};
+
+&i2c1 {
+	status = "okay";
+
+        tmp421@1e {
+                compatible = "ti,tmp421";
+                reg = <0x1e>;
+        };
+        tmp421@2a {
+                compatible = "ti,tmp421";
+                reg = <0x2a>;
+        };
+        tmp421@4e {
+                compatible = "ti,tmp421";
+                reg = <0x4e>;
+        };
+        tmp421@1c {
+                compatible = "ti,tmp421";
+                reg = <0x1c>;
+        };
+};
+
+&i2c2 {
+	status = "okay";
+	ssif {
+                compatible = "ssif-smbus-slave";
+                reg = <0x42>;
+        };
+
+};
+
+&i2c3 {
+	status = "okay";
+};
+
+&i2c4 {
+	status = "okay";
+};
+
+&i2c5 {
+	status = "okay";
+
+        ir38163@42 {
+                compatible = "ir38163";
+                reg = <0x42>;
+        };
+	ir38163@44 {
+                compatible = "ir38163";
+                reg = <0x44>;
+        };
+	ir38163@46 {
+                compatible = "ir38163";
+                reg = <0x46>;
+        };
+	ir38163@48 {
+                compatible = "ir38163";
+                reg = <0x48>;
+        };
+	pxm1310@02 {
+                compatible = "pxm1310";
+                reg = <0x02>;
+        };
+	pxm1310@04 {
+                compatible = "pxm1310";
+                reg = <0x04>;
+        };
+};
+
+&i2c6 {
+	status = "okay";
+
+	tmp421@1d {
+                compatible = "ti,tmp421";
+                reg = <0x1d>;
+        };
+        tmp421@1f {
+                compatible = "ti,tmp421";
+                reg = <0x1f>;
+        };
+        tmp421@4d {
+                compatible = "ti,tmp421";
+                reg = <0x4d>;
+        };
+        tmp421@4f {
+                compatible = "ti,tmp421";
+                reg = <0x4f>;
+        };
+        nvt210@4c {
+                compatible = "nvt210";
+                reg = <0x4c>;
+        };
+        eeprom@50 {
+                compatible = "atmel,24c128";
+                reg = <0x50>;
+                pagesize = <128>;
+        };
+};
+
+&i2c7 {
+	status = "okay";
+
+        adm1278@10 {
+                compatible = "adi,adm1278";
+                reg = <0x10>;
+		Rsense = <250>;
+        };
+        adm1278@11 {
+                compatible = "adi,adm1278";
+                reg = <0x11>;
+		Rsense = <250>;
+        };
+};
+
+&i2c8 {
+        status = "okay";
+	
+        pca9641@70 {
+                compatible = "nxp,pca9641";
+                reg = <0x70>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+                i2c-arb{
+                        tmp421@1d {
+                                compatible = "tmp421";
+                                reg = <0x1d>;
+                        };
+                        adm1278@12 {
+                                compatible = "adi,adm1278";
+                                reg = <0x12>;
+				Rsense = <500>;
+                        };
+                        max31790@20 {
+                                compatible = "max31790";
+                                reg = <0x20>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+				fan-mode = "pwm";
+                                fanconfig1 = <0x08>;
+                                fanconfig2 = <0x09>;
+                                fanconfig3 = <0x08>;
+                                fanconfig4 = <0x08>;
+                                fanconfig5 = <0x09>;
+                                fanconfig6 = <0x08>;
+                        };
+	                max31790@23 {
+                                compatible = "max31790";
+                                reg = <0x23>;
+                                #address-cells = <2>;
+				#size-cells = <0>;
+				fan-mode = "pwm";
+                                fanconfig1 = <0x08>;
+                                fanconfig2 = <0x09>;
+                                fanconfig3 = <0x08>;
+                                fanconfig4 = <0x08>;
+                                fanconfig5 = <0x09>;
+                                fanconfig6 = <0x08>;
+                        };
+			eeprom@50 {
+				compatible = "atmel,24c02";
+				reg = <0x50>;
+			};
+                        ds1100@58 {
+                                compatible = "ds1100";
+                                reg = <0x58>;
+                        };
+               };
+	};
+};
+
+&i2c9 {
+	status = "okay";
+};
+
+&vuart {
+	status = "okay";
+};
+
+&gfx {
+        status = "okay";
+};
+
+&pinctrl {
+	aspeed,external-nodes = <&gfx &lhc>;
+};
diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c index 5965bbf..4f6a5e9 100644
--- a/arch/arm/mach-aspeed/aspeed.c
+++ b/arch/arm/mach-aspeed/aspeed.c
@@ -29,6 +29,7 @@
 #define AST_BASE_MAC0		0X1E660000 /* MAC 1 */
 #define AST_BASE_SCU		0x1E6E2000 /* System Control Unit (SCU) */
 #define AST_BASE_GPIO		0x1E780000 /* GPIO Controller */
+#define AST_BASE_WDT		0x1E785000 /* Watchdog Timer */
 
 static struct map_desc aspeed_io_desc[] __initdata __maybe_unused = {
 	{
@@ -232,6 +233,25 @@ static void __init do_mellanox_setup(void)
 	writel(reg, AST_IO(AST_BASE_SCU | 0x48));  }
 
+
+static void __init do_centriq2400rep_setup(void) {
+       u32 reg;
+
+       do_common_setup();
+       writel(0x00000010, AST_IO(AST_BASE_WDT | 0x2c));
+
+       writel(0xff000000, AST_IO(AST_BASE_SCU | 0x88));
+
+       /* Set GPIOC7 to output high to init host spi driver */
+       reg = readl(AST_IO(AST_BASE_GPIO | 0x04)) | BIT(23);
+       writel(reg, AST_IO(AST_BASE_GPIO | 0x04));
+
+       reg = readl(AST_IO(AST_BASE_GPIO)) | BIT(23);
+       writel(reg, AST_IO(AST_BASE_GPIO)); }
+
+
 #define SCU_PASSWORD	0x1688A8A8
 
 static void __init aspeed_init_early(void) @@ -284,6 +304,8 @@ static void __init aspeed_init_early(void)
 		do_lanyang_setup();
 	if (of_machine_is_compatible("mellanox,msn-bmc"))
 		do_mellanox_setup();
+        if (of_machine_is_compatible("qualcomm,centriq2400-rep-bmc"))
+                do_centriq2400rep_setup();
 }
 
 static void __init aspeed_map_io(void)
--
2.9.3
Joel Stanley Feb. 6, 2018, 5:46 a.m. | #2
On Tue, Feb 6, 2018 at 3:45 PM, Chen.KenYY 陳永營 TAO
<Chen.KenYY@inventec.com> wrote:
> Should I remove the device hasn't the driver yet?

Yes please. If we don't have bindings to review against (documents
inside Documentation/devicetree/bindings) then it's hard to know if
the device tree is correct. Please remove any of the nodes that don't
have bindings in the openbmc tree.


>
>
> -----Original Message-----
> From: Chen.KenYY 陳永營 TAO
> Sent: Monday, February 05, 2018 11:04 AM
> To: openbmc@lists.ozlabs.org
> Cc: Chen.KenYY 陳永營 TAO; joel@jms.id.au
> Subject: [PATCH linux dev-4.10 v2] ARM: dts: aspeed: Add ARM system BMC device tree

Can you please target your patch at the dev-4.13 branch?

>
> Add centriq2400-rep dts and modify platform initial
>
> Signed-off-by: Ken Chen <chen.kenyy@inventec.com>
> ---
>  .../boot/dts/aspeed-bmc-arm-centriq2400-rep.dts    | 350 +++++++++++++++++++++

You have forgotten to add your device tree to the makefile at
arch/arm/boot/dts/Makefile

Please look for the other aspeed .dtb rules down the bottom of the file.

>  arch/arm/mach-aspeed/aspeed.c                      |  22 ++

Please include modifications to aspeed.c in a different patch.

>  2 files changed, 372 insertions(+)
>  create mode 100644 arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
> new file mode 100644
> index 0000000..4094732
> --- /dev/null
> +++ b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
> @@ -0,0 +1,350 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/dts-v1/;
> +
> +#include "aspeed-g5.dtsi"
> +#include <dt-bindings/gpio/aspeed-gpio.h>
> +
> +/ {
> +       model = "Qualcomm Centriq 2400  REP AST2520";
> +       compatible = "qualcomm,centriq2400-rep-bmc", "aspeed,ast2500";
> +
> +       chosen {
> +               stdout-path = &uart5;
> +               bootargs = "console=ttyS4,115200 earlyprintk";
> +       };
> +
> +       memory {
> +               reg = <0x80000000 0x40000000>;
> +       };
> +
> +       iio-hwmon {
> +               compatible = "iio-hwmon";
> +               io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
> +                        <&adc 4>, <&adc 5>, <&adc 6>, <&adc 8>;
> +       };
> +
> +       iio-hwmon-battery {
> +               compatible = "iio-hwmon";
> +               io-channels = <&adc 7>;
> +       };
> +
> +       leds {
> +               compatible = "gpio-leds";
> +
> +               uid_led {
> +                       label = "UID_LED";
> +                       gpios = <&gpio ASPEED_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
> +               };
> +
> +               ras_error_led {
> +                       label = "RAS_ERROR_LED";
> +                       gpios = <&gpio ASPEED_GPIO(F, 6) GPIO_ACTIVE_LOW>;
> +               };
> +
> +               system_fault {
> +                       label = "System_fault";
> +                       gpios = <&gpio ASPEED_GPIO(A, 1) GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +};
> +
> +&fmc {
> +       status = "okay";
> +       flash@0 {
> +               status = "okay";
> +               m25p,fast-read;
> +                lable = "bmc";

typo: label.

> +#include "openbmc-flash-layout.dtsi"
> +       };
> +};
> +
> +&spi1 {
> +        status = "okay";
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&pinctrl_spi1_default>;
> +        flash@0 {
> +                reg = < 0 >; /* chip select number */
> +                compatible = "jedec,spi-nor";

You do not need these two properties, as they are inherited from those
in aspeed-g5.dtsi. Remove these two lines please.

> +                status = "okay";
> +        };
> +};
> +
> +&spi2 {
> +        compatible = "aspeed,ast2500-spi-generic";
> +        reg = <0x1e631000 0xc4 0x38000000 0x02000000>;
> +        interrupts = <59>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;

This looks to be a custom driver, As discussed above, please do not
include this until we have merged the device tree bindings and driver.

> +        status = "okay";
> +        spi2@0 {
> +                reg = < 0 >;
> +                compatible = "centriq,centriq2400-spi-hwmon";
> +                spi-max-frequency = <16000000>;
> +                status = "okay";
> +        };
> +};
> +
> +&uart3 {
> +        status = "okay";
> +
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&pinctrl_txd3_default
> +                     &pinctrl_rxd3_default>;
> +        current-speed = <115200>;
> +};
> +
> +&lpc_ctrl {

Do you use /dev/aspeed-lpc-ctrl from userspace in your system? If not,
you do not want to enable the lpc_ctrl node.

> +       status = "okay";
> +       memory-region = <&flash_memory>;
> +       flash = <&spi1>;
> +};
> +
> +&uart5 {
> +       status = "okay";
> +};
> +
> +&mac0 {
> +       status = "okay";
> +
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>; };

The closing } should be on the next line.

> +
> +&i2c0 {
> +       status = "okay";
> +
> +       pca9542@70 {
> +                compatible = "pca9542";
> +                reg = <0x70>;
> +               i2c@0 {

Your whitespace is messed up here. Please use tabs to align the nodes.

> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       reg = <0>;
> +                       pca9546@77 {
> +                               compatible = "pca9546";
> +                               reg = <0x77>;
> +                               i2c@0 {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +                                       reg = <0>;
> +                                       eeprom@52 {
> +                                               compatible = "atmel,24c02";
> +                                               reg = <0x52>;
> +                                       };
> +                               };
> +                               i2c@2 {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +                                       reg = <2>;
> +                                       eeprom@57 {
> +                                               compatible = "atmel,24c02";
> +                                               reg = <0x57>;
> +                                       };
> +                               };
> +                       };
> +               };
> +               i2c@1 {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       reg = <1>;
> +                       pca9546@77 {
> +                               compatible = "pca9546";
> +                               reg = <0x77>;
> +                               i2c@2 {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +                                       reg = <2>;
> +                                       eeprom@57 {
> +                                               compatible = "atmel,24c02";
> +                                               reg = <0x57>;
> +                                       };
> +                               };
> +                       };
> +               };
> +
> +        };
> +};
> +
> +&i2c1 {
> +       status = "okay";
> +
> +        tmp421@1e {
> +                compatible = "ti,tmp421";
> +                reg = <0x1e>;
> +        };
> +        tmp421@2a {
> +                compatible = "ti,tmp421";
> +                reg = <0x2a>;
> +        };
> +        tmp421@4e {
> +                compatible = "ti,tmp421";
> +                reg = <0x4e>;
> +        };
> +        tmp421@1c {
> +                compatible = "ti,tmp421";
> +                reg = <0x1c>;
> +        };
> +};
> +
> +&i2c2 {
> +       status = "okay";
> +       ssif {
> +                compatible = "ssif-smbus-slave";

Remove this node until we have reviewed the bindings.

> +                reg = <0x42>;
> +        };
> +
> +};
> +
> +&i2c3 {
> +       status = "okay";
> +};
> +
> +&i2c4 {
> +       status = "okay";
> +};
> +
> +&i2c5 {
> +       status = "okay";
> +
> +        ir38163@42 {
> +                compatible = "ir38163";
> +                reg = <0x42>;
> +        };
> +       ir38163@44 {
> +                compatible = "ir38163";
> +                reg = <0x44>;
> +        };
> +       ir38163@46 {
> +                compatible = "ir38163";
> +                reg = <0x46>;
> +        };
> +       ir38163@48 {
> +                compatible = "ir38163";
> +                reg = <0x48>;
> +        };
> +       pxm1310@02 {
> +                compatible = "pxm1310";
> +                reg = <0x02>;
> +        };
> +       pxm1310@04 {
> +                compatible = "pxm1310";
> +                reg = <0x04>;
> +        };
> +};
> +
> +&i2c6 {
> +       status = "okay";
> +
> +       tmp421@1d {
> +                compatible = "ti,tmp421";
> +                reg = <0x1d>;
> +        };
> +        tmp421@1f {
> +                compatible = "ti,tmp421";
> +                reg = <0x1f>;
> +        };
> +        tmp421@4d {
> +                compatible = "ti,tmp421";
> +                reg = <0x4d>;
> +        };
> +        tmp421@4f {
> +                compatible = "ti,tmp421";
> +                reg = <0x4f>;
> +        };
> +        nvt210@4c {
> +                compatible = "nvt210";
> +                reg = <0x4c>;
> +        };
> +        eeprom@50 {
> +                compatible = "atmel,24c128";
> +                reg = <0x50>;
> +                pagesize = <128>;
> +        };
> +};
> +
> +&i2c7 {
> +       status = "okay";
> +
> +        adm1278@10 {
> +                compatible = "adi,adm1278";
> +                reg = <0x10>;
> +               Rsense = <250>;
> +        };
> +        adm1278@11 {
> +                compatible = "adi,adm1278";
> +                reg = <0x11>;
> +               Rsense = <250>;
> +        };
> +};
> +
> +&i2c8 {
> +        status = "okay";
> +
> +        pca9641@70 {
> +                compatible = "nxp,pca9641";
> +                reg = <0x70>;
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +                i2c-arb{
> +                        tmp421@1d {
> +                                compatible = "tmp421";
> +                                reg = <0x1d>;
> +                        };
> +                        adm1278@12 {
> +                                compatible = "adi,adm1278";
> +                                reg = <0x12>;
> +                               Rsense = <500>;
> +                        };
> +                        max31790@20 {
> +                                compatible = "max31790";
> +                                reg = <0x20>;
> +                                #address-cells = <1>;
> +                                #size-cells = <0>;
> +                               fan-mode = "pwm";

Whitespace problems here too.

> +                                fanconfig1 = <0x08>;
> +                                fanconfig2 = <0x09>;
> +                                fanconfig3 = <0x08>;
> +                                fanconfig4 = <0x08>;
> +                                fanconfig5 = <0x09>;
> +                                fanconfig6 = <0x08>;
> +                        };
> +                       max31790@23 {
> +                                compatible = "max31790";
> +                                reg = <0x23>;
> +                                #address-cells = <2>;
> +                               #size-cells = <0>;
> +                               fan-mode = "pwm";
> +                                fanconfig1 = <0x08>;
> +                                fanconfig2 = <0x09>;
> +                                fanconfig3 = <0x08>;
> +                                fanconfig4 = <0x08>;
> +                                fanconfig5 = <0x09>;
> +                                fanconfig6 = <0x08>;
> +                        };
> +                       eeprom@50 {
> +                               compatible = "atmel,24c02";
> +                               reg = <0x50>;
> +                       };
> +                        ds1100@58 {
> +                                compatible = "ds1100";
> +                                reg = <0x58>;
> +                        };
> +               };
> +       };
> +};
> +
> +&i2c9 {
> +       status = "okay";
> +};
> +
> +&vuart {
> +       status = "okay";
> +};
> +
> +&gfx {
> +        status = "okay";
> +};
> +
> +&pinctrl {
> +       aspeed,external-nodes = <&gfx &lhc>;
> +};
> diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c index 5965bbf..4f6a5e9 100644
> --- a/arch/arm/mach-aspeed/aspeed.c
> +++ b/arch/arm/mach-aspeed/aspeed.c
> @@ -29,6 +29,7 @@
>  #define AST_BASE_MAC0          0X1E660000 /* MAC 1 */
>  #define AST_BASE_SCU           0x1E6E2000 /* System Control Unit (SCU) */
>  #define AST_BASE_GPIO          0x1E780000 /* GPIO Controller */
> +#define AST_BASE_WDT           0x1E785000 /* Watchdog Timer */
>
>  static struct map_desc aspeed_io_desc[] __initdata __maybe_unused = {
>         {
> @@ -232,6 +233,25 @@ static void __init do_mellanox_setup(void)
>         writel(reg, AST_IO(AST_BASE_SCU | 0x48));  }
>
> +
> +static void __init do_centriq2400rep_setup(void) {
> +       u32 reg;
> +
> +       do_common_setup();
> +       writel(0x00000010, AST_IO(AST_BASE_WDT | 0x2c));
> +
> +       writel(0xff000000, AST_IO(AST_BASE_SCU | 0x88));
> +
> +       /* Set GPIOC7 to output high to init host spi driver */
> +       reg = readl(AST_IO(AST_BASE_GPIO | 0x04)) | BIT(23);
> +       writel(reg, AST_IO(AST_BASE_GPIO | 0x04));
> +
> +       reg = readl(AST_IO(AST_BASE_GPIO)) | BIT(23);
> +       writel(reg, AST_IO(AST_BASE_GPIO)); }
> +
> +
>  #define SCU_PASSWORD   0x1688A8A8
>
>  static void __init aspeed_init_early(void) @@ -284,6 +304,8 @@ static void __init aspeed_init_early(void)
>                 do_lanyang_setup();
>         if (of_machine_is_compatible("mellanox,msn-bmc"))
>                 do_mellanox_setup();
> +        if (of_machine_is_compatible("qualcomm,centriq2400-rep-bmc"))
> +                do_centriq2400rep_setup();
>  }
>
>  static void __init aspeed_map_io(void)
> --
> 2.9.3
>
Ken Chen Feb. 8, 2018, 5:27 a.m. | #3
2018-02-06 13:46 GMT+08:00 Joel Stanley <joel@jms.id.au>:
> On Tue, Feb 6, 2018 at 3:45 PM, Chen.KenYY 陳永營 TAO
> <Chen.KenYY@inventec.com> wrote:
>> Should I remove the device hasn't the driver yet?
>
> Yes please. If we don't have bindings to review against (documents
> inside Documentation/devicetree/bindings) then it's hard to know if
> the device tree is correct. Please remove any of the nodes that don't
> have bindings in the openbmc tree.
>
OK, it will be changed.
>
>>
>>
>> -----Original Message-----
>> From: Chen.KenYY 陳永營 TAO
>> Sent: Monday, February 05, 2018 11:04 AM
>> To: openbmc@lists.ozlabs.org
>> Cc: Chen.KenYY 陳永營 TAO; joel@jms.id.au
>> Subject: [PATCH linux dev-4.10 v2] ARM: dts: aspeed: Add ARM system BMC device tree
>
> Can you please target your patch at the dev-4.13 branch?
OK
>
>>
>> Add centriq2400-rep dts and modify platform initial
>>
>> Signed-off-by: Ken Chen <chen.kenyy@inventec.com>
>> ---
>>  .../boot/dts/aspeed-bmc-arm-centriq2400-rep.dts    | 350 +++++++++++++++++++++
>
> You have forgotten to add your device tree to the makefile at
> arch/arm/boot/dts/Makefile
>
> Please look for the other aspeed .dtb rules down the bottom of the file.
OK
>
>>  arch/arm/mach-aspeed/aspeed.c                      |  22 ++
>
> Please include modifications to aspeed.c in a different patch.
Do you mean the next version patch or I need to separate this code and
Makefile with another patch?
>
>>  2 files changed, 372 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
>>
>> diff --git a/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
>> new file mode 100644
>> index 0000000..4094732
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
>> @@ -0,0 +1,350 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/dts-v1/;
>> +
>> +#include "aspeed-g5.dtsi"
>> +#include <dt-bindings/gpio/aspeed-gpio.h>
>> +
>> +/ {
>> +       model = "Qualcomm Centriq 2400  REP AST2520";
>> +       compatible = "qualcomm,centriq2400-rep-bmc", "aspeed,ast2500";
>> +
>> +       chosen {
>> +               stdout-path = &uart5;
>> +               bootargs = "console=ttyS4,115200 earlyprintk";
>> +       };
>> +
>> +       memory {
>> +               reg = <0x80000000 0x40000000>;
>> +       };
>> +
>> +       iio-hwmon {
>> +               compatible = "iio-hwmon";
>> +               io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
>> +                        <&adc 4>, <&adc 5>, <&adc 6>, <&adc 8>;
>> +       };
>> +
>> +       iio-hwmon-battery {
>> +               compatible = "iio-hwmon";
>> +               io-channels = <&adc 7>;
>> +       };
>> +
>> +       leds {
>> +               compatible = "gpio-leds";
>> +
>> +               uid_led {
>> +                       label = "UID_LED";
>> +                       gpios = <&gpio ASPEED_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
>> +               };
>> +
>> +               ras_error_led {
>> +                       label = "RAS_ERROR_LED";
>> +                       gpios = <&gpio ASPEED_GPIO(F, 6) GPIO_ACTIVE_LOW>;
>> +               };
>> +
>> +               system_fault {
>> +                       label = "System_fault";
>> +                       gpios = <&gpio ASPEED_GPIO(A, 1) GPIO_ACTIVE_LOW>;
>> +               };
>> +       };
>> +};
>> +
>> +&fmc {
>> +       status = "okay";
>> +       flash@0 {
>> +               status = "okay";
>> +               m25p,fast-read;
>> +                lable = "bmc";
>
> typo: label.
OK
>
>> +#include "openbmc-flash-layout.dtsi"
>> +       };
>> +};
>> +
>> +&spi1 {
>> +        status = "okay";
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pinctrl_spi1_default>;
>> +        flash@0 {
>> +                reg = < 0 >; /* chip select number */
>> +                compatible = "jedec,spi-nor";
>
> You do not need these two properties, as they are inherited from those
> in aspeed-g5.dtsi. Remove these two lines please.
OK
>
>> +                status = "okay";
>> +        };
>> +};
>> +
>> +&spi2 {
>> +        compatible = "aspeed,ast2500-spi-generic";
>> +        reg = <0x1e631000 0xc4 0x38000000 0x02000000>;
>> +        interrupts = <59>;
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>
> This looks to be a custom driver, As discussed above, please do not
> include this until we have merged the device tree bindings and driver.
OK
>
>> +        status = "okay";
>> +        spi2@0 {
>> +                reg = < 0 >;
>> +                compatible = "centriq,centriq2400-spi-hwmon";
>> +                spi-max-frequency = <16000000>;
>> +                status = "okay";
>> +        };
>> +};
>> +
>> +&uart3 {
>> +        status = "okay";
>> +
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pinctrl_txd3_default
>> +                     &pinctrl_rxd3_default>;
>> +        current-speed = <115200>;
>> +};
>> +
>> +&lpc_ctrl {
>
> Do you use /dev/aspeed-lpc-ctrl from userspace in your system? If not,
> you do not want to enable the lpc_ctrl node.
OK
>
>> +       status = "okay";
>> +       memory-region = <&flash_memory>;
>> +       flash = <&spi1>;
>> +};
>> +
>> +&uart5 {
>> +       status = "okay";
>> +};
>> +
>> +&mac0 {
>> +       status = "okay";
>> +
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>; };
>
> The closing } should be on the next line.
OK
>
>> +
>> +&i2c0 {
>> +       status = "okay";
>> +
>> +       pca9542@70 {
>> +                compatible = "pca9542";
>> +                reg = <0x70>;
>> +               i2c@0 {
>
> Your whitespace is messed up here. Please use tabs to align the nodes.
OK
>
>> +                       #address-cells = <1>;
>> +                       #size-cells = <0>;
>> +                       reg = <0>;
>> +                       pca9546@77 {
>> +                               compatible = "pca9546";
>> +                               reg = <0x77>;
>> +                               i2c@0 {
>> +                                       #address-cells = <1>;
>> +                                       #size-cells = <0>;
>> +                                       reg = <0>;
>> +                                       eeprom@52 {
>> +                                               compatible = "atmel,24c02";
>> +                                               reg = <0x52>;
>> +                                       };
>> +                               };
>> +                               i2c@2 {
>> +                                       #address-cells = <1>;
>> +                                       #size-cells = <0>;
>> +                                       reg = <2>;
>> +                                       eeprom@57 {
>> +                                               compatible = "atmel,24c02";
>> +                                               reg = <0x57>;
>> +                                       };
>> +                               };
>> +                       };
>> +               };
>> +               i2c@1 {
>> +                       #address-cells = <1>;
>> +                       #size-cells = <0>;
>> +                       reg = <1>;
>> +                       pca9546@77 {
>> +                               compatible = "pca9546";
>> +                               reg = <0x77>;
>> +                               i2c@2 {
>> +                                       #address-cells = <1>;
>> +                                       #size-cells = <0>;
>> +                                       reg = <2>;
>> +                                       eeprom@57 {
>> +                                               compatible = "atmel,24c02";
>> +                                               reg = <0x57>;
>> +                                       };
>> +                               };
>> +                       };
>> +               };
>> +
>> +        };
>> +};
>> +
>> +&i2c1 {
>> +       status = "okay";
>> +
>> +        tmp421@1e {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x1e>;
>> +        };
>> +        tmp421@2a {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x2a>;
>> +        };
>> +        tmp421@4e {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x4e>;
>> +        };
>> +        tmp421@1c {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x1c>;
>> +        };
>> +};
>> +
>> +&i2c2 {
>> +       status = "okay";
>> +       ssif {
>> +                compatible = "ssif-smbus-slave";
>
> Remove this node until we have reviewed the bindings.
OK
>
>> +                reg = <0x42>;
>> +        };
>> +
>> +};
>> +
>> +&i2c3 {
>> +       status = "okay";
>> +};
>> +
>> +&i2c4 {
>> +       status = "okay";
>> +};
>> +
>> +&i2c5 {
>> +       status = "okay";
>> +
>> +        ir38163@42 {
>> +                compatible = "ir38163";
>> +                reg = <0x42>;
>> +        };
>> +       ir38163@44 {
>> +                compatible = "ir38163";
>> +                reg = <0x44>;
>> +        };
>> +       ir38163@46 {
>> +                compatible = "ir38163";
>> +                reg = <0x46>;
>> +        };
>> +       ir38163@48 {
>> +                compatible = "ir38163";
>> +                reg = <0x48>;
>> +        };
>> +       pxm1310@02 {
>> +                compatible = "pxm1310";
>> +                reg = <0x02>;
>> +        };
>> +       pxm1310@04 {
>> +                compatible = "pxm1310";
>> +                reg = <0x04>;
>> +        };
>> +};
>> +
>> +&i2c6 {
>> +       status = "okay";
>> +
>> +       tmp421@1d {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x1d>;
>> +        };
>> +        tmp421@1f {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x1f>;
>> +        };
>> +        tmp421@4d {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x4d>;
>> +        };
>> +        tmp421@4f {
>> +                compatible = "ti,tmp421";
>> +                reg = <0x4f>;
>> +        };
>> +        nvt210@4c {
>> +                compatible = "nvt210";
>> +                reg = <0x4c>;
>> +        };
>> +        eeprom@50 {
>> +                compatible = "atmel,24c128";
>> +                reg = <0x50>;
>> +                pagesize = <128>;
>> +        };
>> +};
>> +
>> +&i2c7 {
>> +       status = "okay";
>> +
>> +        adm1278@10 {
>> +                compatible = "adi,adm1278";
>> +                reg = <0x10>;
>> +               Rsense = <250>;
>> +        };
>> +        adm1278@11 {
>> +                compatible = "adi,adm1278";
>> +                reg = <0x11>;
>> +               Rsense = <250>;
>> +        };
>> +};
>> +
>> +&i2c8 {
>> +        status = "okay";
>> +
>> +        pca9641@70 {
>> +                compatible = "nxp,pca9641";
>> +                reg = <0x70>;
>> +                #address-cells = <1>;
>> +                #size-cells = <0>;
>> +                i2c-arb{
>> +                        tmp421@1d {
>> +                                compatible = "tmp421";
>> +                                reg = <0x1d>;
>> +                        };
>> +                        adm1278@12 {
>> +                                compatible = "adi,adm1278";
>> +                                reg = <0x12>;
>> +                               Rsense = <500>;
>> +                        };
>> +                        max31790@20 {
>> +                                compatible = "max31790";
>> +                                reg = <0x20>;
>> +                                #address-cells = <1>;
>> +                                #size-cells = <0>;
>> +                               fan-mode = "pwm";
>
> Whitespace problems here too.
OK
>
>> +                                fanconfig1 = <0x08>;
>> +                                fanconfig2 = <0x09>;
>> +                                fanconfig3 = <0x08>;
>> +                                fanconfig4 = <0x08>;
>> +                                fanconfig5 = <0x09>;
>> +                                fanconfig6 = <0x08>;
>> +                        };
>> +                       max31790@23 {
>> +                                compatible = "max31790";
>> +                                reg = <0x23>;
>> +                                #address-cells = <2>;
>> +                               #size-cells = <0>;
>> +                               fan-mode = "pwm";
>> +                                fanconfig1 = <0x08>;
>> +                                fanconfig2 = <0x09>;
>> +                                fanconfig3 = <0x08>;
>> +                                fanconfig4 = <0x08>;
>> +                                fanconfig5 = <0x09>;
>> +                                fanconfig6 = <0x08>;
>> +                        };
>> +                       eeprom@50 {
>> +                               compatible = "atmel,24c02";
>> +                               reg = <0x50>;
>> +                       };
>> +                        ds1100@58 {
>> +                                compatible = "ds1100";
>> +                                reg = <0x58>;
>> +                        };
>> +               };
>> +       };
>> +};
>> +
>> +&i2c9 {
>> +       status = "okay";
>> +};
>> +
>> +&vuart {
>> +       status = "okay";
>> +};
>> +
>> +&gfx {
>> +        status = "okay";
>> +};
>> +
>> +&pinctrl {
>> +       aspeed,external-nodes = <&gfx &lhc>;
>> +};
>> diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c index 5965bbf..4f6a5e9 100644
>> --- a/arch/arm/mach-aspeed/aspeed.c
>> +++ b/arch/arm/mach-aspeed/aspeed.c
>> @@ -29,6 +29,7 @@
>>  #define AST_BASE_MAC0          0X1E660000 /* MAC 1 */
>>  #define AST_BASE_SCU           0x1E6E2000 /* System Control Unit (SCU) */
>>  #define AST_BASE_GPIO          0x1E780000 /* GPIO Controller */
>> +#define AST_BASE_WDT           0x1E785000 /* Watchdog Timer */
>>
>>  static struct map_desc aspeed_io_desc[] __initdata __maybe_unused = {
>>         {
>> @@ -232,6 +233,25 @@ static void __init do_mellanox_setup(void)
>>         writel(reg, AST_IO(AST_BASE_SCU | 0x48));  }
>>
>> +
>> +static void __init do_centriq2400rep_setup(void) {
>> +       u32 reg;
>> +
>> +       do_common_setup();
>> +       writel(0x00000010, AST_IO(AST_BASE_WDT | 0x2c));
>> +
>> +       writel(0xff000000, AST_IO(AST_BASE_SCU | 0x88));
>> +
>> +       /* Set GPIOC7 to output high to init host spi driver */
>> +       reg = readl(AST_IO(AST_BASE_GPIO | 0x04)) | BIT(23);
>> +       writel(reg, AST_IO(AST_BASE_GPIO | 0x04));
>> +
>> +       reg = readl(AST_IO(AST_BASE_GPIO)) | BIT(23);
>> +       writel(reg, AST_IO(AST_BASE_GPIO)); }
>> +
>> +
>>  #define SCU_PASSWORD   0x1688A8A8
>>
>>  static void __init aspeed_init_early(void) @@ -284,6 +304,8 @@ static void __init aspeed_init_early(void)
>>                 do_lanyang_setup();
>>         if (of_machine_is_compatible("mellanox,msn-bmc"))
>>                 do_mellanox_setup();
>> +        if (of_machine_is_compatible("qualcomm,centriq2400-rep-bmc"))
>> +                do_centriq2400rep_setup();
>>  }
>>
>>  static void __init aspeed_map_io(void)
>> --
>> 2.9.3
>>

Patch

diff --git a/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
new file mode 100644
index 0000000..4094732
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dts
@@ -0,0 +1,350 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g5.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+	model = "Qualcomm Centriq 2400  REP AST2520";
+	compatible = "qualcomm,centriq2400-rep-bmc", "aspeed,ast2500";
+
+	chosen {
+		stdout-path = &uart5;
+		bootargs = "console=ttyS4,115200 earlyprintk";
+	};
+
+	memory {
+		reg = <0x80000000 0x40000000>;
+	};
+
+	iio-hwmon {
+		compatible = "iio-hwmon";
+		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
+                        <&adc 4>, <&adc 5>, <&adc 6>, <&adc 8>;
+	};
+
+	iio-hwmon-battery {
+		compatible = "iio-hwmon";
+		io-channels = <&adc 7>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		uid_led {
+			label = "UID_LED";
+			gpios = <&gpio ASPEED_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
+		};
+
+		ras_error_led {
+			label = "RAS_ERROR_LED";
+			gpios = <&gpio ASPEED_GPIO(F, 6) GPIO_ACTIVE_LOW>;
+		};
+
+		system_fault {
+			label = "System_fault";
+			gpios = <&gpio ASPEED_GPIO(A, 1) GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&fmc {
+	status = "okay";
+	flash@0 {
+		status = "okay";
+		m25p,fast-read;
+                lable = "bmc";
+#include "openbmc-flash-layout.dtsi"
+	};
+};
+
+&spi1 {
+        status = "okay";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_spi1_default>;
+        flash@0 {
+                reg = < 0 >; /* chip select number */
+                compatible = "jedec,spi-nor";
+                status = "okay";
+        };
+};
+
+&spi2 {
+        compatible = "aspeed,ast2500-spi-generic";
+        reg = <0x1e631000 0xc4 0x38000000 0x02000000>;
+        interrupts = <59>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        status = "okay";
+        spi2@0 {
+                reg = < 0 >;
+                compatible = "centriq,centriq2400-spi-hwmon";
+                spi-max-frequency = <16000000>;
+                status = "okay";
+        };
+};
+
+&uart3 {
+        status = "okay";
+
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_txd3_default
+                     &pinctrl_rxd3_default>;
+        current-speed = <115200>;
+};
+
+&lpc_ctrl {
+	status = "okay";
+	memory-region = <&flash_memory>;
+	flash = <&spi1>;
+};
+
+&uart5 {
+	status = "okay";
+};
+
+&mac0 {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>;
+};
+
+&i2c0 {
+	status = "okay";
+
+	pca9542@70 {
+                compatible = "pca9542";
+                reg = <0x70>;
+		i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+			pca9546@77 {
+				compatible = "pca9546";
+				reg = <0x77>;
+				i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+					eeprom@52 {
+						compatible = "atmel,24c02";
+						reg = <0x52>;
+					};
+				};
+				i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+					eeprom@57 {
+						compatible = "atmel,24c02";
+						reg = <0x57>;
+					};
+				};
+			};
+		};
+		i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+			pca9546@77 {
+				compatible = "pca9546";
+				reg = <0x77>;
+				i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+					eeprom@57 {
+						compatible = "atmel,24c02";
+						reg = <0x57>;
+					};
+				};
+			};
+		};
+
+        };
+};
+
+&i2c1 {
+	status = "okay";
+
+        tmp421@1e {
+                compatible = "ti,tmp421";
+                reg = <0x1e>;
+        };
+        tmp421@2a {
+                compatible = "ti,tmp421";
+                reg = <0x2a>;
+        };
+        tmp421@4e {
+                compatible = "ti,tmp421";
+                reg = <0x4e>;
+        };
+        tmp421@1c {
+                compatible = "ti,tmp421";
+                reg = <0x1c>;
+        };
+};
+
+&i2c2 {
+	status = "okay";
+	ssif {
+                compatible = "ssif-smbus-slave";
+                reg = <0x42>;
+        };
+
+};
+
+&i2c3 {
+	status = "okay";
+};
+
+&i2c4 {
+	status = "okay";
+};
+
+&i2c5 {
+	status = "okay";
+
+        ir38163@42 {
+                compatible = "ir38163";
+                reg = <0x42>;
+        };
+	ir38163@44 {
+                compatible = "ir38163";
+                reg = <0x44>;
+        };
+	ir38163@46 {
+                compatible = "ir38163";
+                reg = <0x46>;
+        };
+	ir38163@48 {
+                compatible = "ir38163";
+                reg = <0x48>;
+        };
+	pxm1310@02 {
+                compatible = "pxm1310";
+                reg = <0x02>;
+        };
+	pxm1310@04 {
+                compatible = "pxm1310";
+                reg = <0x04>;
+        };
+};
+
+&i2c6 {
+	status = "okay";
+
+	tmp421@1d {
+                compatible = "ti,tmp421";
+                reg = <0x1d>;
+        };
+        tmp421@1f {
+                compatible = "ti,tmp421";
+                reg = <0x1f>;
+        };
+        tmp421@4d {
+                compatible = "ti,tmp421";
+                reg = <0x4d>;
+        };
+        tmp421@4f {
+                compatible = "ti,tmp421";
+                reg = <0x4f>;
+        };
+        nvt210@4c {
+                compatible = "nvt210";
+                reg = <0x4c>;
+        };
+        eeprom@50 {
+                compatible = "atmel,24c128";
+                reg = <0x50>;
+                pagesize = <128>;
+        };
+};
+
+&i2c7 {
+	status = "okay";
+
+        adm1278@10 {
+                compatible = "adi,adm1278";
+                reg = <0x10>;
+		Rsense = <250>;
+        };
+        adm1278@11 {
+                compatible = "adi,adm1278";
+                reg = <0x11>;
+		Rsense = <250>;
+        };
+};
+
+&i2c8 {
+        status = "okay";
+	
+        pca9641@70 {
+                compatible = "nxp,pca9641";
+                reg = <0x70>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+                i2c-arb{
+                        tmp421@1d {
+                                compatible = "tmp421";
+                                reg = <0x1d>;
+                        };
+                        adm1278@12 {
+                                compatible = "adi,adm1278";
+                                reg = <0x12>;
+				Rsense = <500>;
+                        };
+                        max31790@20 {
+                                compatible = "max31790";
+                                reg = <0x20>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+				fan-mode = "pwm";
+                                fanconfig1 = <0x08>;
+                                fanconfig2 = <0x09>;
+                                fanconfig3 = <0x08>;
+                                fanconfig4 = <0x08>;
+                                fanconfig5 = <0x09>;
+                                fanconfig6 = <0x08>;
+                        };
+	                max31790@23 {
+                                compatible = "max31790";
+                                reg = <0x23>;
+                                #address-cells = <2>;
+				#size-cells = <0>;
+				fan-mode = "pwm";
+                                fanconfig1 = <0x08>;
+                                fanconfig2 = <0x09>;
+                                fanconfig3 = <0x08>;
+                                fanconfig4 = <0x08>;
+                                fanconfig5 = <0x09>;
+                                fanconfig6 = <0x08>;
+                        };
+			eeprom@50 {
+				compatible = "atmel,24c02";
+				reg = <0x50>;
+			};
+                        ds1100@58 {
+                                compatible = "ds1100";
+                                reg = <0x58>;
+                        };
+               };
+	};
+};
+
+&i2c9 {
+	status = "okay";
+};
+
+&vuart {
+	status = "okay";
+};
+
+&gfx {
+        status = "okay";
+};
+
+&pinctrl {
+	aspeed,external-nodes = <&gfx &lhc>;
+};
diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c
index 5965bbf..4f6a5e9 100644
--- a/arch/arm/mach-aspeed/aspeed.c
+++ b/arch/arm/mach-aspeed/aspeed.c
@@ -29,6 +29,7 @@ 
 #define AST_BASE_MAC0		0X1E660000 /* MAC 1 */
 #define AST_BASE_SCU		0x1E6E2000 /* System Control Unit (SCU) */
 #define AST_BASE_GPIO		0x1E780000 /* GPIO Controller */
+#define AST_BASE_WDT		0x1E785000 /* Watchdog Timer */
 
 static struct map_desc aspeed_io_desc[] __initdata __maybe_unused = {
 	{
@@ -232,6 +233,25 @@  static void __init do_mellanox_setup(void)
 	writel(reg, AST_IO(AST_BASE_SCU | 0x48));
 }
 
+
+static void __init do_centriq2400rep_setup(void)
+{
+       u32 reg;
+
+       do_common_setup();
+       writel(0x00000010, AST_IO(AST_BASE_WDT | 0x2c));
+
+       writel(0xff000000, AST_IO(AST_BASE_SCU | 0x88));
+
+       /* Set GPIOC7 to output high to init host spi driver */
+       reg = readl(AST_IO(AST_BASE_GPIO | 0x04)) | BIT(23);
+       writel(reg, AST_IO(AST_BASE_GPIO | 0x04));
+
+       reg = readl(AST_IO(AST_BASE_GPIO)) | BIT(23);
+       writel(reg, AST_IO(AST_BASE_GPIO));
+}
+
+
 #define SCU_PASSWORD	0x1688A8A8
 
 static void __init aspeed_init_early(void)
@@ -284,6 +304,8 @@  static void __init aspeed_init_early(void)
 		do_lanyang_setup();
 	if (of_machine_is_compatible("mellanox,msn-bmc"))
 		do_mellanox_setup();
+        if (of_machine_is_compatible("qualcomm,centriq2400-rep-bmc"))
+                do_centriq2400rep_setup();
 }
 
 static void __init aspeed_map_io(void)