platform/x86/siemens: simatic-ipc: add new models BX-56A/BX-59A
authorxingtong.wu <xingtong.wu@siemens.com>
Mon, 31 Jul 2023 07:14:24 +0000 (15:14 +0800)
committerHans de Goede <hdegoede@redhat.com>
Mon, 31 Jul 2023 12:23:58 +0000 (14:23 +0200)
This adds support for the Siemens Simatic IPC models BX-56A/BX-59A,
led/watchdog/battery on these models are same, actual drivers for
models will be sent in separate patches.

Signed-off-by: xingtong.wu <xingtong.wu@siemens.com>
Link: https://lore.kernel.org/r/20230731071424.4663-2-xingtong_wu@163.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/siemens/simatic-ipc.c
include/linux/platform_data/x86/simatic-ipc-base.h
include/linux/platform_data/x86/simatic-ipc.h

index 13c8573..02c540c 100644 (file)
@@ -78,6 +78,12 @@ static struct {
        {SIMATIC_IPC_IPCBX_21A,
                SIMATIC_IPC_DEVICE_BX_21A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_21A,
                { "emc1403", NULL }},
+       {SIMATIC_IPC_IPCBX_56A,
+               SIMATIC_IPC_DEVICE_BX_59A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_59A,
+               { "emc1403", "w83627hf_wdt" }},
+       {SIMATIC_IPC_IPCBX_59A,
+               SIMATIC_IPC_DEVICE_BX_59A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_59A,
+               { "emc1403", "w83627hf_wdt" }},
 };
 
 static int register_platform_devices(u32 station_id)
@@ -103,7 +109,9 @@ static int register_platform_devices(u32 station_id)
                        pdevname = KBUILD_MODNAME "_batt_apollolake";
                if (battmode == SIMATIC_IPC_DEVICE_BX_21A)
                        pdevname = KBUILD_MODNAME "_batt_elkhartlake";
-               if (battmode == SIMATIC_IPC_DEVICE_227G || battmode == SIMATIC_IPC_DEVICE_BX_39A)
+               if (battmode == SIMATIC_IPC_DEVICE_227G ||
+                   battmode == SIMATIC_IPC_DEVICE_BX_39A ||
+                   battmode == SIMATIC_IPC_DEVICE_BX_59A)
                        pdevname = KBUILD_MODNAME "_batt_f7188x";
                platform_data.devmode = battmode;
                ipc_batt_platform_device =
@@ -121,7 +129,7 @@ static int register_platform_devices(u32 station_id)
                pdevname = KBUILD_MODNAME "_leds";
                if (ledmode == SIMATIC_IPC_DEVICE_127E)
                        pdevname = KBUILD_MODNAME "_leds_gpio_apollolake";
-               if (ledmode == SIMATIC_IPC_DEVICE_227G)
+               if (ledmode == SIMATIC_IPC_DEVICE_227G || SIMATIC_IPC_DEVICE_BX_59A)
                        pdevname = KBUILD_MODNAME "_leds_gpio_f7188x";
                if (ledmode == SIMATIC_IPC_DEVICE_BX_21A)
                        pdevname = KBUILD_MODNAME "_leds_gpio_elkhartlake";
index 4ca2106..2d7f712 100644 (file)
@@ -22,6 +22,7 @@
 #define SIMATIC_IPC_DEVICE_227G 5
 #define SIMATIC_IPC_DEVICE_BX_21A 6
 #define SIMATIC_IPC_DEVICE_BX_39A 7
+#define SIMATIC_IPC_DEVICE_BX_59A 8
 
 struct simatic_ipc_platform {
        u8      devmode;
index f2eafa4..8d8b3b9 100644 (file)
@@ -36,6 +36,8 @@ enum simatic_ipc_station_ids {
        SIMATIC_IPC_IPCBX_39A = 0x00001001,
        SIMATIC_IPC_IPCPX_39A = 0x00001002,
        SIMATIC_IPC_IPCBX_21A = 0x00001101,
+       SIMATIC_IPC_IPCBX_56A = 0x00001201,
+       SIMATIC_IPC_IPCBX_59A = 0x00001202,
 };
 
 static inline u32 simatic_ipc_get_station_id(u8 *data, int max_len)