Re: [PATCH 1/1] leds: simatic-ipc-leds-gpio: add new model BX-21A

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Thu, 1 Jun 2023 10:53:48 +0200
schrieb Hans de Goede <hdegoede@xxxxxxxxxx>:

> Hi,
> 
> On 5/31/23 17:54, Henning Schild wrote:
> > This adds support for the Siemens Simatic IPC BX-21A. Its LEDs are
> > connected to GPIO pins provided by the Intel Elkhart Lake pinctrl
> > driver.
> > 
> > Signed-off-by: Henning Schild <henning.schild@xxxxxxxxxxx>  
> 
> Thank you for the patch.
> 
> Since this mostly touches files under drivers/leds I believe it would
> be best for this to be merged through Lee's LEDs tree.

Lee i saw that your tree got merged recently. This one was not yet part
of it.

Henning

> Here is my ack for merging the pdx86 bits through that tree:
> 
> Acked-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> 
> Regards,
> 
> Hans
> 
> 
> 
> 
> > ---
> >  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      |  1 +
> >  include/linux/platform_data/x86/simatic-ipc.h |  3 +-
> >  7 files changed, 81 insertions(+), 1 deletion(-)
> >  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@xxxxxxxxxxx>
> > + */
> > +
> > +#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@xxxxxxxxxxx>"); 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..00bf18ecb160 100644 ---
> > a/include/linux/platform_data/x86/simatic-ipc-base.h +++
> > b/include/linux/platform_data/x86/simatic-ipc-base.h @@ -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@xxxxxxxxxxx>
> > @@ -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)  
> 




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux