diff mbox series

[v2,3/4] arm64: dts: ti: Add support for Siemens IOT2050 boards

Message ID 0c64b6ad43e7a691c1547524da4a9fd33e61c70c.1613071976.git.jan.kiszka@siemens.com
State Superseded
Headers show
Series None | expand

Commit Message

Jan Kiszka Feb. 11, 2021, 7:32 p.m. UTC
From: Jan Kiszka <jan.kiszka@siemens.com>

Add support for two Siemens SIMATIC IOT2050 variants, Basic and
Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus
differ in their number of cores and availability of security features.
Furthermore the Advanced version comes with more RAM, an eMMC and a few
internal differences.

Based on original version by Le Jin.

Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
Link: https://github.com/siemens/meta-iot2050
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 arch/arm64/boot/dts/ti/Makefile               |   2 +
 .../boot/dts/ti/k3-am65-iot2050-common.dtsi   | 679 ++++++++++++++++++
 .../boot/dts/ti/k3-am6528-iot2050-basic.dts   |  61 ++
 .../dts/ti/k3-am6548-iot2050-advanced.dts     |  60 ++
 4 files changed, 802 insertions(+)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts

Comments

Vignesh Raghavendra March 4, 2021, 6:58 a.m. UTC | #1
Hi,

On 2/12/21 1:02 AM, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>

> 

> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

> differ in their number of cores and availability of security features.

> Furthermore the Advanced version comes with more RAM, an eMMC and a few

> internal differences.

> 

> Based on original version by Le Jin.

> 

> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

> Link: https://github.com/siemens/meta-iot2050

> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>


Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>


Few minor comments below:

[...]

> +

> +&mcu_i2c0 {

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&mcu_i2c0_pins_default>;

> +	clock-frequency = <400000>;

> +

> +	psu: tps62363@60 {


Please use generic node names:

	psu: regulator@60 { ... };

> +		compatible = "ti,tps62363";

> +		reg =  <0x60>;

> +		regulator-name = "tps62363-vout";

> +		regulator-min-microvolt = <500000>;

> +		regulator-max-microvolt = <1500000>;

> +		regulator-boot-on;

> +		ti,vsel0-state-high;

> +		ti,vsel1-state-high;

> +		ti,enable-vout-discharge;

> +	};

> +

> +	/* D4200 */

> +	pcal9535_1: gpio@20 {

> +		compatible = "nxp,pcal9535";

> +		reg = <0x20>;

> +		#gpio-cells = <2>;

> +		gpio-controller;

> +		gpio-line-names =

> +			"A0-pull", "A1-pull", "A2-pull", "A3-pull", "A4-pull",

> +			"A5-pull", "", "",

> +			"IO14-enable", "IO15-enable", "IO16-enable",

> +			"IO17-enable", "IO18-enable", "IO19-enable";

> +	};

> +

> +	/* D4201 */

> +	pcal9535_2: gpio@21 {

> +		compatible = "nxp,pcal9535";

> +		reg = <0x21>;

> +		#gpio-cells = <2>;

> +		gpio-controller;

> +		gpio-line-names =

> +			"IO0-direction", "IO1-direction", "IO2-direction",

> +			"IO3-direction", "IO4-direction", "IO5-direction",

> +			"IO6-direction", "IO7-direction",

> +			"IO8-direction", "IO9-direction", "IO10-direction",

> +			"IO11-direction", "IO12-direction", "IO13-direction",

> +			"IO19-direction";

> +	};

> +

> +	/* D4202 */

> +	pcal9535_3: gpio@25 {

> +		compatible = "nxp,pcal9535";

> +		reg = <0x25>;

> +		#gpio-cells = <2>;

> +		gpio-controller;

> +		gpio-line-names =

> +			"IO0-pull", "IO1-pull", "IO2-pull", "IO3-pull",

> +			"IO4-pull", "IO5-pull", "IO6-pull", "IO7-pull",

> +			"IO8-pull", "IO9-pull", "IO10-pull", "IO11-pull",

> +			"IO12-pull", "IO13-pull";

> +	};

> +};


[...]

> +&dwc3_0 {

> +	status = "okay";

> +};

> +

> +&usb0_phy {

> +	status = "okay";

> +};

> +


These nodes are enabled by default right? Above is redundant.

> +&usb0 {

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&usb0_pins_default>;

> +	dr_mode = "host";

> +};

> +

> +&dwc3_1 {

> +	status = "okay";

> +};

> +

> +&usb1_phy {

> +	status = "okay";

> +};

> +


Same here...

> +&usb1 {

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&usb1_pins_default>;

> +	dr_mode = "host";

> +};

> +


[...]

> +&mcu_spi0 {

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&mcu_spi0_pins_default>;

> +

> +	#address-cells = <1>;

> +	#size-cells= <0>;

> +	ti,pindir-d0-out-d1-in = <1>;

> +

> +	spidev@0 {

> +		compatible = "rohm,dh2228fv";

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

> +		reg = <0>;

> +	};


Is the device really dh2228fv?

> +};

> +

> +&tscadc0 {

> +	status = "disabled";

> +};

> +

> +&tscadc1 {

> +	adc {

> +		ti,adc-channels = <0 1 2 3 4 5>;

> +	};

> +};

> +

> +&ospi0 {

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;

> +

> +	flash@0 {

> +		compatible = "jedec,spi-nor";

> +		reg = <0x0>;

> +		spi-tx-bus-width = <1>;

> +		spi-rx-bus-width = <1>;

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

> +		cdns,tshsl-ns = <60>;

> +		cdns,tsd2d-ns = <60>;

> +		cdns,tchsh-ns = <60>;

> +		cdns,tslch-ns = <60>;

> +		cdns,read-delay = <2>;

> +		#address-cells = <1>;

> +		#size-cells = <1>;

> +	};

> +};

> +

