Skip to contentSkip to conversation

arm64: dts: Update IOT2050 boards

PATCH Applied Jan Kiszka 2 participants 8 messages Sep 26, 2021 – Oct 5, 2021

Subsystems (2)
lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

v5 cover arm64: dts: Update IOT2050 boards

This enhances the DTs for the IOT2050, primarily by added support for upcoming Production Generation 2 (PG2) and by ordering the MMC devices consistently across variants.

Changes in v5:
- fix usb0 node (for true USB 3.0 support)
- added reviewed/acked tags

Changes in v4:
- update dtbinding with new board names
- fix review comments on commit messages and style

Changes in v3:
- move mmc alias back into board DTs
- add patch to enable R5F cores for rproc

Changes in v2:
- move mmc alias to SoC level
- split up into PG2 preparation and addition patch
- add link to product homepage

Jan

Jan Kiszka (6):
arm64: dts: ti: iot2050: Flip mmc device ordering on Advanced devices
arm64: dts: ti: iot2050: Disable SR2.0-only PRUs
arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F
cores
dt-bindings: arm: ti: Add bindings for Siemens IOT2050 PG2 boards
arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards
arm64: dts: ti: iot2050: Add support for product generation 2 boards

 .../devicetree/bindings/arm/ti/k3.yaml        |  2 +
 arch/arm64/boot/dts/ti/Makefile               |  2 +
 .../dts/ti/k3-am65-iot2050-common-pg1.dtsi    | 46 +++++++++++++++
 .../dts/ti/k3-am65-iot2050-common-pg2.dtsi    | 51 +++++++++++++++++
 .../boot/dts/ti/k3-am65-iot2050-common.dtsi   | 39 +++++++++----
 ...ts => k3-am6528-iot2050-basic-common.dtsi} | 12 +---
 .../dts/ti/k3-am6528-iot2050-basic-pg2.dts    | 24 ++++++++
 .../boot/dts/ti/k3-am6528-iot2050-basic.dts   | 56 +++----------------
 ...=> k3-am6548-iot2050-advanced-common.dtsi} |  8 +--
 .../dts/ti/k3-am6548-iot2050-advanced-pg2.dts | 29 ++++++++++
 .../dts/ti/k3-am6548-iot2050-advanced.dts     | 50 +++--------------
 11 files changed, 201 insertions(+), 118 deletions(-)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi
 create mode 100644 arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
 copy arch/arm64/boot/dts/ti/{k3-am6528-iot2050-basic.dts => k3-am6528-iot2050-basic-common.dtsi} (80%)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
 copy arch/arm64/boot/dts/ti/{k3-am6548-iot2050-advanced.dts => k3-am6548-iot2050-advanced-common.dtsi} (85%)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts

--
2.31.1

author
#1 lore raw

PATCH v5 1/6 arm64: dts: ti: iot2050: Flip mmc device ordering on Advanced devices

From: Jan Kiszka <[email protected]>

This ensures that the SD card will remain mmc0 across Basic and Advanced devices, also avoiding surprises for users coming from the downstream kernels.

---
 arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi | 2 ++
 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi +2 -0
