diff mbox series

[6/6] ARM: dts: aspeed: Add Facebook Fuji (AST2600) BMC

Message ID 20210728233755.17963-7-rentao.bupt@gmail.com
State Superseded
Headers show
Series ARM: dts: Add Facebook AST2600 BMCs | expand

Commit Message

Tao Ren July 28, 2021, 11:37 p.m. UTC
From: Tao Ren <rentao.bupt@gmail.com>

Add initial version of device tree for Facebook Fuji (AST2600) BMC.

Signed-off-by: Tao Ren <rentao.bupt@gmail.com>
---
 arch/arm/boot/dts/Makefile                    |    1 +
 .../arm/boot/dts/aspeed-bmc-facebook-fuji.dts | 1276 +++++++++++++++++
 2 files changed, 1277 insertions(+)
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts

Comments

Joel Stanley Aug. 5, 2021, 12:28 a.m. UTC | #1
On Wed, 28 Jul 2021 at 23:38, <rentao.bupt@gmail.com> wrote:
>

> From: Tao Ren <rentao.bupt@gmail.com>

>

> Add initial version of device tree for Facebook Fuji (AST2600) BMC.


I like to read what kind of platform the BMC is going into if you can
add that detail, but it's not essential.

> +&spi1 {

> +       status = "okay";

> +

> +       /*

> +        * Customize spi1 flash memory size to 32MB (maximum flash size on

> +        * the bus) to save vmalloc space.

> +        */

> +       reg = < 0x1e630000 0xc4

> +               0x30000000 0x2000000 >;


Which driver supports this?

It would be great to see Facebook work to get the SPI NOR driver for
the ast2600 merged to mainline.

I doubt the IBM team will get to this, as we are using eMMC instead.

> +

> +       flash@0 {

> +               status = "okay";

> +               m25p,fast-read;

> +               label = "spi1.0";

> +               spi-max-frequency = <5000000>;

> +

> +               partitions {

> +                       compatible = "fixed-partitions";

> +                       #address-cells = <1>;

> +                       #size-cells = <1>;

> +

> +                       flash1@0 {

> +                               reg = <0x0 0x2000000>;

> +                               label = "system-flash";

> +                       };

> +               };

> +       };

> +};


> +&ehci1 {

> +       status = "okay";

> +};


Have you verified that USB works with mainline? I've had reports of it
working on 5.8 but it seems to have regressed as of v5.10.


> +&mdio1 {

> +       status = "okay";

> +

> +       ethphy3: ethernet-phy@13 {

> +               compatible = "ethernet-phy-ieee802.3-c22";

> +               reg = <0x0d>;

> +       };

> +};

> +

