2021-09-09 19:42:38

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 0/5] 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 3:
- 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 (5):
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
arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards
arm64: dts: ti: iot2050: Add support for product generation 2 boards

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 +++--------------
10 files changed, 199 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


2021-09-09 19:43:30

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 5/5] arm64: dts: ti: iot2050: Add support for product generation 2 boards

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).

Signed-off-by: Jan Kiszka <[email protected]>
---
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

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index d56c742f5a10..41a4bc96e6bd 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -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

diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
new file mode 100644
index 000000000000..2323628b0444
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2021
+ *
+ * Authors:
+ * Chao Zeng <[email protected]>
+ * Jan Kiszka <[email protected]>
+ *
+ * Common bits of the IOT2050 Basic and Advanced variants, PG2
+ */
+
+&main_pmx0 {
+ cp2102n_reset_pin_default: cp2102n_reset_pin_default {
+ pinctrl-single,pins = <
+ /* (AF12) GPIO1_24, used as cp2102 reset */
+ AM65X_IOPAD(0x01e0, PIN_OUTPUT, 7)
+ >;
+ };
+};
+
+&main_gpio1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&cp2102n_reset_pin_default>;
+ gpio-line-names =
+ "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "CP2102N-RESET";
+};
+
+&dss {
+ /* Workaround needed to get DP clock of 154Mhz */
+ assigned-clocks = <&k3_clks 67 0>;
+};
+
+&serdes0 {
+ assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
+ assigned-clock-parents = <&k3_clks 153 7>, <&k3_clks 153 4>;
+};
+
+&dwc3_0 {
+ assigned-clock-parents = <&k3_clks 151 4>, /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
+ <&k3_clks 151 8>; /* set PIPE3_TXB_CLK to WIZ8B2M4VSB */
+ phys = <&serdes0 PHY_TYPE_USB3 0>;
+ phy-names = "usb3-phy";
+};
+
+&usb0_phy {
+ maximum-speed = "super-speed";
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
new file mode 100644
index 000000000000..c62549a4b436
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
@@ -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";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
new file mode 100644
index 000000000000..f00dc86d01b9
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
@@ -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

2021-09-09 19:44:08

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 2/5] arm64: dts: ti: iot2050: Disable SR2.0-only PRUs

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.

Signed-off-by: Jan Kiszka <[email protected]>
---
.../boot/dts/ti/k3-am65-iot2050-common.dtsi | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
index 6261ca8ee2d8..58c8e64d5885 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
@@ -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

2021-09-09 19:44:37

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 3/5] arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F cores

From: Jan Kiszka <[email protected]>

Analogously to the am654-base-board, configure the mailboxes for the 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.

Signed-off-by: Jan Kiszka <[email protected]>
---
.../boot/dts/ti/k3-am65-iot2050-common.dtsi | 26 +++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
index 58c8e64d5885..b29537088289 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
@@ -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

2021-09-09 19:44:45

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 4/5] arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards

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.

Signed-off-by: Jan Kiszka <[email protected]>
---
.../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%)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi
new file mode 100644
index 000000000000..51f902fa35a7
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi
@@ -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";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
index b29537088289..65da226847f4 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
@@ -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";
-};
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi
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
--- a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
+++ b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi
@@ -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>;
};
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
index 94bb5dd39122..87928ff28214 100644
--- a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
+++ b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
@@ -4,63 +4,21 @@
*
* Authors:
* Le Jin <[email protected]>
- * Jan Kiszka <[email protected]>
+ * Jan Kiszka <[email protected]>
*
- * AM6528-based (dual-core) IOT2050 Basic variant
+ * AM6528-based (dual-core) IOT2050 Basic variant, Product Generation 1
* 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-am65-iot2050-common.dtsi"
+#include "k3-am6528-iot2050-basic-common.dtsi"
+#include "k3-am65-iot2050-common-pg1.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>;
-};
-
-&mcu_r5fss0 {
- /* lock-step mode not supported on this board */
- ti,cluster-mode = <0>;
};
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi
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
--- a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
+++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi
@@ -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 */
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
index ec9617c13cdb..077f165bdc68 100644
--- a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
+++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
@@ -4,57 +4,21 @@
*
* Authors:
* Le Jin <[email protected]>
- * Jan Kiszka <[email protected]>
+ * Jan Kiszka <[email protected]>
*
- * AM6548-based (quad-core) IOT2050 Advanced variant
+ * AM6548-based (quad-core) IOT2050 Advanced variant, Product Generation 1
* 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-am65-iot2050-common.dtsi"
+#include "k3-am6548-iot2050-advanced-common.dtsi"
+#include "k3-am65-iot2050-common-pg1.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";
};
--
2.31.1

2021-09-09 19:46:04

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH v3 1/5] 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.

