Commit b8af7795 authored by xingtong.wu's avatar xingtong.wu Committed by Hans de Goede
Browse files

platform/x86/siemens: simatic-ipc: add new models BX-56A/BX-59A



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: default avatarxingtong.wu <xingtong.wu@siemens.com>
Link: https://lore.kernel.org/r/20230731071424.4663-2-xingtong_wu@163.com


Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 1598e3f6
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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";
+1 −0
Original line number Diff line number Diff line
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -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)