* [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A
@ 2023-07-13 11:56 Henning Schild
2023-07-13 11:56 ` [PATCH v2 1/2] platform/x86: simatic-ipc: add another " Henning Schild
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Henning Schild @ 2023-07-13 11:56 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, Hans de Goede, Mark Gross,
Andy Shevchenko, linux-kernel, linux-leds, platform-driver-x86
Cc: Tobias Schaffner, xingtong . wu, Henning Schild
change since v1:
- split into two patches to separate leds from platform code and ease
merging
These are rather simple patches adding LED support for yet another Simatic
IPC model.
Henning Schild (2):
platform/x86: simatic-ipc: add another model BX-21A
leds: simatic-ipc-leds-gpio: add Elkhart Lake version
drivers/leds/simple/Kconfig | 13 +++++
drivers/leds/simple/Makefile | 1 +
.../leds/simple/simatic-ipc-leds-gpio-core.c | 4 ++
.../simatic-ipc-leds-gpio-elkhartlake.c | 57 +++++++++++++++++++
drivers/platform/x86/simatic-ipc.c | 3 +
.../platform_data/x86/simatic-ipc-base.h | 3 +-
include/linux/platform_data/x86/simatic-ipc.h | 3 +-
7 files changed, 82 insertions(+), 2 deletions(-)
create mode 100644 drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c
--
2.41.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] platform/x86: simatic-ipc: add another model BX-21A
2023-07-13 11:56 [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Henning Schild
@ 2023-07-13 11:56 ` Henning Schild
2023-07-14 9:25 ` Hans de Goede
2023-07-13 11:56 ` [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version Henning Schild
2023-07-13 17:01 ` [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Andy Shevchenko
2 siblings, 1 reply; 6+ messages in thread
From: Henning Schild @ 2023-07-13 11:56 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, Hans de Goede, Mark Gross,
Andy Shevchenko, linux-kernel, linux-leds, platform-driver-x86
Cc: Tobias Schaffner, xingtong . wu, Henning Schild
This adds support for the Siemens Simatic IPC model BX-21A. Actual
drivers for that model will be sent in separate patches.
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
drivers/platform/x86/simatic-ipc.c | 3 +++
include/linux/platform_data/x86/simatic-ipc-base.h | 3 ++-
include/linux/platform_data/x86/simatic-ipc.h | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/simatic-ipc.c b/drivers/platform/x86/simatic-ipc.c
index c773995b230d..4402cd354104 100644
--- a/drivers/platform/x86/simatic-ipc.c
+++ b/drivers/platform/x86/simatic-ipc.c
@@ -48,6 +48,7 @@ static struct {
{SIMATIC_IPC_IPC477E, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_427E},
{SIMATIC_IPC_IPCBX_39A, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G},
{SIMATIC_IPC_IPCPX_39A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G},
+ {SIMATIC_IPC_IPCBX_21A, SIMATIC_IPC_DEVICE_BX_21A, SIMATIC_IPC_DEVICE_NONE},
};
static int register_platform_devices(u32 station_id)
@@ -72,6 +73,8 @@ static int register_platform_devices(u32 station_id)
pdevname = KBUILD_MODNAME "_leds_gpio_apollolake";
if (ledmode == SIMATIC_IPC_DEVICE_227G)
pdevname = KBUILD_MODNAME "_leds_gpio_f7188x";
+ if (ledmode == SIMATIC_IPC_DEVICE_BX_21A)
+ pdevname = KBUILD_MODNAME "_leds_gpio_elkhartlake";
platform_data.devmode = ledmode;
ipc_led_platform_device =
platform_device_register_data(NULL,
diff --git a/include/linux/platform_data/x86/simatic-ipc-base.h b/include/linux/platform_data/x86/simatic-ipc-base.h
index 57d6a10dfc9e..68c455f5edad 100644
--- a/include/linux/platform_data/x86/simatic-ipc-base.h
+++ b/include/linux/platform_data/x86/simatic-ipc-base.h
@@ -2,7 +2,7 @@
/*
* Siemens SIMATIC IPC drivers
*
- * Copyright (c) Siemens AG, 2018-2021
+ * Copyright (c) Siemens AG, 2018-2023
*
* Authors:
* Henning Schild <henning.schild@siemens.com>
@@ -20,6 +20,7 @@
#define SIMATIC_IPC_DEVICE_127E 3
#define SIMATIC_IPC_DEVICE_227E 4
#define SIMATIC_IPC_DEVICE_227G 5
+#define SIMATIC_IPC_DEVICE_BX_21A 6
struct simatic_ipc_platform {
u8 devmode;
diff --git a/include/linux/platform_data/x86/simatic-ipc.h b/include/linux/platform_data/x86/simatic-ipc.h
index a48bb5240977..1a8e4c1099e3 100644
--- a/include/linux/platform_data/x86/simatic-ipc.h
+++ b/include/linux/platform_data/x86/simatic-ipc.h
@@ -2,7 +2,7 @@
/*
* Siemens SIMATIC IPC drivers
*
- * Copyright (c) Siemens AG, 2018-2021
+ * Copyright (c) Siemens AG, 2018-2023
*
* Authors:
* Henning Schild <henning.schild@siemens.com>
@@ -34,6 +34,7 @@ enum simatic_ipc_station_ids {
SIMATIC_IPC_IPC227G = 0x00000F01,
SIMATIC_IPC_IPCBX_39A = 0x00001001,
SIMATIC_IPC_IPCPX_39A = 0x00001002,
+ SIMATIC_IPC_IPCBX_21A = 0x00001101,
};
static inline u32 simatic_ipc_get_station_id(u8 *data, int max_len)
--
2.41.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version
2023-07-13 11:56 [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Henning Schild
2023-07-13 11:56 ` [PATCH v2 1/2] platform/x86: simatic-ipc: add another " Henning Schild
@ 2023-07-13 11:56 ` Henning Schild
2023-07-28 8:58 ` (subset) " Lee Jones
2023-07-13 17:01 ` [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Andy Shevchenko
2 siblings, 1 reply; 6+ messages in thread
From: Henning Schild @ 2023-07-13 11:56 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, Hans de Goede, Mark Gross,
Andy Shevchenko, linux-kernel, linux-leds, platform-driver-x86
Cc: Tobias Schaffner, xingtong . wu, Henning Schild
This is used for the Siemens Simatic IPC BX-21A, which has its LEDs
connected to GPIOs provided by the Intel Elkhart Lake pinctrl driver.
Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
drivers/leds/simple/Kconfig | 13 +++++
drivers/leds/simple/Makefile | 1 +
.../leds/simple/simatic-ipc-leds-gpio-core.c | 4 ++
.../simatic-ipc-leds-gpio-elkhartlake.c | 57 +++++++++++++++++++
4 files changed, 75 insertions(+)
create mode 100644 drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c
diff --git a/drivers/leds/simple/Kconfig b/drivers/leds/simple/Kconfig
index 44fa0f93cb3b..626ab18ac09d 100644
--- a/drivers/leds/simple/Kconfig
+++ b/drivers/leds/simple/Kconfig
@@ -34,3 +34,16 @@ config LEDS_SIEMENS_SIMATIC_IPC_F7188X
To compile this driver as a module, choose M here: the module
will be called simatic-ipc-leds-gpio-f7188x.
+
+config LEDS_SIEMENS_SIMATIC_IPC_ELKHARTLAKE
+ tristate "LED driver for Siemens Simatic IPCs based on Intel Elkhart Lake GPIO"
+ depends on LEDS_GPIO
+ depends on PINCTRL_ELKHARTLAKE
+ depends on SIEMENS_SIMATIC_IPC
+ default LEDS_SIEMENS_SIMATIC_IPC
+ help
+ This option enables support for the LEDs of several Industrial PCs
+ from Siemens based on Elkhart Lake GPIO i.e. BX-21A.
+
+ To compile this driver as a module, choose M here: the module
+ will be called simatic-ipc-leds-gpio-elkhartlake.
diff --git a/drivers/leds/simple/Makefile b/drivers/leds/simple/Makefile
index e3e840cea275..783578f11bb0 100644
--- a/drivers/leds/simple/Makefile
+++ b/drivers/leds/simple/Makefile
@@ -2,3 +2,4 @@
obj-$(CONFIG_LEDS_SIEMENS_SIMATIC_IPC) += simatic-ipc-leds.o
obj-$(CONFIG_LEDS_SIEMENS_SIMATIC_IPC_APOLLOLAKE) += simatic-ipc-leds-gpio-core.o simatic-ipc-leds-gpio-apollolake.o
obj-$(CONFIG_LEDS_SIEMENS_SIMATIC_IPC_F7188X) += simatic-ipc-leds-gpio-core.o simatic-ipc-leds-gpio-f7188x.o
+obj-$(CONFIG_LEDS_SIEMENS_SIMATIC_IPC_ELKHARTLAKE) += simatic-ipc-leds-gpio-core.o simatic-ipc-leds-gpio-elkhartlake.o
diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
index 2a21b663df87..c552ea73ed9d 100644
--- a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
+++ b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
@@ -57,6 +57,7 @@ int simatic_ipc_leds_gpio_probe(struct platform_device *pdev,
switch (plat->devmode) {
case SIMATIC_IPC_DEVICE_127E:
case SIMATIC_IPC_DEVICE_227G:
+ case SIMATIC_IPC_DEVICE_BX_21A:
break;
default:
return -ENODEV;
@@ -72,6 +73,9 @@ int simatic_ipc_leds_gpio_probe(struct platform_device *pdev,
goto out;
}
+ if (!table_extra)
+ return 0;
+
table_extra->dev_id = dev_name(dev);
gpiod_add_lookup_table(table_extra);
diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c b/drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c
new file mode 100644
index 000000000000..6ba21dbb3ba0
--- /dev/null
+++ b/drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Siemens SIMATIC IPC driver for GPIO based LEDs
+ *
+ * Copyright (c) Siemens AG, 2023
+ *
+ * Author:
+ * Henning Schild <henning.schild@siemens.com>
+ */
+
+#include <linux/gpio/machine.h>
+#include <linux/gpio/consumer.h>
+#include <linux/leds.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/platform_data/x86/simatic-ipc-base.h>
+
+#include "simatic-ipc-leds-gpio.h"
+
+static struct gpiod_lookup_table simatic_ipc_led_gpio_table = {
+ .dev_id = "leds-gpio",
+ .table = {
+ GPIO_LOOKUP_IDX("INTC1020:04", 72, NULL, 0, GPIO_ACTIVE_HIGH),
+ GPIO_LOOKUP_IDX("INTC1020:04", 77, NULL, 1, GPIO_ACTIVE_HIGH),
+ GPIO_LOOKUP_IDX("INTC1020:04", 78, NULL, 2, GPIO_ACTIVE_HIGH),
+ GPIO_LOOKUP_IDX("INTC1020:04", 58, NULL, 3, GPIO_ACTIVE_HIGH),
+ GPIO_LOOKUP_IDX("INTC1020:04", 60, NULL, 4, GPIO_ACTIVE_HIGH),
+ GPIO_LOOKUP_IDX("INTC1020:04", 62, NULL, 5, GPIO_ACTIVE_HIGH),
+ {} /* Terminating entry */
+ },
+};
+
+static int simatic_ipc_leds_gpio_elkhartlake_probe(struct platform_device *pdev)
+{
+ return simatic_ipc_leds_gpio_probe(pdev, &simatic_ipc_led_gpio_table,
+ NULL);
+}
+
+static int simatic_ipc_leds_gpio_elkhartlake_remove(struct platform_device *pdev)
+{
+ return simatic_ipc_leds_gpio_remove(pdev, &simatic_ipc_led_gpio_table,
+ NULL);
+}
+
+static struct platform_driver simatic_ipc_led_gpio_elkhartlake_driver = {
+ .probe = simatic_ipc_leds_gpio_elkhartlake_probe,
+ .remove = simatic_ipc_leds_gpio_elkhartlake_remove,
+ .driver = {
+ .name = KBUILD_MODNAME,
+ },
+};
+module_platform_driver(simatic_ipc_led_gpio_elkhartlake_driver);
+
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" KBUILD_MODNAME);
+MODULE_SOFTDEP("pre: simatic-ipc-leds-gpio-core platform:elkhartlake-pinctrl");
+MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>");
--
2.41.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A
2023-07-13 11:56 [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Henning Schild
2023-07-13 11:56 ` [PATCH v2 1/2] platform/x86: simatic-ipc: add another " Henning Schild
2023-07-13 11:56 ` [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version Henning Schild
@ 2023-07-13 17:01 ` Andy Shevchenko
2 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2023-07-13 17:01 UTC (permalink / raw)
To: Henning Schild
Cc: Pavel Machek, Lee Jones, Hans de Goede, Mark Gross, linux-kernel,
linux-leds, platform-driver-x86, Tobias Schaffner, xingtong . wu
On Thu, Jul 13, 2023 at 01:56:37PM +0200, Henning Schild wrote:
> change since v1:
> - split into two patches to separate leds from platform code and ease
> merging
>
> These are rather simple patches adding LED support for yet another Simatic
> IPC model.
FWIW,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Henning Schild (2):
> platform/x86: simatic-ipc: add another model BX-21A
> leds: simatic-ipc-leds-gpio: add Elkhart Lake version
>
> drivers/leds/simple/Kconfig | 13 +++++
> drivers/leds/simple/Makefile | 1 +
> .../leds/simple/simatic-ipc-leds-gpio-core.c | 4 ++
> .../simatic-ipc-leds-gpio-elkhartlake.c | 57 +++++++++++++++++++
> drivers/platform/x86/simatic-ipc.c | 3 +
> .../platform_data/x86/simatic-ipc-base.h | 3 +-
> include/linux/platform_data/x86/simatic-ipc.h | 3 +-
> 7 files changed, 82 insertions(+), 2 deletions(-)
> create mode 100644 drivers/leds/simple/simatic-ipc-leds-gpio-elkhartlake.c
>
> --
> 2.41.0
>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] platform/x86: simatic-ipc: add another model BX-21A
2023-07-13 11:56 ` [PATCH v2 1/2] platform/x86: simatic-ipc: add another " Henning Schild
@ 2023-07-14 9:25 ` Hans de Goede
0 siblings, 0 replies; 6+ messages in thread
From: Hans de Goede @ 2023-07-14 9:25 UTC (permalink / raw)
To: Henning Schild, Pavel Machek, Lee Jones, Mark Gross,
Andy Shevchenko, linux-kernel, linux-leds, platform-driver-x86
Cc: Tobias Schaffner, xingtong . wu
Hi,
On 7/13/23 13:56, Henning Schild wrote:
> This adds support for the Siemens Simatic IPC model BX-21A. Actual
> drivers for that model will be sent in separate patches.
>
> Signed-off-by: Henning Schild <henning.schild@siemens.com>
Thank you. I've merged this into a new platform-drivers-x86-simatic-ipc
branch where I'm collecting all the pending platform/x86: simatic-ipc
work.
I'll tag + send a pull-request for Lee later today so that Lee
can merge the (immutable) tag and then apply 2/2 of this series
on top.
Regards,
Hans
> ---
> drivers/platform/x86/simatic-ipc.c | 3 +++
> include/linux/platform_data/x86/simatic-ipc-base.h | 3 ++-
> include/linux/platform_data/x86/simatic-ipc.h | 3 ++-
> 3 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/simatic-ipc.c b/drivers/platform/x86/simatic-ipc.c
> index c773995b230d..4402cd354104 100644
> --- a/drivers/platform/x86/simatic-ipc.c
> +++ b/drivers/platform/x86/simatic-ipc.c
> @@ -48,6 +48,7 @@ static struct {
> {SIMATIC_IPC_IPC477E, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_427E},
> {SIMATIC_IPC_IPCBX_39A, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G},
> {SIMATIC_IPC_IPCPX_39A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G},
> + {SIMATIC_IPC_IPCBX_21A, SIMATIC_IPC_DEVICE_BX_21A, SIMATIC_IPC_DEVICE_NONE},
> };
>
> static int register_platform_devices(u32 station_id)
> @@ -72,6 +73,8 @@ static int register_platform_devices(u32 station_id)
> pdevname = KBUILD_MODNAME "_leds_gpio_apollolake";
> if (ledmode == SIMATIC_IPC_DEVICE_227G)
> pdevname = KBUILD_MODNAME "_leds_gpio_f7188x";
> + if (ledmode == SIMATIC_IPC_DEVICE_BX_21A)
> + pdevname = KBUILD_MODNAME "_leds_gpio_elkhartlake";
> platform_data.devmode = ledmode;
> ipc_led_platform_device =
> platform_device_register_data(NULL,
> diff --git a/include/linux/platform_data/x86/simatic-ipc-base.h b/include/linux/platform_data/x86/simatic-ipc-base.h
> index 57d6a10dfc9e..68c455f5edad 100644
> --- a/include/linux/platform_data/x86/simatic-ipc-base.h
> +++ b/include/linux/platform_data/x86/simatic-ipc-base.h
> @@ -2,7 +2,7 @@
> /*
> * Siemens SIMATIC IPC drivers
> *
> - * Copyright (c) Siemens AG, 2018-2021
> + * Copyright (c) Siemens AG, 2018-2023
> *
> * Authors:
> * Henning Schild <henning.schild@siemens.com>
> @@ -20,6 +20,7 @@
> #define SIMATIC_IPC_DEVICE_127E 3
> #define SIMATIC_IPC_DEVICE_227E 4
> #define SIMATIC_IPC_DEVICE_227G 5
> +#define SIMATIC_IPC_DEVICE_BX_21A 6
>
> struct simatic_ipc_platform {
> u8 devmode;
> diff --git a/include/linux/platform_data/x86/simatic-ipc.h b/include/linux/platform_data/x86/simatic-ipc.h
> index a48bb5240977..1a8e4c1099e3 100644
> --- a/include/linux/platform_data/x86/simatic-ipc.h
> +++ b/include/linux/platform_data/x86/simatic-ipc.h
> @@ -2,7 +2,7 @@
> /*
> * Siemens SIMATIC IPC drivers
> *
> - * Copyright (c) Siemens AG, 2018-2021
> + * Copyright (c) Siemens AG, 2018-2023
> *
> * Authors:
> * Henning Schild <henning.schild@siemens.com>
> @@ -34,6 +34,7 @@ enum simatic_ipc_station_ids {
> SIMATIC_IPC_IPC227G = 0x00000F01,
> SIMATIC_IPC_IPCBX_39A = 0x00001001,
> SIMATIC_IPC_IPCPX_39A = 0x00001002,
> + SIMATIC_IPC_IPCBX_21A = 0x00001101,
> };
>
> static inline u32 simatic_ipc_get_station_id(u8 *data, int max_len)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: (subset) [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version
2023-07-13 11:56 ` [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version Henning Schild
@ 2023-07-28 8:58 ` Lee Jones
0 siblings, 0 replies; 6+ messages in thread
From: Lee Jones @ 2023-07-28 8:58 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, Hans de Goede, Mark Gross,
Andy Shevchenko, linux-kernel, linux-leds, platform-driver-x86,
Henning Schild
Cc: Tobias Schaffner, xingtong . wu
On Thu, 13 Jul 2023 13:56:39 +0200, Henning Schild wrote:
> This is used for the Siemens Simatic IPC BX-21A, which has its LEDs
> connected to GPIOs provided by the Intel Elkhart Lake pinctrl driver.
>
>
Applied, thanks!
[2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version
commit: 7e6d86e99a5dee6f81e39f1f6d57091503dc7593
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-07-28 8:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-13 11:56 [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Henning Schild
2023-07-13 11:56 ` [PATCH v2 1/2] platform/x86: simatic-ipc: add another " Henning Schild
2023-07-14 9:25 ` Hans de Goede
2023-07-13 11:56 ` [PATCH v2 2/2] leds: simatic-ipc-leds-gpio: add Elkhart Lake version Henning Schild
2023-07-28 8:58 ` (subset) " Lee Jones
2023-07-13 17:01 ` [PATCH v2 0/2] leds: simatic-ipc-leds-gpio: add new model BX-21A Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox