board: iot2050: Support new IOT2050-SM variant

Main differences between the new variant and Advanced PG2:

1. Arduino interface is removed. Instead, an new ASIC is added for
   communicating with PLC 1200 signal modules.
2. USB 3.0 type A connector is removed, only USB 2.0 type A connector is
   available.
3. DP interface is tailored down. Instead, to communicate with the
   PLC 1200 signal modules, a USB 3.0 type B connector is added but the
   signal is not USB.
4. DDR size is increased to 4 GB.
5. Two sensors are added, one tilt sensor and one light sensor.

Signed-off-by: Baocheng Su <baocheng.su@siemens.com>
[Jan: rebased over OF_UPSTREAM]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Baocheng Su 2024-10-22 08:04:27 +02:00 committed by Tom Rini
parent 5341318165
commit 3acd534b73
5 changed files with 23 additions and 4 deletions

View file

@ -229,7 +229,10 @@
};
fit@380000 {
fit,fdt-list-val = "ti/k3-am6528-iot2050-basic-pg2", "ti/k3-am6548-iot2050-advanced-pg2", "ti/k3-am6548-iot2050-advanced-m2";
fit,fdt-list-val = "ti/k3-am6528-iot2050-basic-pg2",
"ti/k3-am6548-iot2050-advanced-pg2",
"ti/k3-am6548-iot2050-advanced-m2",
"ti/k3-am6548-iot2050-advanced-sm";
images {
bkey-usb3-overlay {

View file

@ -0,0 +1 @@
k3-am6528-iot2050-basic-pg2-u-boot.dtsi

View file

@ -174,6 +174,14 @@ static bool board_is_m2(void)
strcmp((char *)info->name, "IOT2050-ADVANCED-M2") == 0;
}
static bool board_is_sm(void)
{
struct iot2050_info *info = IOT2050_INFO_DATA;
return info->magic == IOT2050_INFO_MAGIC &&
strcmp((char *)info->name, "IOT2050-ADVANCED-SM") == 0;
}
static void remove_mmc1_target(void)
{
char *boot_targets = strdup(env_get("boot_targets"));
@ -189,7 +197,10 @@ static void remove_mmc1_target(void)
static void enable_pcie_connector_power(void)
{
set_pinvalue("gpio@601000_17", "P3V3_PCIE_CON_EN", 1);
if (board_is_sm())
set_pinvalue("gpio@601000_22", "P3V3_PCIE_CON_EN", 1);
else
set_pinvalue("gpio@601000_17", "P3V3_PCIE_CON_EN", 1);
udelay(4 * 100);
}
@ -230,6 +241,8 @@ void set_board_info_env(void)
fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
else if (board_is_m2())
fdtfile = "ti/k3-am6548-iot2050-advanced-m2.dtb";
else if (board_is_sm())
fdtfile = "ti/k3-am6548-iot2050-advanced-sm.dtb";
else
fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
} else {

View file

@ -80,7 +80,7 @@ CONFIG_CMD_TIME=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_OF_UPSTREAM=y
CONFIG_OF_LIST="ti/k3-am6528-iot2050-basic ti/k3-am6528-iot2050-basic-pg2 ti/k3-am6548-iot2050-advanced ti/k3-am6548-iot2050-advanced-pg2 ti/k3-am6548-iot2050-advanced-m2"
CONFIG_OF_LIST="ti/k3-am6528-iot2050-basic ti/k3-am6528-iot2050-basic-pg2 ti/k3-am6548-iot2050-advanced ti/k3-am6548-iot2050-advanced-pg2 ti/k3-am6548-iot2050-advanced-m2 ti/k3-am6548-iot2050-advanced-sm"
CONFIG_OF_OVERLAY_LIST="ti/k3-am6548-iot2050-advanced-m2-bkey-usb3 ti/k3-am6548-iot2050-advanced-m2-bkey-ekey-pcie"
CONFIG_SPL_MULTI_DTB_FIT=y
CONFIG_SPL_OF_LIST="ti/k3-am6528-iot2050-basic"

View file

@ -8,7 +8,9 @@ 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. 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.
support 5G/WIFI/BT applications or connect an SSD. Compared with the AM6548
Advanced variant, SM variant removes the Arduino interface, and adds a new
ASIC for communicating with the PLC 1200 signal modules.
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