index 1008e9162ba2..6261ca8ee2d8 100644
@@ -17,6 +17,8 @@
 / {
 	aliases {
 		spi0 = &mcu_spi0;
+		mmc0 = &sdhci1;
+		mmc1 = &sdhci0;
 	};
 
 	chosen {

--
2.31.1

author
#2 lore raw

PATCH v5 2/6 arm64: dts: ti: iot2050: Disable SR2.0-only PRUs

In reply to Jan Kiszka

From: Jan Kiszka <[email protected]>

The IOT2050 devices described so far are using SR1.0 silicon, thus do not have the additional PRUs of the ICSSG of the SR2.0. Disable them.

---
 .../boot/dts/ti/k3-am65-iot2050-common.dtsi   | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi +24 -0
index 6261ca8ee2d8..58c8e64d5885 100644
@@ -716,3 +716,27 @@ &icssg1_mdio {
 &icssg2_mdio {
 	status = "disabled";
 };
+
+&tx_pru0_0 {
+	status = "disabled";
+};
+
+&tx_pru0_1 {
+	status = "disabled";
+};
+
+&tx_pru1_0 {
+	status = "disabled";
+};
+
+&tx_pru1_1 {
+	status = "disabled";
+};
+
+&tx_pru2_0 {
+	status = "disabled";
+};
+
+&tx_pru2_1 {
+	status = "disabled";
+};

--
2.31.1

author
#3 lore raw

PATCH v5 3/6 arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F cores

In reply to Jan Kiszka

From: Jan Kiszka <[email protected]>

Analogously to the am654-base-board, configure the mailboxes for the two R5F cores, add them and the already existing memory carve-outs to the related MCU nodes. Allows to load applications under Linux onto the cores, e.g. the RTI watchdog firmware.

---
 .../boot/dts/ti/k3-am65-iot2050-common.dtsi   | 26 +++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi +24 -2
index 58c8e64d5885..b29537088289 100644
@@ -658,11 +658,21 @@ &pcie1_ep {
 };
 
 &mailbox0_cluster0 {
-	status = "disabled";
+	interrupts = <436>;
+
+	mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
+		ti,mbox-tx = <1 0 0>;
+		ti,mbox-rx = <0 0 0>;
+	};
 };
 
 &mailbox0_cluster1 {
-	status = "disabled";
+	interrupts = <432>;
+
+	mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
+		ti,mbox-tx = <1 0 0>;
+		ti,mbox-rx = <0 0 0>;
+	};
 };
 
 &mailbox0_cluster2 {
@@ -705,6 +715,18 @@ &mailbox0_cluster11 {
 	status = "disabled";
 };
 
+&mcu_r5fss0_core0 {
+	memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+			<&mcu_r5fss0_core0_memory_region>;
+	mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
+};
+
+&mcu_r5fss0_core1 {
+	memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
+			<&mcu_r5fss0_core1_memory_region>;
+	mboxes = <&mailbox0_cluster1 &mbox_mcu_r5fss0_core1>;
+};
+
 &icssg0_mdio {
 	status = "disabled";
 };

--
2.31.1

author
#4 lore raw

PATCH v5 4/6 dt-bindings: arm: ti: Add bindings for Siemens IOT2050 PG2 boards

In reply to Jan Kiszka

From: Jan Kiszka <[email protected]>

Product Generation 2 (PG2) boards are based on SR2.x SoCs and will be released soon.

---
 Documentation/devicetree/bindings/arm/ti/k3.yaml | 2 ++
 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/arm/ti/k3.yaml +2 -0
index c5aa362e4026..ccde4a0d7b46 100644
@@ -24,7 +24,9 @@ properties:
           - enum:
               - ti,am654-evm
               - siemens,iot2050-basic
+              - siemens,iot2050-basic-pg2
               - siemens,iot2050-advanced
+              - siemens,iot2050-advanced-pg2
           - const: ti,am654
 
       - description: K3 J721E SoC

--
2.31.1

author
#5 lore raw

PATCH v5 5/6 arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards

In reply to Jan Kiszka

From: Jan Kiszka <[email protected]>

The current IOT2050 devices are Product Generation 1 (PG1), using SR1.0 AM65x silicon. Upcoming PG2 devices will use SR2.x SoCs and will therefore need separate device trees. Prepare for that by factoring out common bits that will be shared across both generations.

At this chance, drop a link to the product homepage to in the top-level dts files. Also fix a typo in my email address in some headers.

---
 .../dts/ti/k3-am65-iot2050-common-pg1.dtsi    | 46 +++++++++++++++
 .../boot/dts/ti/k3-am65-iot2050-common.dtsi   | 35 +-----------
 ...ts => k3-am6528-iot2050-basic-common.dtsi} | 12 +---
 .../boot/dts/ti/k3-am6528-iot2050-basic.dts   | 56 +++----------------
 ...=> k3-am6548-iot2050-advanced-common.dtsi} |  8 +--
 .../dts/ti/k3-am6548-iot2050-advanced.dts     | 50 +++--------------
 6 files changed, 67 insertions(+), 140 deletions(-)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi
 copy arch/arm64/boot/dts/ti/{k3-am6528-iot2050-basic.dts => k3-am6528-iot2050-basic-common.dtsi} (80%)
 copy arch/arm64/boot/dts/ti/{k3-am6548-iot2050-advanced.dts => k3-am6548-iot2050-advanced-common.dtsi} (85%)
arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi new file +46 -0
new file mode 100644
index 000000000000..51f902fa35a7
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2021
+ *
+ * Authors:
+ *   Jan Kiszka <[email protected]>
+ *
+ * Common bits of the IOT2050 Basic and Advanced variants, PG1
+ */
+
+&dss {
+	assigned-clocks = <&k3_clks 67 2>;
+	assigned-clock-parents = <&k3_clks 67 5>;
+};
+
+&serdes0 {
+	status = "disabled";
+};
+
+&sdhci1 {
+	no-1-8-v;
+};
+
+&tx_pru0_0 {
+	status = "disabled";
+};
+
+&tx_pru0_1 {
+	status = "disabled";
+};
+
+&tx_pru1_0 {
+	status = "disabled";
+};
+
+&tx_pru1_1 {
+	status = "disabled";
+};
+
+&tx_pru2_0 {
+	status = "disabled";
+};
+
+&tx_pru2_1 {
+	status = "disabled";
+};
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi +2 -33
index b29537088289..65da226847f4 100644
@@ -4,13 +4,11 @@
  *
  * Authors:
  *   Le Jin <[email protected]>
- *   Jan Kiszka <[email protected]>
+ *   Jan Kiszka <[email protected]>
  *
- * Common bits of the IOT2050 Basic and Advanced variants
+ * Common bits of the IOT2050 Basic and Advanced variants, PG1 and PG2
  */
 
-/dts-v1/;
-
 #include "k3-am654.dtsi"
 #include <dt-bindings/phy/phy.h>
 
@@ -557,7 +555,6 @@ &sdhci1 {
 	pinctrl-0 = <&main_mmc1_pins_default>;
 	ti,driver-strength-ohm = <50>;
 	disable-wp;
-	no-1-8-v;
 };
 
 &usb0 {
@@ -631,10 +628,6 @@ dpi_out: endpoint {
 	};
 };
 
-&serdes0 {
-	status = "disabled";
-};
-
 &pcie0_rc {
 	status = "disabled";
 };