> +&dss {

> +	status = "okay";

> +


Node is enabled by default. Please drop above line for consistency.

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&dss_vout1_pins_default>;

> +

> +	assigned-clocks = <&k3_clks 67 2>;

> +	assigned-clock-parents = <&k3_clks 67 5>;

> +};

> +

> +&dss_ports {

> +	#address-cells = <1>;

> +	#size-cells = <0>;

> +	port@1 {

> +		reg = <1>;

> +

> +		dpi_out: endpoint {

> +			remote-endpoint = <&bridge_in>;

> +		};

> +	};

> +};

> +


[...]

Regards
Vignesh
Jan Kiszka March 9, 2021, 7:18 a.m. UTC | #2
On 04.03.21 07:58, Vignesh Raghavendra wrote:
> Hi,

> 

> On 2/12/21 1:02 AM, Jan Kiszka wrote:

>> From: Jan Kiszka <jan.kiszka@siemens.com>

>>

>> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

>> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

>> differ in their number of cores and availability of security features.

>> Furthermore the Advanced version comes with more RAM, an eMMC and a few

>> internal differences.

>>

>> Based on original version by Le Jin.

>>

>> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

>> Link: https://github.com/siemens/meta-iot2050

>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

> 

> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

> 


Thanks!

> Few minor comments below:

> 

> [...]

> 

>> +

>> +&mcu_i2c0 {

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&mcu_i2c0_pins_default>;

>> +	clock-frequency = <400000>;

>> +

>> +	psu: tps62363@60 {

> 

> Please use generic node names:

> 

> 	psu: regulator@60 { ... };

> 


Done.

>> +		compatible = "ti,tps62363";

>> +		reg =  <0x60>;

>> +		regulator-name = "tps62363-vout";

>> +		regulator-min-microvolt = <500000>;

>> +		regulator-max-microvolt = <1500000>;

>> +		regulator-boot-on;

>> +		ti,vsel0-state-high;

>> +		ti,vsel1-state-high;

>> +		ti,enable-vout-discharge;

>> +	};

>> +

>> +	/* D4200 */

>> +	pcal9535_1: gpio@20 {

>> +		compatible = "nxp,pcal9535";

>> +		reg = <0x20>;

>> +		#gpio-cells = <2>;

>> +		gpio-controller;

>> +		gpio-line-names =

>> +			"A0-pull", "A1-pull", "A2-pull", "A3-pull", "A4-pull",

>> +			"A5-pull", "", "",

>> +			"IO14-enable", "IO15-enable", "IO16-enable",

>> +			"IO17-enable", "IO18-enable", "IO19-enable";

>> +	};

>> +

>> +	/* D4201 */

>> +	pcal9535_2: gpio@21 {

>> +		compatible = "nxp,pcal9535";

>> +		reg = <0x21>;

>> +		#gpio-cells = <2>;

>> +		gpio-controller;

>> +		gpio-line-names =

>> +			"IO0-direction", "IO1-direction", "IO2-direction",

>> +			"IO3-direction", "IO4-direction", "IO5-direction",

>> +			"IO6-direction", "IO7-direction",

>> +			"IO8-direction", "IO9-direction", "IO10-direction",

>> +			"IO11-direction", "IO12-direction", "IO13-direction",

>> +			"IO19-direction";

>> +	};

>> +

>> +	/* D4202 */

>> +	pcal9535_3: gpio@25 {

>> +		compatible = "nxp,pcal9535";

>> +		reg = <0x25>;

>> +		#gpio-cells = <2>;

>> +		gpio-controller;

>> +		gpio-line-names =

>> +			"IO0-pull", "IO1-pull", "IO2-pull", "IO3-pull",

>> +			"IO4-pull", "IO5-pull", "IO6-pull", "IO7-pull",

>> +			"IO8-pull", "IO9-pull", "IO10-pull", "IO11-pull",

>> +			"IO12-pull", "IO13-pull";

>> +	};

>> +};

> 

> [...]

> 

>> +&dwc3_0 {

>> +	status = "okay";

>> +};

>> +

>> +&usb0_phy {

>> +	status = "okay";

>> +};

>> +

> 

> These nodes are enabled by default right? Above is redundant.


Seems like historic left-overs here - fixed.

> 

>> +&usb0 {

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&usb0_pins_default>;

>> +	dr_mode = "host";

>> +};

>> +

>> +&dwc3_1 {

>> +	status = "okay";

>> +};

>> +

>> +&usb1_phy {

>> +	status = "okay";

>> +};

>> +

> 

> Same here...


Also fixed.

> 

>> +&usb1 {

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&usb1_pins_default>;

>> +	dr_mode = "host";

>> +};

>> +

> 

> [...]

> 

>> +&mcu_spi0 {

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&mcu_spi0_pins_default>;

>> +

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

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

>> +	ti,pindir-d0-out-d1-in = <1>;

>> +

>> +	spidev@0 {

>> +		compatible = "rohm,dh2228fv";

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

>> +		reg = <0>;

>> +	};

> 

> Is the device really dh2228fv?


At least to my understanding, "rohm,dh2228fv" is commonly used for
declaring spidev, and this is what we need for userland here.

> 

>> +};

>> +

>> +&tscadc0 {

>> +	status = "disabled";

>> +};

>> +

>> +&tscadc1 {

>> +	adc {

>> +		ti,adc-channels = <0 1 2 3 4 5>;

>> +	};

>> +};

>> +

>> +&ospi0 {

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;

>> +

>> +	flash@0 {

>> +		compatible = "jedec,spi-nor";

>> +		reg = <0x0>;

>> +		spi-tx-bus-width = <1>;

>> +		spi-rx-bus-width = <1>;

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

>> +		cdns,tshsl-ns = <60>;

>> +		cdns,tsd2d-ns = <60>;

>> +		cdns,tchsh-ns = <60>;

>> +		cdns,tslch-ns = <60>;

>> +		cdns,read-delay = <2>;

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

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

>> +	};

>> +};

>> +