> +&mac3 {

> +       phy-handle = <&ethphy3>;


status = okay?

You should specify the pinmux too I think, even if the default happens
to work, so that other devices cannot claim the pins.

Cheers,

Joel
Tao Ren Aug. 5, 2021, 1:19 a.m. UTC | #2
On Thu, Aug 05, 2021 at 12:28:02AM +0000, Joel Stanley wrote:
> On Wed, 28 Jul 2021 at 23:38, <rentao.bupt@gmail.com> wrote:

> >

> > From: Tao Ren <rentao.bupt@gmail.com>

> >

> > Add initial version of device tree for Facebook Fuji (AST2600) BMC.

> 

> I like to read what kind of platform the BMC is going into if you can

> add that detail, but it's not essential.


Sure. I will add more details in v2.
 
> > +&spi1 {

> > +       status = "okay";

> > +

> > +       /*

> > +        * Customize spi1 flash memory size to 32MB (maximum flash size on

> > +        * the bus) to save vmalloc space.

> > +        */

> > +       reg = < 0x1e630000 0xc4

> > +               0x30000000 0x2000000 >;

> 

> Which driver supports this?

> 

> It would be great to see Facebook work to get the SPI NOR driver for

> the ast2600 merged to mainline.

> 

> I doubt the IBM team will get to this, as we are using eMMC instead.


Ah, I just checked aspeed-g6.dtsi (ast2600-spi) in mainline and I thought
the driver patches were also upstreamed. Let me remove the entry for now,
and will add it back when the driver is ready.

> 

> > +

> > +       flash@0 {

> > +               status = "okay";

> > +               m25p,fast-read;

> > +               label = "spi1.0";

> > +               spi-max-frequency = <5000000>;

> > +

> > +               partitions {

> > +                       compatible = "fixed-partitions";

> > +                       #address-cells = <1>;

> > +                       #size-cells = <1>;

> > +

> > +                       flash1@0 {

> > +                               reg = <0x0 0x2000000>;

> > +                               label = "system-flash";

> > +                       };

> > +               };

> > +       };

> > +};

> 

> > +&ehci1 {

> > +       status = "okay";

> > +};

> 

> Have you verified that USB works with mainline? I've had reports of it

> working on 5.8 but it seems to have regressed as of v5.10.


It stopped working on ASPEED since commit 280a9045bb18 ("ehci: fix EHCI
host controller initialization sequence"): ehci_handshake() returns
error because HCHalted bit EHCI24[12] stays at 1.

I have a dirty hack in my tree (ignoring the halt bit) and it "works" on
AST2500 and AST2600. Let me send an email to openbmc and aspeed email
groups to see if anyone has more context.

Meanwhile, should I delete the entry until the fix is ready in driver?
 
> > +&mdio1 {

> > +       status = "okay";

> > +

> > +       ethphy3: ethernet-phy@13 {

> > +               compatible = "ethernet-phy-ieee802.3-c22";

> > +               reg = <0x0d>;

> > +       };

> > +};

> > +

> > +&mac3 {

> > +       phy-handle = <&ethphy3>;

> 

> status = okay?

> 

> You should specify the pinmux too I think, even if the default happens

> to work, so that other devices cannot claim the pins.


status is set in ast2600 common dtsi, but let me set it here to avoid
confusion. Will update pinmux in v2. Thanks.

> 

> Cheers,

> 

> Joel


Cheers,

Tao
Joel Stanley Aug. 5, 2021, 1:37 a.m. UTC | #3
On Thu, 5 Aug 2021 at 01:20, Tao Ren <rentao.bupt@gmail.com> wrote:
>

> On Thu, Aug 05, 2021 at 12:28:02AM +0000, Joel Stanley wrote:

> > On Wed, 28 Jul 2021 at 23:38, <rentao.bupt@gmail.com> wrote:

> > >

> > > From: Tao Ren <rentao.bupt@gmail.com>

> > >

> > > Add initial version of device tree for Facebook Fuji (AST2600) BMC.

> >

> > I like to read what kind of platform the BMC is going into if you can

> > add that detail, but it's not essential.

>

> Sure. I will add more details in v2.

>

> > > +&spi1 {

> > > +       status = "okay";

> > > +

> > > +       /*

> > > +        * Customize spi1 flash memory size to 32MB (maximum flash size on

> > > +        * the bus) to save vmalloc space.

> > > +        */

> > > +       reg = < 0x1e630000 0xc4

> > > +               0x30000000 0x2000000 >;

> >

> > Which driver supports this?

> >

> > It would be great to see Facebook work to get the SPI NOR driver for

> > the ast2600 merged to mainline.

> >

> > I doubt the IBM team will get to this, as we are using eMMC instead.

>

> Ah, I just checked aspeed-g6.dtsi (ast2600-spi) in mainline and I thought

> the driver patches were also upstreamed. Let me remove the entry for now,

> and will add it back when the driver is ready.


If it helps you, I don't mind it staying in your dts. I would like to
see some effort on the driver though.

>

> >

> > > +

> > > +       flash@0 {

> > > +               status = "okay";

> > > +               m25p,fast-read;

> > > +               label = "spi1.0";

> > > +               spi-max-frequency = <5000000>;

> > > +

> > > +               partitions {

> > > +                       compatible = "fixed-partitions";

> > > +                       #address-cells = <1>;

> > > +                       #size-cells = <1>;

> > > +

> > > +                       flash1@0 {

> > > +                               reg = <0x0 0x2000000>;

> > > +                               label = "system-flash";

> > > +                       };

> > > +               };

> > > +       };

> > > +};

> >

> > > +&ehci1 {

> > > +       status = "okay";

> > > +};

> >

> > Have you verified that USB works with mainline? I've had reports of it

> > working on 5.8 but it seems to have regressed as of v5.10.

>

> It stopped working on ASPEED since commit 280a9045bb18 ("ehci: fix EHCI

> host controller initialization sequence"): ehci_handshake() returns

> error because HCHalted bit EHCI24[12] stays at 1.

>

> I have a dirty hack in my tree (ignoring the halt bit) and it "works" on

> AST2500 and AST2600. Let me send an email to openbmc and aspeed email

> groups to see if anyone has more context.


We discovered the same, except in my testing it wasn't actually
"working" on my EVB. I have a A3 EVB on my desk and when plugging in a
USB key nothing happened.

>

> Meanwhile, should I delete the entry until the fix is ready in driver?


Again, leave it in I think.

>

> > > +&mdio1 {

> > > +       status = "okay";

> > > +

> > > +       ethphy3: ethernet-phy@13 {

> > > +               compatible = "ethernet-phy-ieee802.3-c22";

> > > +               reg = <0x0d>;

> > > +       };

> > > +};

> > > +

> > > +&mac3 {

> > > +       phy-handle = <&ethphy3>;

> >

> > status = okay?

> >

> > You should specify the pinmux too I think, even if the default happens

> > to work, so that other devices cannot claim the pins.

>

> status is set in ast2600 common dtsi, but let me set it here to avoid

> confusion. Will update pinmux in v2. Thanks.


Are you looking at mainline? I think it's disabled by default there:

https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/aspeed-g6.dtsi#L246

>

> >

> > Cheers,

> >

> > Joel

>

> Cheers,

>

> Tao
Tao Ren Aug. 5, 2021, 2:09 a.m. UTC | #4
On Thu, Aug 05, 2021 at 01:37:29AM +0000, Joel Stanley wrote:
> On Thu, 5 Aug 2021 at 01:20, Tao Ren <rentao.bupt@gmail.com> wrote:

> >

> > On Thu, Aug 05, 2021 at 12:28:02AM +0000, Joel Stanley wrote:

> > > On Wed, 28 Jul 2021 at 23:38, <rentao.bupt@gmail.com> wrote:

> > > >

> > > > From: Tao Ren <rentao.bupt@gmail.com>

> > > >

> > > > Add initial version of device tree for Facebook Fuji (AST2600) BMC.

> > >

> > > I like to read what kind of platform the BMC is going into if you can

> > > add that detail, but it's not essential.

> >

> > Sure. I will add more details in v2.

> >

> > > > +&spi1 {

> > > > +       status = "okay";

> > > > +

> > > > +       /*

> > > > +        * Customize spi1 flash memory size to 32MB (maximum flash size on

> > > > +        * the bus) to save vmalloc space.

> > > > +        */

> > > > +       reg = < 0x1e630000 0xc4

> > > > +               0x30000000 0x2000000 >;

> > >

> > > Which driver supports this?

> > >

> > > It would be great to see Facebook work to get the SPI NOR driver for

> > > the ast2600 merged to mainline.

> > >

> > > I doubt the IBM team will get to this, as we are using eMMC instead.

> >

> > Ah, I just checked aspeed-g6.dtsi (ast2600-spi) in mainline and I thought

> > the driver patches were also upstreamed. Let me remove the entry for now,

> > and will add it back when the driver is ready.

> 

> If it helps you, I don't mind it staying in your dts. I would like to

> see some effort on the driver though.

> 

> >

> > >

> > > > +

> > > > +       flash@0 {

> > > > +               status = "okay";

> > > > +               m25p,fast-read;

> > > > +               label = "spi1.0";

> > > > +               spi-max-frequency = <5000000>;

> > > > +

> > > > +               partitions {

> > > > +                       compatible = "fixed-partitions";

> > > > +                       #address-cells = <1>;

> > > > +                       #size-cells = <1>;

> > > > +

> > > > +                       flash1@0 {

> > > > +                               reg = <0x0 0x2000000>;

> > > > +                               label = "system-flash";

> > > > +                       };

> > > > +               };

> > > > +       };

> > > > +};

> > >

> > > > +&ehci1 {

> > > > +       status = "okay";

> > > > +};

> > >

> > > Have you verified that USB works with mainline? I've had reports of it

> > > working on 5.8 but it seems to have regressed as of v5.10.

> >

> > It stopped working on ASPEED since commit 280a9045bb18 ("ehci: fix EHCI

> > host controller initialization sequence"): ehci_handshake() returns

> > error because HCHalted bit EHCI24[12] stays at 1.

> >

> > I have a dirty hack in my tree (ignoring the halt bit) and it "works" on

> > AST2500 and AST2600. Let me send an email to openbmc and aspeed email

> > groups to see if anyone has more context.

> 

> We discovered the same, except in my testing it wasn't actually

> "working" on my EVB. I have a A3 EVB on my desk and when plugging in a

> USB key nothing happened.


We have a non-removable USB device on Fuji (AST2600) BMC and it can be
enumerated successfully (after applying the hack). Let me vist the lab
and plug a USB key to CMM (AST2500) BMC sometime next week. Will collect
results and send out email then.

> 

> >

> > Meanwhile, should I delete the entry until the fix is ready in driver?

> 

> Again, leave it in I think.

> 

> >

> > > > +&mdio1 {

> > > > +       status = "okay";

> > > > +

> > > > +       ethphy3: ethernet-phy@13 {

> > > > +               compatible = "ethernet-phy-ieee802.3-c22";

> > > > +               reg = <0x0d>;

> > > > +       };

> > > > +};

> > > > +

> > > > +&mac3 {

> > > > +       phy-handle = <&ethphy3>;

> > >

> > > status = okay?

> > >

> > > You should specify the pinmux too I think, even if the default happens

> > > to work, so that other devices cannot claim the pins.

> >

> > status is set in ast2600 common dtsi, but let me set it here to avoid

> > confusion. Will update pinmux in v2. Thanks.

> 

> Are you looking at mainline? I think it's disabled by default there:

> 

> https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/aspeed-g6.dtsi#L246


Sorry for the confusion, Joel. I mean the device is enabled in
"ast2600-facebook-netbmc-common.dtsi" (patch #3 in the series). Do we
still need to set status to "okay" explicitly in platform dts (to avoid
confusion)?

&mac3 {
        status = "okay";
        phy-mode = "rgmii";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rgmii4_default>;
};


> 

> >

> > >

> > > Cheers,

> > >

> > > Joel

> >

> > Cheers,

> >

> > Tao
Joel Stanley Aug. 5, 2021, 2:17 a.m. UTC | #5
On Thu, 5 Aug 2021 at 02:09, Tao Ren <rentao.bupt@gmail.com> wrote:
>

> On Thu, Aug 05, 2021 at 01:37:29AM +0000, Joel Stanley wrote:

> > On Thu, 5 Aug 2021 at 01:20, Tao Ren <rentao.bupt@gmail.com> wrote:

> > > > > +&ehci1 {

> > > > > +       status = "okay";

> > > > > +};

> > > >

> > > > Have you verified that USB works with mainline? I've had reports of it

> > > > working on 5.8 but it seems to have regressed as of v5.10.

> > >

> > > It stopped working on ASPEED since commit 280a9045bb18 ("ehci: fix EHCI

> > > host controller initialization sequence"): ehci_handshake() returns

> > > error because HCHalted bit EHCI24[12] stays at 1.

> > >

> > > I have a dirty hack in my tree (ignoring the halt bit) and it "works" on

> > > AST2500 and AST2600. Let me send an email to openbmc and aspeed email

> > > groups to see if anyone has more context.

> >

> > We discovered the same, except in my testing it wasn't actually

> > "working" on my EVB. I have a A3 EVB on my desk and when plugging in a

> > USB key nothing happened.

>

> We have a non-removable USB device on Fuji (AST2600) BMC and it can be

> enumerated successfully (after applying the hack). Let me vist the lab

> and plug a USB key to CMM (AST2500) BMC sometime next week. Will collect

> results and send out email then.


Thanks!

> > > status is set in ast2600 common dtsi, but let me set it here to avoid

> > > confusion. Will update pinmux in v2. Thanks.

> >

> > Are you looking at mainline? I think it's disabled by default there:

> >

> > https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/aspeed-g6.dtsi#L246

>

> Sorry for the confusion, Joel. I mean the device is enabled in

> "ast2600-facebook-netbmc-common.dtsi" (patch #3 in the series). Do we

> still need to set status to "okay" explicitly in platform dts (to avoid

> confusion)?


I see, thanks for explaining. It's a downside of the device tree
bindings for the ethernet device.

Given you will be the one working with the board, I think it's up to
you how you lay it out. You could choose to add a comment to the
platform dts, or put the hunk you currently have in the common.dtsi in
the platform.

>

> &mac3 {

>         status = "okay";

>         phy-mode = "rgmii";

>         pinctrl-names = "default";

>         pinctrl-0 = <&pinctrl_rgmii4_default>;

> };
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 7cbb982a7c8b..9765e2ff5bfe 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1412,6 +1412,7 @@  dtb-$(CONFIG_ARCH_ASPEED) += \
 	aspeed-bmc-facebook-cloudripper.dtb \
 	aspeed-bmc-facebook-cmm.dtb \
 	aspeed-bmc-facebook-elbert.dtb \
+	aspeed-bmc-facebook-fuji.dtb \
 	aspeed-bmc-facebook-galaxy100.dtb \
 	aspeed-bmc-facebook-minipack.dtb \
 	aspeed-bmc-facebook-tiogapass.dtb \
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts
new file mode 100644
index 000000000000..382cbbcf908d
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts
@@ -0,0 +1,1276 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "ast2600-facebook-netbmc-common.dtsi"
+
+/ {
+	model = "Facebook Fuji BMC";
+	compatible = "facebook,fuji-bmc", "aspeed,ast2600";
+
+	aliases {
+		/*
+		 * PCA9548 (2-0070) provides 8 channels connecting to
+		 * SCM (System Controller Module).
+		 */
+		i2c16 = &imux16;
+		i2c17 = &imux17;
+		i2c18 = &imux18;
+		i2c19 = &imux19;
+		i2c20 = &imux20;
+		i2c21 = &imux21;
+		i2c22 = &imux22;
+		i2c23 = &imux23;
+
+		/*
+		 * PCA9548 (8-0070) provides 8 channels connecting to
+		 * SMB (Switch Main Board).
+		 */
+		i2c24 = &imux24;
+		i2c25 = &imux25;
+		i2c26 = &imux26;
+		i2c27 = &imux27;
+		i2c28 = &imux28;
+		i2c29 = &imux29;
+		i2c30 = &imux30;
+		i2c31 = &imux31;
+
+		/*
+		 * PCA9548 (11-0077) provides 8 channels connecting to
+		 * SMB (Switch Main Board).
+		 */
+		i2c40 = &imux40;
+		i2c41 = &imux41;
+		i2c42 = &imux42;
+		i2c43 = &imux43;
+		i2c44 = &imux44;
+		i2c45 = &imux45;
+		i2c46 = &imux46;
+		i2c47 = &imux47;
+
+		/*
+		 * PCA9548 (24-0071) provides 8 channels connecting to
+		 * PDB-Left.
+		 */
+		i2c48 = &imux48;
+		i2c49 = &imux49;
+		i2c50 = &imux50;
+		i2c51 = &imux51;
+		i2c52 = &imux52;
+		i2c53 = &imux53;
+		i2c54 = &imux54;
+		i2c55 = &imux55;
+
+		/*
+		 * PCA9548 (25-0072) provides 8 channels connecting to
+		 * PDB-Right.
+		 */
+		i2c56 = &imux56;
+		i2c57 = &imux57;
+		i2c58 = &imux58;
+		i2c59 = &imux59;
+		i2c60 = &imux60;
+		i2c61 = &imux61;
+		i2c62 = &imux62;
+		i2c63 = &imux63;
+
+		/*
+		 * PCA9548 (26-0076) provides 8 channels connecting to
+		 * FCM1.
+		 */
+		i2c64 = &imux64;
+		i2c65 = &imux65;
+		i2c66 = &imux66;
+		i2c67 = &imux67;
+		i2c68 = &imux68;
+		i2c69 = &imux69;
+		i2c70 = &imux70;
+		i2c71 = &imux71;
+
+		/*
+		 * PCA9548 (27-0076) provides 8 channels connecting to
+		 * FCM2.
+		 */
+		i2c72 = &imux72;
+		i2c73 = &imux73;
+		i2c74 = &imux74;
+		i2c75 = &imux75;
+		i2c76 = &imux76;
+		i2c77 = &imux77;
+		i2c78 = &imux78;
+		i2c79 = &imux79;
+
+		/*
+		 * PCA9548 (40-0076) provides 8 channels connecting to
+		 * PIM1.
+		 */
+		i2c80 = &imux80;
+		i2c81 = &imux81;
+		i2c82 = &imux82;
+		i2c83 = &imux83;
+		i2c84 = &imux84;
+		i2c85 = &imux85;
+		i2c86 = &imux86;
+		i2c87 = &imux87;
+
+		/*
+		 * PCA9548 (41-0076) provides 8 channels connecting to
+		 * PIM2.
+		 */
+		i2c88 = &imux88;
+		i2c89 = &imux89;
+		i2c90 = &imux90;
+		i2c91 = &imux91;
+		i2c92 = &imux92;
+		i2c93 = &imux93;
+		i2c94 = &imux94;
+		i2c95 = &imux95;
+
+		/*
+		 * PCA9548 (42-0076) provides 8 channels connecting to
+		 * PIM3.
+		 */
+		i2c96 = &imux96;
+		i2c97 = &imux97;
+		i2c98 = &imux98;
+		i2c99 = &imux99;
+		i2c100 = &imux100;
+		i2c101 = &imux101;
+		i2c102 = &imux102;
+		i2c103 = &imux103;
+
+		/*
+		 * PCA9548 (43-0076) provides 8 channels connecting to
+		 * PIM4.
+		 */
+		i2c104 = &imux104;
+		i2c105 = &imux105;
+		i2c106 = &imux106;
+		i2c107 = &imux107;
+		i2c108 = &imux108;
+		i2c109 = &imux109;
+		i2c110 = &imux110;
+		i2c111 = &imux111;
+
+		/*
+		 * PCA9548 (44-0076) provides 8 channels connecting to
+		 * PIM5.
+		 */
+		i2c112 = &imux112;
+		i2c113 = &imux113;
+		i2c114 = &imux114;
+		i2c115 = &imux115;
+		i2c116 = &imux116;
+		i2c117 = &imux117;
+		i2c118 = &imux118;
+		i2c119 = &imux119;
+
+		/*
+		 * PCA9548 (45-0076) provides 8 channels connecting to
+		 * PIM6.
+		 */
+		i2c120 = &imux120;
+		i2c121 = &imux121;
+		i2c122 = &imux122;
+		i2c123 = &imux123;
+		i2c124 = &imux124;
+		i2c125 = &imux125;
+		i2c126 = &imux126;
+		i2c127 = &imux127;
+
+		/*
+		 * PCA9548 (46-0076) provides 8 channels connecting to
+		 * PIM7.
+		 */
+		i2c128 = &imux128;
+		i2c129 = &imux129;
+		i2c130 = &imux130;
+		i2c131 = &imux131;
+		i2c132 = &imux132;
+		i2c133 = &imux133;
+		i2c134 = &imux134;
+		i2c135 = &imux135;
+
+		/*
+		 * PCA9548 (47-0076) provides 8 channels connecting to
+		 * PIM8.
+		 */
+		i2c136 = &imux136;
+		i2c137 = &imux137;
+		i2c138 = &imux138;
+		i2c139 = &imux139;
+		i2c140 = &imux140;
+		i2c141 = &imux141;
+		i2c142 = &imux142;
+		i2c143 = &imux143;
+	};
+
+	spi_gpio: spi-gpio {
+		num-chipselects = <3>;
+		cs-gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>,
+			   <0>,	/* device reg=<1> does not exist */
+			   <&gpio0 ASPEED_GPIO(X, 2) GPIO_ACTIVE_HIGH>;
+
+		eeprom@2 {
+			compatible = "atmel,at93c46d";
+			spi-max-frequency = <250000>;
+			data-size = <16>;
+			spi-cs-high;
+			reg = <2>;
+		};
+	};
+};
+
+&spi1 {
+	status = "okay";
+
+	/*
+	 * Customize spi1 flash memory size to 32MB (maximum flash size on
+	 * the bus) to save vmalloc space.
+	 */
+	reg = < 0x1e630000 0xc4
+		0x30000000 0x2000000 >;
+
+	flash@0 {
+		status = "okay";
+		m25p,fast-read;
+		label = "spi1.0";
+		spi-max-frequency = <5000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			flash1@0 {
+				reg = <0x0 0x2000000>;
+				label = "system-flash";
+			};
+		};
+	};
+};
+
+&i2c0 {
+	multi-master;
+	bus-frequency = <1000000>;
+};
+
+&i2c2 {
+	/*
+	 * PCA9548 (2-0070) provides 8 channels connecting to SCM (System
+	 * Controller Module).
+	 */
+	i2c-switch@70 {
+		compatible = "nxp,pca9548";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x70>;
+		i2c-mux-idle-disconnect;
+
+		imux16: i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			adm1278@10 {
+				compatible = "adi,adm1278";
+				reg = <0x10>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				shunt-resistor-micro-ohms = <1500>;
+			};
+		};
+
+		imux17: i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+		};
+
+		imux18: i2c@2 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <2>;
+		};
+
+		imux19: i2c@3 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <3>;
+		};
+
+		imux20: i2c@4 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <4>;
+		};
+
+		imux21: i2c@5 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <5>;
+		};
+
+		imux22: i2c@6 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <6>;
+		};
+
+		imux23: i2c@7 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <7>;
+		};
+	};
+};
+
+&i2c8 {
+	/*
+	 * PCA9548 (8-0070) provides 8 channels connecting to SMB (Switch
+	 * Main Board).
+	 */
+	i2c-switch@70 {
+		compatible = "nxp,pca9548";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x70>;
+		i2c-mux-idle-disconnect;
+
+		imux24: i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			i2c-switch@71 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x71>;
+				i2c-mux-idle-disconnect;
+
+				imux48: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux49: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux50: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+
+					lp5012@14 {
+						compatible = "ti,lp5012";
+						reg = <0x14>;
+						#address-cells = <1>;
+						#size-cells = <0>;
+
+						multi-led@0 {
+							#address-cells = <1>;
+							#size-cells = <0>;
+							reg = <0>;
+							color = <LED_COLOR_ID_MULTI>;
+							function = LED_FUNCTION_ACTIVITY;
+							label = "sys";
+
+							led@0 {
+								reg = <0>;
+								color = <LED_COLOR_ID_RED>;
+							};
+
+							led@1 {
+								reg = <1>;
+								color = <LED_COLOR_ID_BLUE>;
+							};
+
+							led@2 {
+								reg = <2>;
+								color = <LED_COLOR_ID_GREEN>;
+							};
+						};
+
+						multi-led@1 {
+							#address-cells = <1>;
+							#size-cells = <0>;
+							reg = <1>;
+							color = <LED_COLOR_ID_MULTI>;
+							function = LED_FUNCTION_ACTIVITY;
+							label = "fan";
+
+							led@0 {
+								reg = <0>;
+								color = <LED_COLOR_ID_RED>;
+							};
+
+							led@1 {
+								reg = <1>;
+								color = <LED_COLOR_ID_BLUE>;
+							};
+
+							led@2 {
+								reg = <2>;
+								color = <LED_COLOR_ID_GREEN>;
+							};
+						};
+
+						multi-led@2 {
+							#address-cells = <1>;
+							#size-cells = <0>;
+							reg = <2>;
+							color = <LED_COLOR_ID_MULTI>;
+							function = LED_FUNCTION_ACTIVITY;
+							label = "psu";
+
+							led@0 {
+								reg = <0>;
+								color = <LED_COLOR_ID_RED>;
+							};
+
+							led@1 {
+								reg = <1>;
+								color = <LED_COLOR_ID_BLUE>;
+							};
+
+							led@2 {
+								reg = <2>;
+								color = <LED_COLOR_ID_GREEN>;
+							};
+						};
+
+						multi-led@3 {
+							#address-cells = <1>;
+							#size-cells = <0>;
+							reg = <3>;
+							color = <LED_COLOR_ID_MULTI>;
+							function = LED_FUNCTION_ACTIVITY;
+							label = "smb";
+
+							led@0 {
+								reg = <0>;
+								color = <LED_COLOR_ID_RED>;
+							};
+
+							led@1 {
+								reg = <1>;
+								color = <LED_COLOR_ID_BLUE>;
+							};
+
+							led@2 {
+								reg = <2>;
+								color = <LED_COLOR_ID_GREEN>;
+							};
+						};
+					};
+				};
+
+				imux51: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux52: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux53: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux54: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux55: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux25: i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+
+			i2c-switch@72 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x72>;
+				i2c-mux-idle-disconnect;
+
+				imux56: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux57: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux58: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux59: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux60: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux61: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux62: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux63: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux26: i2c@2 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <2>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux64: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux65: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux66: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux67: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+
+					adm1278@10 {
+						compatible = "adi,adm1278";
+						reg = <0x10>;
+						#address-cells = <1>;
+						#size-cells = <0>;
+						shunt-resistor-micro-ohms = <250>;
+					};
+				};
+
+				imux68: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux69: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux70: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux71: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux27: i2c@3 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <3>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux72: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux73: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux74: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux75: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+
+					adm1278@10 {
+						compatible = "adi,adm1278";
+						reg = <0x10>;
+						#address-cells = <1>;
+						#size-cells = <0>;
+						shunt-resistor-micro-ohms = <250>;
+					};
+				};
+
+				imux76: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux77: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux78: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux79: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux28: i2c@4 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <4>;
+		};
+
+		imux29: i2c@5 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <5>;
+		};
+
+		imux30: i2c@6 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <6>;
+		};
+
+		imux31: i2c@7 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <7>;
+		};
+
+	};
+};
+
+&i2c11 {
+	status = "okay";
+
+	/*
+	 * PCA9548 (11-0077) provides 8 channels connecting to SMB (Switch
+	 * Main Board).
+	 */
+	i2c-switch@77 {
+		compatible = "nxp,pca9548";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0x77>;
+		i2c-mux-idle-disconnect;
+
+		imux40: i2c@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux80: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux81: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux82: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux83: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux84: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux85: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux86: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux87: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux41: i2c@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <1>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux88: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux89: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux90: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux91: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux92: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux93: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux94: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux95: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux42: i2c@2 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <2>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux96: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux97: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux98: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux99: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux100: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux101: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux102: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux103: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux43: i2c@3 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <3>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux104: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux105: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux106: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux107: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux108: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux109: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux110: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux111: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux44: i2c@4 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <4>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux112: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux113: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux114: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux115: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux116: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux117: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux118: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux119: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux45: i2c@5 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <5>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux120: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux121: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux122: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux123: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux124: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux125: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux126: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux127: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux46: i2c@6 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <6>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux128: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux129: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux130: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux131: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux132: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux133: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux134: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux135: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+		imux47: i2c@7 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <7>;
+
+			i2c-switch@76 {
+				compatible = "nxp,pca9548";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x76>;
+				i2c-mux-idle-disconnect;
+
+				imux136: i2c@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <0>;
+				};
+
+				imux137: i2c@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <1>;
+				};
+
+				imux138: i2c@2 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <2>;
+				};
+
+				imux139: i2c@3 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <3>;
+				};
+
+				imux140: i2c@4 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <4>;
+				};
+
+				imux141: i2c@5 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <5>;
+				};
+
+				imux142: i2c@6 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <6>;
+				};
+
+				imux143: i2c@7 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					reg = <7>;
+				};
+			};
+
+		};
+
+	};
+};
+
+&ehci1 {
+	status = "okay";
+};
+
+&mdio1 {
+	status = "okay";
+
+	ethphy3: ethernet-phy@13 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x0d>;
+	};
+};
+
+&mac3 {
+	phy-handle = <&ethphy3>;
+};