@@ -738,27 +731,3 @@ &icssg1_mdio {
 &icssg2_mdio {
 	status = "disabled";
 };
-
-&tx_pru0_0 {
-	status = "disabled";
-};
-
-&tx_pru0_1 {
-	status = "disabled";
-};
-
-&tx_pru1_0 {
-	status = "disabled";
-};
-
-&tx_pru1_1 {
-	status = "disabled";
-};
-
-&tx_pru2_0 {
-	status = "disabled";
-};
-
-&tx_pru2_1 {
-	status = "disabled";
-};
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi renamed from arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts +3 -9
similarity index 80%
copy from arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
copy to arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi
index 94bb5dd39122..4a9bf7d7c07d 100644
@@ -4,20 +4,14 @@
  *
  * Authors:
  *   Le Jin <[email protected]>
- *   Jan Kiszka <[email protected]>
+ *   Jan Kiszka <[email protected]>
  *
- * AM6528-based (dual-core) IOT2050 Basic variant
- * 1 GB RAM, no eMMC, main_uart0 on connector X30
+ * Common bits of the IOT2050 Basic variant, PG1 and PG2
  */
 
-/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 */
@@ -61,6 +55,6 @@ &main_uart0 {
 };
 
 &mcu_r5fss0 {
-	/* lock-step mode not supported on this board */
+	/* lock-step mode not supported on Basic boards */
 	ti,cluster-mode = <0>;
 };
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts +7 -49

70 lines not on this page · raw message

arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi renamed from arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts +2 -6
similarity index 85%
copy from arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
copy to arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi
index ec9617c13cdb..d25e8b26187f 100644
@@ -4,10 +4,9 @@
  *
  * Authors:
  *   Le Jin <[email protected]>
- *   Jan Kiszka <[email protected]>
+ *   Jan Kiszka <[email protected]>
  *
- * AM6548-based (quad-core) IOT2050 Advanced variant
- * 2 GB RAM, 16 GB eMMC, USB-serial converter on connector X30
+ * Common bits of the IOT2050 Advanced variant, PG1 and PG2
  */
 
 /dts-v1/;
@@ -15,9 +14,6 @@
 #include "k3-am65-iot2050-common.dtsi"
 
 / {
-	compatible = "siemens,iot2050-advanced", "ti,am654";
-	model = "SIMATIC IOT2050 Advanced";
-
 	memory@80000000 {
 		device_type = "memory";
 		/* 2G RAM */
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts +7 -43

64 lines not on this page · raw message

--
2.31.1

author
#6 lore raw

PATCH v5 6/6 arm64: dts: ti: iot2050: Add support for product generation 2 boards

In reply to Jan Kiszka

From: Jan Kiszka <[email protected]>

This adds the devices trees for IOT2050 Product Generation 2 (PG2) boards. We have Basic and an Advanced variants again, differing in number of cores, RAM size, availability of eMMC and further details. The major difference to PG1 is the used silicon revision (SR2.x on PG2).

---
 arch/arm64/boot/dts/ti/Makefile               |  2 +
 .../dts/ti/k3-am65-iot2050-common-pg2.dtsi    | 51 +++++++++++++++++++
 .../dts/ti/k3-am6528-iot2050-basic-pg2.dts    | 24 +++++++++
 .../dts/ti/k3-am6548-iot2050-advanced-pg2.dts | 29 +++++++++++
 4 files changed, 106 insertions(+)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
 create mode 100644 arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
arch/arm64/boot/dts/ti/Makefile +2 -0
index d56c742f5a10..41a4bc96e6bd 100644
@@ -8,7 +8,9 @@
 
 dtb-$(CONFIG_ARCH_K3) += k3-am654-base-board.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am6528-iot2050-basic.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6528-iot2050-basic-pg2.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am6548-iot2050-advanced.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6548-iot2050-advanced-pg2.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-j721e-common-proc-board.dtb
 
arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi new file +51 -0

51 lines not on this page · raw message

arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts new file +24 -0
new file mode 100644
index 000000000000..c62549a4b436
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <[email protected]>
+ *   Jan Kiszka <[email protected]>
+ *
+ * AM6528-based (dual-core) IOT2050 Basic variant, Product Generation 2
+ * 1 GB RAM, no eMMC, main_uart0 on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
+ */
+
+/dts-v1/;
+
+#include "k3-am6528-iot2050-basic-common.dtsi"
+#include "k3-am65-iot2050-common-pg2.dtsi"
+
+/ {
+	compatible = "siemens,iot2050-basic-pg2", "ti,am654";
+	model = "SIMATIC IOT2050 Basic PG2";
+};
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts new file +29 -0
new file mode 100644
index 000000000000..f00dc86d01b9
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <[email protected]>
+ *   Jan Kiszka <[email protected]>
+ *
+ * AM6548-based (quad-core) IOT2050 Advanced variant, Product Generation 2
+ * 2 GB RAM, 16 GB eMMC, USB-serial converter on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
+ */
+
+/dts-v1/;
+
+#include "k3-am6548-iot2050-advanced-common.dtsi"
+#include "k3-am65-iot2050-common-pg2.dtsi"
+
+/ {
+	compatible = "siemens,iot2050-advanced-pg2", "ti,am654";
+	model = "SIMATIC IOT2050 Advanced PG2";
+};
+
+&mcu_r5fss0 {
+	/* lock-step mode not supported on this board */
+	ti,cluster-mode = <0>;
+};

--
2.31.1

maintainer Applied
#7 lore raw
In reply to Jan Kiszka
Quoted 9 lines · Jan Kiszka

This enhances the DTs for the IOT2050, primarily by added support for upcoming Production Generation 2 (PG2) and by ordering the MMC devices consistently across variants.

Changes in v5:
- fix usb0 node (for true USB 3.0 support)
- added reviewed/acked tags

[...]

Hi Jan Kiszka,

I have applied the following to branch ti-k3-dts-next on [1]. Thank you!

[1/6] arm64: dts: ti: iot2050: Flip mmc device ordering on Advanced devices

      commit: 06784f7679274be3ca170a689c56192143a04541
[2/6] arm64: dts: ti: iot2050: Disable SR2.0-only PRUs
      commit: 262a98b43c2a08a5446bab2030f8fb68d3699396
[3/6] arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F cores
      commit: af755fe2b36c87abfa6f00caf7dfce6351b7412a
[4/6] dt-bindings: arm: ti: Add bindings for Siemens IOT2050 PG2 boards
      commit: 4f535a0e38f696cadc92cc980d25a4198b11ae33
[5/6] arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards
      commit: a9dbf044c600277f5d2805831a73083f3688e19f
[6/6] arm64: dts: ti: iot2050: Add support for product generation 2 boards
      commit: 614d47cc9303893c706c0c94516249eb3adaeb80

Side note:
- There are still cleanups that are in works (tsadc, cdns, etc..) - since these are already present and active cleanup is going on, letting it past, but if I do get a push back from upstream maintainers, I'd have to pull the series back.

All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent up the chain during the next merge window (or sooner if it is a relevant bug fix), however if problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying to this mail.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/nmenon/linux.git

Signature · 3 lines
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D)/Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D