>> +&dss {

>> +	status = "okay";

>> +

> 

> Node is enabled by default. Please drop above line for consistency.


Done.

> 

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&dss_vout1_pins_default>;

>> +

>> +	assigned-clocks = <&k3_clks 67 2>;

>> +	assigned-clock-parents = <&k3_clks 67 5>;

>> +};

>> +

>> +&dss_ports {

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

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

>> +	port@1 {

>> +		reg = <1>;

>> +

>> +		dpi_out: endpoint {

>> +			remote-endpoint = <&bridge_in>;

>> +		};

>> +	};

>> +};

>> +

> 

> [...]

> 

> Regards

> Vignesh

> 


Thanks again, v3 will come after some testing.

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
Nishanth Menon March 9, 2021, 2:41 p.m. UTC | #3
On 09:38-20210309, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>

> 

> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

> differ in their number of cores and availability of security features.

> Furthermore the Advanced version comes with more RAM, an eMMC and a few

> internal differences.

> 

> Based on original version by Le Jin.

> 

> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

> Link: https://github.com/siemens/meta-iot2050

> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>


Jan,

Could you post the full series as V3 please? it works better
that way for b4 workflow for me.

-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D
Nishanth Menon March 9, 2021, 3:10 p.m. UTC | #4
On 09:38-20210309, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>

> 

> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

> differ in their number of cores and availability of security features.

> Furthermore the Advanced version comes with more RAM, an eMMC and a few

> internal differences.

> 

> Based on original version by Le Jin.

> 

> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

> Link: https://github.com/siemens/meta-iot2050

> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

> ---


Jan,

I am not sure if
https://lore.kernel.org/linux-arm-kernel/20210304160712.8452-2-s-anna@ti.com/
is going to impact your platform. I am planning on picking that series up today.
might be good to test against tomorrow's next - running through my basic
tests right now before committing to the ICSS-G nodes being picked up.

If you could repost after testing against tomorrow's next, it will
probably be better.

-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D
Jan Kiszka March 9, 2021, 3:15 p.m. UTC | #5
On 09.03.21 15:41, Nishanth Menon wrote:
> On 09:38-20210309, Jan Kiszka wrote:

>> From: Jan Kiszka <jan.kiszka@siemens.com>

>>

>> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

>> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

>> differ in their number of cores and availability of security features.

>> Furthermore the Advanced version comes with more RAM, an eMMC and a few

>> internal differences.

>>

>> Based on original version by Le Jin.

>>

>> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

>> Link: https://github.com/siemens/meta-iot2050

>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

>> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

> 

> Jan,

> 

> Could you post the full series as V3 please? it works better

> that way for b4 workflow for me.

> 


Sure, give me a minute. All 4 patches then, I assume.

Jan

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
Jan Kiszka March 9, 2021, 3:22 p.m. UTC | #6
On 09.03.21 16:10, Nishanth Menon wrote:
> On 09:38-20210309, Jan Kiszka wrote:

>> From: Jan Kiszka <jan.kiszka@siemens.com>

>>

>> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

>> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

>> differ in their number of cores and availability of security features.

>> Furthermore the Advanced version comes with more RAM, an eMMC and a few

>> internal differences.

>>

>> Based on original version by Le Jin.

>>

>> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

>> Link: https://github.com/siemens/meta-iot2050

>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

>> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

>> ---

> 

> Jan,

> 

> I am not sure if

> https://lore.kernel.org/linux-arm-kernel/20210304160712.8452-2-s-anna@ti.com/

> is going to impact your platform. I am planning on picking that series up today.

> might be good to test against tomorrow's next - running through my basic

> tests right now before committing to the ICSS-G nodes being picked up.

> 

> If you could repost after testing against tomorrow's next, it will

> probably be better.


Thanks, I was already on CC. That series does not affect the board
features as configured in this patch. However, we are eagerly awaiting
ISCCG and then PRU Ethernet support in upstream as this is used on our
boards, with both SR1.0 and (upcoming) SR2.0.

However, I can update [1] with that series and retest our staging
integration. But as you can see from the topmost commit, it is
constantly shaking as upstreaming goes on.

Jan

[1] https://github.com/siemens/linux/commits/jan/iot2050

-- 
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
Nishanth Menon March 9, 2021, 3:38 p.m. UTC | #7
On 16:22-20210309, Jan Kiszka wrote:
> On 09.03.21 16:10, Nishanth Menon wrote:

> > On 09:38-20210309, Jan Kiszka wrote:

> >> From: Jan Kiszka <jan.kiszka@siemens.com>

> >>

> >> Add support for two Siemens SIMATIC IOT2050 variants, Basic and

> >> Advanced. They are based on the TI AM6528 GP and AM6548 SOCs HS, thus

> >> differ in their number of cores and availability of security features.

> >> Furthermore the Advanced version comes with more RAM, an eMMC and a few

> >> internal differences.

> >>

> >> Based on original version by Le Jin.

> >>

> >> Link: https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html

> >> Link: https://github.com/siemens/meta-iot2050

> >> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

> >> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>

> >> ---

> > 

> > Jan,

> > 

> > I am not sure if

> > https://lore.kernel.org/linux-arm-kernel/20210304160712.8452-2-s-anna@ti.com/

> > is going to impact your platform. I am planning on picking that series up today.

> > might be good to test against tomorrow's next - running through my basic

> > tests right now before committing to the ICSS-G nodes being picked up.

> > 

> > If you could repost after testing against tomorrow's next, it will

> > probably be better.

> 

> Thanks, I was already on CC. That series does not affect the board

> features as configured in this patch. However, we are eagerly awaiting

> ISCCG and then PRU Ethernet support in upstream as this is used on our

> boards, with both SR1.0 and (upcoming) SR2.0.


Cool, thanks.

> 

> However, I can update [1] with that series and retest our staging

> integration. But as you can see from the topmost commit, it is

> constantly shaking as upstreaming goes on.


Yep, hopefully things should settle down soon-ish, I hope. Thanks for
the link.

> 

> Jan

> 