Signed-off-by: Jan Kiszka <[email protected]>
---
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
index 1008e9162ba2..6261ca8ee2d8 100644
--- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
@@ -17,6 +17,8 @@
/ {
aliases {
spi0 = &mcu_spi0;
+ mmc0 = &sdhci1;
+ mmc1 = &sdhci0;
};

chosen {
--
2.31.1

2021-09-14 20:16:42

by Nishanth Menon

[permalink] [raw]
Subject: Re: [PATCH v3 5/5] arm64: dts: ti: iot2050: Add support for product generation 2 boards

On 21:41-20210909, Jan Kiszka wrote:
> 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).
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---
> 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
>
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index d56c742f5a10..41a4bc96e6bd 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -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
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
> new file mode 100644
> index 000000000000..2323628b0444
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
> @@ -0,0 +1,51 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) Siemens AG, 2021
> + *
> + * Authors:
> + * Chao Zeng <[email protected]>
> + * Jan Kiszka <[email protected]>
> + *
> + * Common bits of the IOT2050 Basic and Advanced variants, PG2
> + */
> +
> +&main_pmx0 {
> + cp2102n_reset_pin_default: cp2102n_reset_pin_default {

cp2102n_reset_pin_default: cp2102n-reset-pin-default

> + pinctrl-single,pins = <
> + /* (AF12) GPIO1_24, used as cp2102 reset */
> + AM65X_IOPAD(0x01e0, PIN_OUTPUT, 7)
> + >;
> + };
> +};
> +
> +&main_gpio1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&cp2102n_reset_pin_default>;
> + gpio-line-names =
> + "", "", "", "", "", "", "", "", "", "",
> + "", "", "", "", "", "", "", "", "", "",
> + "", "", "", "", "CP2102N-RESET";
> +};
> +
> +&dss {
> + /* Workaround needed to get DP clock of 154Mhz */
> + assigned-clocks = <&k3_clks 67 0>;
> +};
> +
> +&serdes0 {
> + assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
> + assigned-clock-parents = <&k3_clks 153 7>, <&k3_clks 153 4>;
> +};
> +
> +&dwc3_0 {
> + assigned-clock-parents = <&k3_clks 151 4>, /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
> + <&k3_clks 151 8>; /* set PIPE3_TXB_CLK to WIZ8B2M4VSB */
> + phys = <&serdes0 PHY_TYPE_USB3 0>;
> + phy-names = "usb3-phy";
> +};
> +
> +&usb0_phy {
> + maximum-speed = "super-speed";
> + snps,dis-u1-entry-quirk;
> + snps,dis-u2-entry-quirk;
> +};
> diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
> new file mode 100644
> index 000000000000..c62549a4b436
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
> @@ -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";
> +};
> diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
> new file mode 100644
> index 000000000000..f00dc86d01b9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
> @@ -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";

^^ siemens,iot2050-basic-pg2 -> needs a yaml update?

> + model = "SIMATIC IOT2050 Advanced PG2";
> +};
> +
> +&mcu_r5fss0 {
> + /* lock-step mode not supported on this board */
> + ti,cluster-mode = <0>;
> +};
> --
> 2.31.1
>

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

2021-09-14 20:18:06

by Nishanth Menon

[permalink] [raw]
Subject: Re: [PATCH v3 3/5] arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F cores

On 21:41-20210909, Jan Kiszka wrote:
> From: Jan Kiszka <[email protected]>
>
> Analogously to the am654-base-board, configure the mailboxes for the the

s/the the/the -> could you checkpatch and dtbs_checks please?

> 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.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---
> .../boot/dts/ti/k3-am65-iot2050-common.dtsi | 26 +++++++++++++++++--
> 1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> index 58c8e64d5885..b29537088289 100644
> --- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> @@ -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
>

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

2021-09-14 20:19:37

by Nishanth Menon

[permalink] [raw]
Subject: Re: [PATCH v3 4/5] arm64: dts: ti: iot2050: Prepare for adding 2nd-generation boards

On 21:41-20210909, Jan Kiszka wrote:
[..]
> 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
> --- a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi
> @@ -4,10 +4,9 @@
> *
> * Authors:
> * Le Jin <[email protected]>
> - * Jan Kiszka <[email protected]>
> + * Jan Kiszka <[email protected]>

^^ please call that email ID out in the commit message as well.

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

2021-09-15 02:44:21

by Aswath Govindraju

[permalink] [raw]
Subject: Re: [PATCH v3 1/5] arm64: dts: ti: iot2050: Flip mmc device ordering on Advanced devices

On 10/09/21 1:11 am, Jan Kiszka wrote:
> 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.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---

Acked-by: Aswath Govindraju <[email protected]>

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

2021-09-15 02:47:01

by Aswath Govindraju

[permalink] [raw]
Subject: Re: [PATCH v3 2/5] arm64: dts: ti: iot2050: Disable SR2.0-only PRUs

On 10/09/21 1:11 am, Jan Kiszka wrote:
> 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.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---

Acked-by: Aswath Govindraju <[email protected]>

> .../boot/dts/ti/k3-am65-iot2050-common.dtsi | 24 +++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> index 6261ca8ee2d8..58c8e64d5885 100644
> --- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> @@ -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";
> +};
>

2021-09-15 15:33:01

by Vignesh Raghavendra

[permalink] [raw]
Subject: Re: [PATCH v3 3/5] arm64: dts: ti: iot2050: Add/enabled mailboxes and carve-outs for R5F cores



On 9/10/21 1:11 AM, Jan Kiszka wrote:
> From: Jan Kiszka <[email protected]>
>
> Analogously to the am654-base-board, configure the mailboxes for the 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.
>
> Signed-off-by: Jan Kiszka <[email protected]>

Reviewed-by: Vignesh Raghavendra <[email protected]>

> ---
> .../boot/dts/ti/k3-am65-iot2050-common.dtsi | 26 +++++++++++++++++--
> 1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> index 58c8e64d5885..b29537088289 100644
> --- a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
> @@ -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";
> };
>