]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: dts: iot2050: Add support for M.2 variant
authorchao zeng <chao.zeng@siemens.com>
Tue, 28 Feb 2023 18:19:22 +0000 (19:19 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 29 Mar 2023 15:58:26 +0000 (11:58 -0400)
Add support for the M.2 board based on the iot2050 advanced board.
The board has two m.2 connectors, one is B-keyed, the other E-keyed.
The B-key slot can connect 5G/SSD devices, and E-key can be used for
WIFI/BT devices.

This variant is covered by PG2 firmware image.

Signed-off-by: chao zeng <chao.zeng@siemens.com>
[Jan: align DT to kernel, polish wording]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
arch/arm/dts/Makefile
arch/arm/dts/k3-am6548-iot2050-advanced-m2.dts [new file with mode: 0644]
configs/iot2050_pg2_defconfig
doc/board/siemens/iot2050.rst

index c160e884bf6317aaa88b0156d8dd019d3ff47272..79ed4ac08253fe34cadfdab45edf4bc9e354f00c 100644 (file)
@@ -1259,7 +1259,8 @@ dtb-$(CONFIG_SOC_K3_AM654) += \
        k3-am6528-iot2050-basic.dtb \
        k3-am6528-iot2050-basic-pg2.dtb \
        k3-am6548-iot2050-advanced.dtb \
-       k3-am6548-iot2050-advanced-pg2.dtb
+       k3-am6548-iot2050-advanced-pg2.dtb \
+       k3-am6548-iot2050-advanced-m2.dtb
 dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \
                              k3-j721e-r5-common-proc-board.dtb \
                              k3-j7200-common-proc-board.dtb \
diff --git a/arch/arm/dts/k3-am6548-iot2050-advanced-m2.dts b/arch/arm/dts/k3-am6548-iot2050-advanced-m2.dts
new file mode 100644 (file)
index 0000000..9400e35
--- /dev/null
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2023
+ *
+ * Authors:
+ *   Chao Zeng <chao.zeng@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * AM6548-based (quad-core) IOT2050 M.2 variant (based on Advanced 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
+ */
+
+#include "k3-am6548-iot2050-advanced-common.dtsi"
+#include "k3-am65-iot2050-common-pg2.dtsi"
+
+/ {
+       compatible = "siemens,iot2050-advanced-m2", "ti,am654";
+       model = "SIMATIC IOT2050 Advanced M2";
+};
+
+&mcu_r5fss0 {
+       /* lock-step mode not supported on this board */
+       ti,cluster-mode = <0>;
+};
+
+&main_pmx0 {
+       main_m2_enable_pins_default: main-m2-enable-pins-default {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x01c4, PIN_INPUT_PULLUP, 7)  /* (AH13) GPIO1_17 */
+               >;
+       };
+
+       main_bkey_pcie_reset: main-bkey-pcie-reset {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x01bc, PIN_OUTPUT_PULLUP, 7)  /* (AG13) GPIO1_15 */
+               >;
+       };
+
+       main_pmx0_m2_config_pins_default: main-pmx0-m2-config-pins-default {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x01c8, PIN_INPUT_PULLUP, 7)  /* (AE13) GPIO1_18 */
+                       AM65X_IOPAD(0x01cc, PIN_INPUT_PULLUP, 7)  /* (AD13) GPIO1_19 */
+               >;
+       };
+
+       main_m2_pcie_mux_control: main-m2-pcie-mux-control {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x0148, PIN_INPUT_PULLUP, 7)  /* (AG22) GPIO0_82 */
+                       AM65X_IOPAD(0x0160, PIN_INPUT_PULLUP, 7)  /* (AE20) GPIO0_88 */
+                       AM65X_IOPAD(0x0164, PIN_INPUT_PULLUP, 7)  /* (AF19) GPIO0_89 */
+               >;
+       };
+};
+
+&main_pmx1 {
+       main_pmx1_m2_config_pins_default: main-pmx1-m2-config-pins-default {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x0018, PIN_INPUT_PULLUP, 7)  /* (B22) GPIO1_88 */
+                       AM65X_IOPAD(0x001c, PIN_INPUT_PULLUP, 7)  /* (C23) GPIO1_89 */
+               >;
+       };
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &main_m2_pcie_mux_control
+               &arduino_io_d4_to_d9_pins_default
+       >;
+};
+
+&main_gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &main_m2_enable_pins_default
+               &main_pmx0_m2_config_pins_default
+               &main_pmx1_m2_config_pins_default
+               &cp2102n_reset_pin_default
+       >;
+};
+
+/*
+ * Base configuration for B-key slot with PCIe x2, E-key with USB 2.0 only.
+ * Firmware switches to other modes via device tree overlays.
+ */
+
+&serdes0 {
+       assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
+       assigned-clock-parents = <&k3_clks 153 8>, <&k3_clks 153 4>;
+};
+
+&pcie0_rc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_bkey_pcie_reset>;
+
+       num-lanes = <2>;
+       phys = <&serdes0 PHY_TYPE_PCIE 1>, <&serdes1 PHY_TYPE_PCIE 1>;
+       phy-names = "pcie-phy0","pcie-phy1";
+       reset-gpios = <&main_gpio1 15 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&pcie1_rc {
+       status = "disabled";
+};
+
+&dwc3_0 {
+       assigned-clock-parents = <&k3_clks 151 4>,  /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
+                                <&k3_clks 151 9>;  /* set PIPE3_TXB_CLK to CLK_12M_RC/256 (for HS only) */
+       /delete-property/ phys;
+       /delete-property/ phy-names;
+};
+
+&usb0 {
+       maximum-speed = "high-speed";
+       /delete-property/ snps,dis-u1-entry-quirk;
+       /delete-property/ snps,dis-u2-entry-quirk;
+};
index d2bdeab593bd43d7f5146faa04b128acdf3193dd..b20667780a34499be16e67feacf3506a767e5857 100644 (file)
@@ -69,7 +69,7 @@ CONFIG_CMD_TIME=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
-CONFIG_OF_LIST="k3-am6528-iot2050-basic-pg2 k3-am6548-iot2050-advanced-pg2"
+CONFIG_OF_LIST="k3-am6528-iot2050-basic-pg2 k3-am6548-iot2050-advanced-pg2 k3-am6548-iot2050-advanced-m2"
 CONFIG_SPL_MULTI_DTB_FIT=y
 CONFIG_SPL_OF_LIST="k3-am65-iot2050-spl"
 CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
index efe94a448a97c822fd4f5b6e08b8cc571f72dc54..442d2cac2164394b0f9898f23d5b6743e65973e6 100644 (file)
@@ -6,7 +6,9 @@ SIMATIC IOT2050 BASIC and ADVANCED
 
 The SIMATIC IOT2050 is an open industrial IoT gateway that is using the TI
 AM6528 GP (Basic variant) or the AM6548 HS (Advanced variant). The Advanced
-variant is prepared for secure boot.
+variant is prepared for secure boot. M.2 Variant also uses the AM6548 HS.
+Instead of a MiniPCI connector, it comes with two M.2 connectors and can
+support 5G/WIFI/BT applications or connect an SSD.
 
 The IOT2050 starts only from OSPI. It loads a Siemens-provided bootloader
 called SE-Boot for the MCU domain (R5F cores), then hands over to ATF and
@@ -70,7 +72,7 @@ U-Boot:
  # configure for PG1
  $ make iot2050_pg1_defconfig
 
- # or configure for PG2
+ # or configure for PG2 or the M.2 variant
  $ make iot2050_pg2_defconfig
 
  $ make