> [1] https://github.com/siemens/linux/commits/jan/iot2050

> 

> -- 

> Siemens AG, T RDA IOT

> Corporate Competence Center Embedded Linux


-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index 65506f21ba30..22108491f16e 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -7,6 +7,8 @@ 
 #
 
 dtb-$(CONFIG_ARCH_K3) += k3-am654-base-board.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6528-iot2050-basic.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6548-iot2050-advanced.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-j721e-common-proc-board.dtb
 
diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
new file mode 100644
index 000000000000..28e31c219a33
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
@@ -0,0 +1,679 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszk@siemens.com>
+ *
+ * Common bits of the IOT2050 Basic and Advanced variants
+ */
+
+/dts-v1/;
+
+#include "k3-am654.dtsi"
+#include <dt-bindings/phy/phy.h>
+
+/ {
+	aliases {
+		spi0 = &mcu_spi0;
+	};
+
+	chosen {
+		stdout-path = "serial3:115200n8";
+		bootargs = "earlycon=ns16550a,mmio32,0x02810000";
+	};
+
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		secure_ddr: secure-ddr@9e800000 {
+			reg = <0 0x9e800000 0 0x01800000>; /* for OP-TEE */
+			alignment = <0x1000>;
+			no-map;
+		};
+
+		mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
+			compatible = "shared-dma-pool";
+			reg = <0 0xa0000000 0 0x100000>;
+			no-map;
+		};
+
+		mcu_r5fss0_core0_memory_region: r5f-memory@a0100000 {
+			compatible = "shared-dma-pool";
+			reg = <0 0xa0100000 0 0xf00000>;
+			no-map;
+		};
+
+		mcu_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
+			compatible = "shared-dma-pool";
+			reg = <0 0xa1000000 0 0x100000>;
+			no-map;
+		};
+
+		mcu_r5fss0_core1_memory_region: r5f-memory@a1100000 {
+			compatible = "shared-dma-pool";
+			reg = <0 0xa1100000 0 0xf00000>;
+			no-map;
+		};
+
+		rtos_ipc_memory_region: ipc-memories@a2000000 {
+			reg = <0x00 0xa2000000 0x00 0x00200000>;
+			alignment = <0x1000>;
+			no-map;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&leds_pins_default>;
+
+		status-led-red {
+			gpios = <&wkup_gpio0 32 GPIO_ACTIVE_HIGH>;
+			panic-indicator;
+		};
+
+		status-led-green {
+			gpios = <&wkup_gpio0 24 GPIO_ACTIVE_HIGH>;
+		};
+
+		user-led1-red {
+			gpios = <&pcal9535_3 14 GPIO_ACTIVE_HIGH>;
+		};
+
+		user-led1-green {
+			gpios = <&pcal9535_2 15 GPIO_ACTIVE_HIGH>;
+		};
+
+		user-led2-red {
+			gpios = <&wkup_gpio0 17 GPIO_ACTIVE_HIGH>;
+		};
+
+		user-led2-green {
+			gpios = <&wkup_gpio0 22 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	dp_refclk: clock {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <19200000>;
+	};
+};
+
+&wkup_pmx0 {
+	wkup_i2c0_pins_default: wkup-i2c0-pins-default {
+		pinctrl-single,pins = <
+			/* (AC7) WKUP_I2C0_SCL */
+			AM65X_WKUP_IOPAD(0x00e0, PIN_INPUT,  0)
+			/* (AD6) WKUP_I2C0_SDA */
+			AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT,  0)
+		>;
+	};
+
+	mcu_i2c0_pins_default: mcu-i2c0-pins-default {
+		pinctrl-single,pins = <
+			/* (AD8) MCU_I2C0_SCL */
+			AM65X_WKUP_IOPAD(0x00e8, PIN_INPUT,  0)
+			/* (AD7) MCU_I2C0_SDA */
+			AM65X_WKUP_IOPAD(0x00ec, PIN_INPUT,  0)
+		>;
+	};
+
+	arduino_i2c_aio_switch_pins_default: arduino-i2c-aio-switch-pins-default {
+		pinctrl-single,pins = <
+			/* (R2) WKUP_GPIO0_21 */
+			AM65X_WKUP_IOPAD(0x0024, PIN_OUTPUT, 7)
+		>;
+	};
+
+	push_button_pins_default: push-button-pins-default {
+		pinctrl-single,pins = <
+			/* (T1) MCU_OSPI1_CLK.WKUP_GPIO0_25 */
+			AM65X_WKUP_IOPAD(0x0034, PIN_INPUT,  7)
+		>;
+	};
+
+	arduino_uart_pins_default: arduino-uart-pins-default {
+		pinctrl-single,pins = <
+			/* (P4) MCU_UART0_RXD */
+			AM65X_WKUP_IOPAD(0x0044, PIN_INPUT,  4)
+			/* (P5) MCU_UART0_TXD */
+			AM65X_WKUP_IOPAD(0x0048, PIN_OUTPUT, 4)
+		>;
+	};
+
+	arduino_io_d2_to_d3_pins_default: arduino-io-d2-to-d3-pins-default {
+		pinctrl-single,pins = <
+			/* (P1) WKUP_GPIO0_31 */
+			AM65X_WKUP_IOPAD(0x004C, PIN_OUTPUT, 7)
+			/* (N3) WKUP_GPIO0_33 */
+			AM65X_WKUP_IOPAD(0x0054, PIN_OUTPUT, 7)
+		>;
+	};
+
+	arduino_io_oe_pins_default: arduino-io-oe-pins-default {
+		pinctrl-single,pins = <
+			/* (N4) WKUP_GPIO0_34 */
+			AM65X_WKUP_IOPAD(0x0058, PIN_OUTPUT, 7)
+			/* (M2) WKUP_GPIO0_36 */
+			AM65X_WKUP_IOPAD(0x0060, PIN_OUTPUT, 7)
+			/* (M3) WKUP_GPIO0_37 */
+			AM65X_WKUP_IOPAD(0x0064, PIN_OUTPUT, 7)
+			/* (M4) WKUP_GPIO0_38 */
+			AM65X_WKUP_IOPAD(0x0068, PIN_OUTPUT, 7)
+			/* (M1) WKUP_GPIO0_41 */
+			AM65X_WKUP_IOPAD(0x0074, PIN_OUTPUT, 7)
+		>;
+	};
+
+	mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins-default {
+		pinctrl-single,pins = <
+			/* (V1) MCU_OSPI0_CLK */
+			AM65X_WKUP_IOPAD(0x0000, PIN_OUTPUT, 0)
+			/* (U2) MCU_OSPI0_DQS */
+			AM65X_WKUP_IOPAD(0x0008, PIN_INPUT,  0)
+			/* (U4) MCU_OSPI0_D0 */
+			AM65X_WKUP_IOPAD(0x000c, PIN_INPUT,  0)
+			/* (U5) MCU_OSPI0_D1 */
+			AM65X_WKUP_IOPAD(0x0010, PIN_INPUT,  0)
+			/* (R4) MCU_OSPI0_CSn0 */
+			AM65X_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0)
+		>;
+	};
+
+	db9_com_mode_pins_default: db9-com-mode-pins-default {
+		pinctrl-single,pins = <
+			/* (AD3) WKUP_GPIO0_5, used as uart0 mode 0 */
+			AM65X_WKUP_IOPAD(0x00c4, PIN_OUTPUT, 7)
+			/* (AC3) WKUP_GPIO0_4, used as uart0 mode 1 */
+			AM65X_WKUP_IOPAD(0x00c0, PIN_OUTPUT, 7)
+			/* (AC1) WKUP_GPIO0_7, used as uart0 term */
+			AM65X_WKUP_IOPAD(0x00cc, PIN_OUTPUT, 7)
+			/* (AC2) WKUP_GPIO0_6, used as uart0 en */
+			AM65X_WKUP_IOPAD(0x00c8, PIN_OUTPUT, 7)
+		>;
+	};
+
+	leds_pins_default: leds-pins-default {
+		pinctrl-single,pins = <
+			/* (T2) WKUP_GPIO0_17, used as user led1 red */
+			AM65X_WKUP_IOPAD(0x0014, PIN_OUTPUT, 7)
+			/* (R3) WKUP_GPIO0_22, used as user led1 green */
+			AM65X_WKUP_IOPAD(0x0028, PIN_OUTPUT, 7)
+			/* (R5) WKUP_GPIO0_24, used as status led red */
+			AM65X_WKUP_IOPAD(0x0030, PIN_OUTPUT, 7)
+			/* (N2) WKUP_GPIO0_32, used as status led green */
+			AM65X_WKUP_IOPAD(0x0050, PIN_OUTPUT, 7)
+		>;
+	};
+
+	mcu_spi0_pins_default: mcu-spi0-pins-default {
+		pinctrl-single,pins = <
+			/* (Y1) MCU_SPI0_CLK */
+			AM65X_WKUP_IOPAD(0x0090, PIN_INPUT,  0)
+			/* (Y3) MCU_SPI0_D0 */
+			AM65X_WKUP_IOPAD(0x0094, PIN_INPUT,  0)
+			/* (Y2) MCU_SPI0_D1 */
+			AM65X_WKUP_IOPAD(0x0098, PIN_INPUT,  0)
+			/* (Y4) MCU_SPI0_CS0 */
+			AM65X_WKUP_IOPAD(0x009c, PIN_OUTPUT, 0)
+		>;
+	};
+
+	minipcie_pins_default: minipcie-pins-default {
+		pinctrl-single,pins = <
+			/* (P2) MCU_OSPI1_DQS.WKUP_GPIO0_27 */
+			AM65X_WKUP_IOPAD(0x003C, PIN_OUTPUT, 7)
+		>;
+	};
+};
+
+&main_pmx0 {
+	main_uart1_pins_default: main-uart1-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0174, PIN_INPUT,  6)  /* (AE23) UART1_RXD */
+			AM65X_IOPAD(0x014c, PIN_OUTPUT, 6)  /* (AD23) UART1_TXD */
+			AM65X_IOPAD(0x0178, PIN_INPUT,  6)  /* (AD22) UART1_CTSn */
+			AM65X_IOPAD(0x017c, PIN_OUTPUT, 6)  /* (AC21) UART1_RTSn */
+		>;
+	};
+
+	main_i2c3_pins_default: main-i2c3-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x01c0, PIN_INPUT,  2)  /* (AF13) I2C3_SCL */
+			AM65X_IOPAD(0x01d4, PIN_INPUT,  2)  /* (AG12) I2C3_SDA */
+		>;
+	};
+
+	main_mmc1_pins_default: main-mmc1-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x02d4, PIN_INPUT_PULLDOWN, 0)  /* (C27) MMC1_CLK */
+			AM65X_IOPAD(0x02d8, PIN_INPUT_PULLUP,   0)  /* (C28) MMC1_CMD */
+			AM65X_IOPAD(0x02d0, PIN_INPUT_PULLUP,   0)  /* (D28) MMC1_DAT0 */
+			AM65X_IOPAD(0x02cc, PIN_INPUT_PULLUP,   0)  /* (E27) MMC1_DAT1 */
+			AM65X_IOPAD(0x02c8, PIN_INPUT_PULLUP,   0)  /* (D26) MMC1_DAT2 */
+			AM65X_IOPAD(0x02c4, PIN_INPUT_PULLUP,   0)  /* (D27) MMC1_DAT3 */
+			AM65X_IOPAD(0x02dc, PIN_INPUT_PULLUP,   0)  /* (B24) MMC1_SDCD */
+			AM65X_IOPAD(0x02e0, PIN_INPUT_PULLUP,   0)  /* (C24) MMC1_SDWP */
+		>;
+	};
+
+	usb0_pins_default: usb0-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x02bc, PIN_OUTPUT, 0)  /* (AD9) USB0_DRVVBUS */
+		>;
+	};
+
+	usb1_pins_default: usb1-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x02c0, PIN_OUTPUT, 0)  /* (AC8) USB1_DRVVBUS */
+		>;
+	};
+
+	arduino_io_d4_to_d9_pins_default: arduino-io-d4-to-d9-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0084, PIN_OUTPUT, 7)  /* (AG18) GPIO0_33 */
+			AM65X_IOPAD(0x008C, PIN_OUTPUT, 7)  /* (AF17) GPIO0_35 */
+			AM65X_IOPAD(0x0098, PIN_OUTPUT, 7)  /* (AH16) GPIO0_38 */
+			AM65X_IOPAD(0x00AC, PIN_OUTPUT, 7)  /* (AH15) GPIO0_43 */
+			AM65X_IOPAD(0x00C0, PIN_OUTPUT, 7)  /* (AG15) GPIO0_48 */
+			AM65X_IOPAD(0x00CC, PIN_OUTPUT, 7)  /* (AD15) GPIO0_51 */
+		>;
+	};
+
+	dss_vout1_pins_default: dss-vout1-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0000, PIN_OUTPUT, 1)  /* VOUT1_DATA0 */
+			AM65X_IOPAD(0x0004, PIN_OUTPUT, 1)  /* VOUT1_DATA1 */
+			AM65X_IOPAD(0x0008, PIN_OUTPUT, 1)  /* VOUT1_DATA2 */
+			AM65X_IOPAD(0x000c, PIN_OUTPUT, 1)  /* VOUT1_DATA3 */
+			AM65X_IOPAD(0x0010, PIN_OUTPUT, 1)  /* VOUT1_DATA4 */
+			AM65X_IOPAD(0x0014, PIN_OUTPUT, 1)  /* VOUT1_DATA5 */
+			AM65X_IOPAD(0x0018, PIN_OUTPUT, 1)  /* VOUT1_DATA6 */
+			AM65X_IOPAD(0x001c, PIN_OUTPUT, 1)  /* VOUT1_DATA7 */
+			AM65X_IOPAD(0x0020, PIN_OUTPUT, 1)  /* VOUT1_DATA8 */
+			AM65X_IOPAD(0x0024, PIN_OUTPUT, 1)  /* VOUT1_DATA9 */
+			AM65X_IOPAD(0x0028, PIN_OUTPUT, 1)  /* VOUT1_DATA10 */
+			AM65X_IOPAD(0x002c, PIN_OUTPUT, 1)  /* VOUT1_DATA11 */
+			AM65X_IOPAD(0x0030, PIN_OUTPUT, 1)  /* VOUT1_DATA12 */
+			AM65X_IOPAD(0x0034, PIN_OUTPUT, 1)  /* VOUT1_DATA13 */
+			AM65X_IOPAD(0x0038, PIN_OUTPUT, 1)  /* VOUT1_DATA14 */
+			AM65X_IOPAD(0x003c, PIN_OUTPUT, 1)  /* VOUT1_DATA15 */
+			AM65X_IOPAD(0x0040, PIN_OUTPUT, 1)  /* VOUT1_DATA16 */
+			AM65X_IOPAD(0x0044, PIN_OUTPUT, 1)  /* VOUT1_DATA17 */
+			AM65X_IOPAD(0x0048, PIN_OUTPUT, 1)  /* VOUT1_DATA18 */
+			AM65X_IOPAD(0x004c, PIN_OUTPUT, 1)  /* VOUT1_DATA19 */
+			AM65X_IOPAD(0x0050, PIN_OUTPUT, 1)  /* VOUT1_DATA20 */
+			AM65X_IOPAD(0x0054, PIN_OUTPUT, 1)  /* VOUT1_DATA21 */
+			AM65X_IOPAD(0x0058, PIN_OUTPUT, 1)  /* VOUT1_DATA22 */
+			AM65X_IOPAD(0x005c, PIN_OUTPUT, 1)  /* VOUT1_DATA23 */
+			AM65X_IOPAD(0x0060, PIN_OUTPUT, 1)  /* VOUT1_VSYNC */
+			AM65X_IOPAD(0x0064, PIN_OUTPUT, 1)  /* VOUT1_HSYNC */
+			AM65X_IOPAD(0x0068, PIN_OUTPUT, 1)  /* VOUT1_PCLK */
+			AM65X_IOPAD(0x006c, PIN_OUTPUT, 1)  /* VOUT1_DE */
+		>;
+	};
+
+	dp_pins_default: dp-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0078, PIN_OUTPUT, 7)  /* (AF18) DP rst_n */
+		>;
+	};
+
+	main_i2c2_pins_default: main-i2c2-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0074, PIN_INPUT,  5)  /* (T27) I2C2_SCL */
+			AM65X_IOPAD(0x0070, PIN_INPUT,  5)  /* (R25) I2C2_SDA */
+		>;
+	};
+};
+
+&main_pmx1 {
+	main_i2c0_pins_default: main-i2c0-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0000, PIN_INPUT,  0)  /* (D20) I2C0_SCL */
+			AM65X_IOPAD(0x0004, PIN_INPUT,  0)  /* (C21) I2C0_SDA */
+		>;
+	};
+
+	main_i2c1_pins_default: main-i2c1-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0008, PIN_INPUT,  0)  /* (B21) I2C1_SCL */
+			AM65X_IOPAD(0x000c, PIN_INPUT,  0)  /* (E21) I2C1_SDA */
+		>;
+	};
+
+	ecap0_pins_default: ecap0-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x0010, PIN_INPUT,  0)  /* (D21) ECAP0_IN_APWM_OUT */
+		>;
+	};
+};
+
+&wkup_uart0 {
+	/* Wakeup UART is used by System firmware */
+	status = "reserved";
+};
+
+&main_uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_uart1_pins_default>;
+};
+
+&main_uart2 {
+	status = "disabled";
+};
+
+&mcu_uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&arduino_uart_pins_default>;
+};
+
+&main_gpio0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&arduino_io_d4_to_d9_pins_default>;
+	gpio-line-names =
+		"main_gpio0-base", "", "", "", "", "", "", "", "", "",
+		"", "", "", "", "", "", "", "", "", "",
+		"", "", "", "", "", "", "", "", "", "",
+		"", "", "", "IO4", "", "IO5", "", "", "IO6", "",
+		"", "", "", "IO7", "", "", "", "", "IO8", "",
+		"", "IO9";
+};
+
+&wkup_gpio0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <
+		&arduino_io_d2_to_d3_pins_default
+		&arduino_i2c_aio_switch_pins_default
+		&arduino_io_oe_pins_default
+		&push_button_pins_default
+		&db9_com_mode_pins_default
+	>;
+	gpio-line-names =
+		/* 0..9 */
+		"wkup_gpio0-base", "", "", "", "UART0-mode1", "UART0-mode0",
+		"UART0-enable", "UART0-terminate", "", "WIFI-disable",
+		/* 10..19 */
+		"", "", "", "", "", "", "", "", "", "",
+		/* 20..29 */
+		"", "A4A5-I2C-mux", "", "", "", "USER-button", "", "", "","IO0",
+		/* 30..39 */
+		"IO1", "IO2", "", "IO3", "IO17-direction", "A5",
+		"IO16-direction", "IO15-direction", "IO14-direction", "A3",
+		/* 40..49 */
+		"", "IO18-direction", "A4", "A2", "A1", "A0", "", "", "IO13",
+		"IO11",
+		/* 50..51 */
+		"IO12", "IO10";
+};
+
+&wkup_i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&wkup_i2c0_pins_default>;
+	clock-frequency = <400000>;
+};
+
+&mcu_i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcu_i2c0_pins_default>;
+	clock-frequency = <400000>;
+
+	psu: tps62363@60 {
+		compatible = "ti,tps62363";
+		reg =  <0x60>;
+		regulator-name = "tps62363-vout";
+		regulator-min-microvolt = <500000>;
+		regulator-max-microvolt = <1500000>;
+		regulator-boot-on;
+		ti,vsel0-state-high;
+		ti,vsel1-state-high;
+		ti,enable-vout-discharge;
+	};
+
+	/* D4200 */
+	pcal9535_1: gpio@20 {
+		compatible = "nxp,pcal9535";
+		reg = <0x20>;
+		#gpio-cells = <2>;
+		gpio-controller;
+		gpio-line-names =
+			"A0-pull", "A1-pull", "A2-pull", "A3-pull", "A4-pull",
+			"A5-pull", "", "",
+			"IO14-enable", "IO15-enable", "IO16-enable",
+			"IO17-enable", "IO18-enable", "IO19-enable";
+	};
+
+	/* D4201 */
+	pcal9535_2: gpio@21 {
+		compatible = "nxp,pcal9535";
+		reg = <0x21>;
+		#gpio-cells = <2>;
+		gpio-controller;
+		gpio-line-names =
+			"IO0-direction", "IO1-direction", "IO2-direction",
+			"IO3-direction", "IO4-direction", "IO5-direction",
+			"IO6-direction", "IO7-direction",
+			"IO8-direction", "IO9-direction", "IO10-direction",
+			"IO11-direction", "IO12-direction", "IO13-direction",
+			"IO19-direction";
+	};
+
+	/* D4202 */
+	pcal9535_3: gpio@25 {
+		compatible = "nxp,pcal9535";
+		reg = <0x25>;
+		#gpio-cells = <2>;
+		gpio-controller;
+		gpio-line-names =
+			"IO0-pull", "IO1-pull", "IO2-pull", "IO3-pull",
+			"IO4-pull", "IO5-pull", "IO6-pull", "IO7-pull",
+			"IO8-pull", "IO9-pull", "IO10-pull", "IO11-pull",
+			"IO12-pull", "IO13-pull";
+	};
+};
+
+&main_i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_i2c0_pins_default>;
+	clock-frequency = <400000>;
+
+	rtc: rtc8564@51 {
+		compatible = "nxp,pcf8563";
+		reg = <0x51>;
+	};
+
+	eeprom: eeprom@54 {
+		compatible = "atmel,24c08";
+		reg = <0x54>;
+		pagesize = <16>;
+	};
+};
+
+&main_i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_i2c1_pins_default>;
+	clock-frequency = <400000>;
+};
+
+&main_i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_i2c2_pins_default>;
+	clock-frequency = <400000>;
+};
+
+&main_i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_i2c3_pins_default>;
+	clock-frequency = <400000>;
+
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	edp-bridge@f {
+		compatible = "toshiba,tc358767";
+		reg = <0x0f>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&dp_pins_default>;
+		reset-gpios = <&main_gpio0 30 GPIO_ACTIVE_HIGH>;
+
+		clock-names = "ref";
+		clocks = <&dp_refclk>;
+
+		toshiba,hpd-pin = <0>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@1 {
+				reg = <1>;
+
+				bridge_in: endpoint {
+					remote-endpoint = <&dpi_out>;
+				};
+			};
+		};
+	};
+};
+
+&mcu_cpsw {
+	status = "disabled";
+};
+
+&ecap0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&ecap0_pins_default>;
+};
+
+&sdhci1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_mmc1_pins_default>;
+	ti,driver-strength-ohm = <50>;
+	disable-wp;
+};
+
+&dwc3_0 {
+	status = "okay";
+};
+
+&usb0_phy {
+	status = "okay";
+};
+
+&usb0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&usb0_pins_default>;
+	dr_mode = "host";
+};
+
+&dwc3_1 {
+	status = "okay";
+};
+
+&usb1_phy {
+	status = "okay";
+};
+
+&usb1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&usb1_pins_default>;
+	dr_mode = "host";
+};
+
+&mcu_spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcu_spi0_pins_default>;
+
+	#address-cells = <1>;
+	#size-cells= <0>;
+	ti,pindir-d0-out-d1-in = <1>;
+
+	spidev@0 {
+		compatible = "rohm,dh2228fv";
+		spi-max-frequency = <20000000>;
+		reg = <0>;
+	};
+};
+
+&tscadc0 {
+	status = "disabled";
+};
+
+&tscadc1 {
+	adc {
+		ti,adc-channels = <0 1 2 3 4 5>;
+	};
+};
+
+&ospi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0x0>;
+		spi-tx-bus-width = <1>;
+		spi-rx-bus-width = <1>;
+		spi-max-frequency = <50000000>;
+		cdns,tshsl-ns = <60>;
+		cdns,tsd2d-ns = <60>;
+		cdns,tchsh-ns = <60>;
+		cdns,tslch-ns = <60>;
+		cdns,read-delay = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+};
+
+&dss {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&dss_vout1_pins_default>;
+
+	assigned-clocks = <&k3_clks 67 2>;
+	assigned-clock-parents = <&k3_clks 67 5>;
+};
+
+&dss_ports {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	port@1 {
+		reg = <1>;
+
+		dpi_out: endpoint {
+			remote-endpoint = <&bridge_in>;
+		};
+	};
+};
+
+&serdes0 {
+	status = "disabled";
+};
+
+&pcie0_rc {
+	status = "disabled";
+};
+
+&pcie0_ep {
+	status = "disabled";
+};
+
+&pcie1_rc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&minipcie_pins_default>;
+
+	num-lanes = <1>;
+	phys = <&serdes1 PHY_TYPE_PCIE 0>;
+	phy-names = "pcie-phy0";
+	reset-gpios = <&wkup_gpio0 27 GPIO_ACTIVE_HIGH>;
+};
+
+&pcie1_ep {
+	status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
new file mode 100644
index 000000000000..4f7e3f2a6265
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
@@ -0,0 +1,61 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszk@siemens.com>
+ *
+ * AM6528-based (dual-core) IOT2050 Basic variant
+ * 1 GB RAM, no eMMC, main_uart0 on connector X30
+ */
+
+/dts-v1/;
+
+#include "k3-am65-iot2050-common.dtsi"
+
+/ {
+	compatible = "siemens,iot2050-basic", "ti,am654";
+	model = "SIMATIC IOT2050 Basic";
+
+	memory@80000000 {
+		device_type = "memory";
+		/* 1G RAM */
+		reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
+	};
+
+	cpus {
+		cpu-map {
+			/delete-node/ cluster1;
+		};
+		/delete-node/ cpu@100;
+		/delete-node/ cpu@101;
+	};
+
+	/delete-node/ l2-cache1;
+};
+
+/* eMMC */
+&sdhci0 {
+	status = "disabled";
+};
+
+&main_pmx0 {
+	main_uart0_pins_default: main-uart0-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x01e4, PIN_INPUT,  0)  /* (AF11) UART0_RXD */
+			AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0)  /* (AE11) UART0_TXD */
+			AM65X_IOPAD(0x01ec, PIN_INPUT,  0)  /* (AG11) UART0_CTSn */
+			AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0)  /* (AD11) UART0_RTSn */
+			AM65X_IOPAD(0x0188, PIN_INPUT,  1)  /* (D25) UART0_DCDn */
+			AM65X_IOPAD(0x018c, PIN_INPUT,  1)  /* (B26) UART0_DSRn */
+			AM65X_IOPAD(0x0190, PIN_OUTPUT, 1)  /* (A24) UART0_DTRn */
+			AM65X_IOPAD(0x0194, PIN_INPUT,  1)  /* (E24) UART0_RIN */
+		>;
+	};
+};
+
+&main_uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_uart0_pins_default>;
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
new file mode 100644
index 000000000000..ec9617c13cdb
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
@@ -0,0 +1,60 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszk@siemens.com>
+ *
+ * AM6548-based (quad-core) IOT2050 Advanced variant
+ * 2 GB RAM, 16 GB eMMC, USB-serial converter on connector X30
+ */
+
+/dts-v1/;
+
+#include "k3-am65-iot2050-common.dtsi"
+
+/ {
+	compatible = "siemens,iot2050-advanced", "ti,am654";
+	model = "SIMATIC IOT2050 Advanced";
+
+	memory@80000000 {
+		device_type = "memory";
+		/* 2G RAM */
+		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+	};
+};
+
+&main_pmx0 {
+	main_mmc0_pins_default: main-mmc0-pins-default {
+		pinctrl-single,pins = <
+			AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0)  /* (B25) MMC0_CLK */
+			AM65X_IOPAD(0x01ac, PIN_INPUT_PULLUP,   0)  /* (B27) MMC0_CMD */
+			AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP,   0)  /* (A26) MMC0_DAT0 */
+			AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP,   0)  /* (E25) MMC0_DAT1 */
+			AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP,   0)  /* (C26) MMC0_DAT2 */
+			AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP,   0)  /* (A25) MMC0_DAT3 */
+			AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP,   0)  /* (E24) MMC0_DAT4 */
+			AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP,   0)  /* (A24) MMC0_DAT5 */
+			AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP,   0)  /* (B26) MMC0_DAT6 */
+			AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP,   0)  /* (D25) MMC0_DAT7 */
+			AM65X_IOPAD(0x01b8, PIN_OUTPUT_PULLUP,  7)  /* (B23) MMC0_SDWP */
+			AM65X_IOPAD(0x01b4, PIN_INPUT_PULLUP,   0)  /* (A23) MMC0_SDCD */
+			AM65X_IOPAD(0x01b0, PIN_INPUT,          0)  /* (C25) MMC0_DS */
+		>;
+	};
+};
+
+/* eMMC */
+&sdhci0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&main_mmc0_pins_default>;
+	bus-width = <8>;
+	non-removable;
+	ti,driver-strength-ohm = <50>;
+	disable-wp;
+};
+
+&main_uart0 {
+	status = "disabled";
+};