All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee@kernel.org>
To: Xing Tong Wu <xingtong_wu@163.com>
Cc: Pavel Machek <pavel@ucw.cz>,
	linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org,
	Hans de Goede <hdegoede@redhat.com>,
	Xing Tong Wu <xingtong.wu@siemens.com>,
	Tobias Schaffner <tobias.schaffner@siemens.com>,
	Gerd Haeussler <gerd.haeussler.ext@siemens.com>,
	Henning Schild <henning@hennsch.de>
Subject: Re: [PATCH RESEND 1/1] leds: simatic-ipc-leds-gpio: add support for module BX-59A
Date: Thu, 8 Feb 2024 12:09:01 +0000	[thread overview]
Message-ID: <20240208120901.GL689448@google.com> (raw)
In-Reply-To: <20240204083048.2458-2-xingtong_wu@163.com>

On Sun, 04 Feb 2024, Xing Tong Wu wrote:

> From: Xing Tong Wu <xingtong.wu@siemens.com>
> 
> This is used for the Siemens Simatic IPC BX-59A, which has its LEDs
> connected to GPIOs provided by the Nuvoton NCT6126D
> 
> Signed-off-by: Xing Tong Wu <xingtong.wu@siemens.com>
> ---
>  .../leds/simple/simatic-ipc-leds-gpio-core.c  |  1 +
>  .../simple/simatic-ipc-leds-gpio-f7188x.c     | 42 ++++++++++++++++---
>  2 files changed, 37 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
> index 667ba1bc3a30..85003fd7f1aa 100644
> --- a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
> +++ b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c
> @@ -56,6 +56,7 @@ int simatic_ipc_leds_gpio_probe(struct platform_device *pdev,
>  	case SIMATIC_IPC_DEVICE_127E:
>  	case SIMATIC_IPC_DEVICE_227G:
>  	case SIMATIC_IPC_DEVICE_BX_21A:
> +	case SIMATIC_IPC_DEVICE_BX_59A:
>  		break;
>  	default:
>  		return -ENODEV;
> diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c b/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c
> index c7c3a1f986e6..783e74e9a805 100644
> --- a/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c
> +++ b/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c
> @@ -17,7 +17,10 @@
>  
>  #include "simatic-ipc-leds-gpio.h"
>  
> -static struct gpiod_lookup_table simatic_ipc_led_gpio_table = {
> +static struct gpiod_lookup_table *led_lookup_table;
> +static struct gpiod_lookup_table *led_lookup_table_extra;

No globals please.

Dynamically create them in .probe().

If you need to use them later use dev_{s,g}et_drvdata.

> +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_227g = {
>  	.dev_id = "leds-gpio",
>  	.table = {
>  		GPIO_LOOKUP_IDX("gpio-f7188x-2", 0, NULL, 0, GPIO_ACTIVE_LOW),
> @@ -30,7 +33,7 @@ static struct gpiod_lookup_table simatic_ipc_led_gpio_table = {
>  	},
>  };
>  
> -static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra = {
> +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra_227g = {
>  	.dev_id = NULL, /* Filled during initialization */
>  	.table = {
>  		GPIO_LOOKUP_IDX("gpio-f7188x-3", 6, NULL, 6, GPIO_ACTIVE_HIGH),
> @@ -39,16 +42,43 @@ static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra = {
>  	},
>  };
>  
> +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_bx_59a = {
> +	.dev_id = "leds-gpio",
> +	.table = {
> +		GPIO_LOOKUP_IDX("gpio-f7188x-2", 0, NULL, 0, GPIO_ACTIVE_LOW),
> +		GPIO_LOOKUP_IDX("gpio-f7188x-2", 3, NULL, 1, GPIO_ACTIVE_LOW),
> +		GPIO_LOOKUP_IDX("gpio-f7188x-5", 3, NULL, 2, GPIO_ACTIVE_LOW),
> +		GPIO_LOOKUP_IDX("gpio-f7188x-5", 2, NULL, 3, GPIO_ACTIVE_LOW),
> +		GPIO_LOOKUP_IDX("gpio-f7188x-7", 7, NULL, 4, GPIO_ACTIVE_LOW),
> +		GPIO_LOOKUP_IDX("gpio-f7188x-7", 4, NULL, 5, GPIO_ACTIVE_LOW),
> +		{} /* Terminating entry */
> +	}
> +};
> +
>  static int simatic_ipc_leds_gpio_f7188x_probe(struct platform_device *pdev)
>  {
> -	return simatic_ipc_leds_gpio_probe(pdev, &simatic_ipc_led_gpio_table,
> -					   &simatic_ipc_led_gpio_table_extra);
> +	const struct simatic_ipc_platform *plat = pdev->dev.platform_data;
> +
> +	switch (plat->devmode) {
> +	case SIMATIC_IPC_DEVICE_227G:
> +		led_lookup_table = &simatic_ipc_led_gpio_table_227g;
> +		led_lookup_table_extra = &simatic_ipc_led_gpio_table_extra_227g;
> +		break;
> +	case SIMATIC_IPC_DEVICE_BX_59A:
> +		led_lookup_table = &simatic_ipc_led_gpio_table_bx_59a;
> +		break;
> +	default:
> +		return -ENODEV;
> +	}
> +
> +	return simatic_ipc_leds_gpio_probe(pdev, led_lookup_table,
> +					   led_lookup_table_extra);
>  }
>  
>  static void simatic_ipc_leds_gpio_f7188x_remove(struct platform_device *pdev)
>  {
> -	simatic_ipc_leds_gpio_remove(pdev, &simatic_ipc_led_gpio_table,
> -				     &simatic_ipc_led_gpio_table_extra);
> +	simatic_ipc_leds_gpio_remove(pdev, led_lookup_table,
> +				     led_lookup_table_extra);
>  }
>  
>  static struct platform_driver simatic_ipc_led_gpio_driver = {
> -- 
> 2.25.1
> 

-- 
Lee Jones [李琼斯]

  reply	other threads:[~2024-02-08 12:09 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-04  8:30 [PATCH RESEND 0/1] Patch Resent: Enabling LED Support for Siemens IPC BX-59A Xing Tong Wu
2024-02-04  8:30 ` [PATCH RESEND 1/1] leds: simatic-ipc-leds-gpio: add support for module BX-59A Xing Tong Wu
2024-02-08 12:09   ` Lee Jones [this message]
2024-02-18  6:28     ` [RESEND PATCH v2 0/1] Patch Resent: Enabling LED Support for Siemens IPC BX-59A Xing Tong Wu
2024-02-18  6:28       ` [RESEND PATCH v2 1/1] leds: simatic-ipc-leds-gpio: add support for module BX-59A Xing Tong Wu
2024-02-22 21:40         ` andy.shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240208120901.GL689448@google.com \
    --to=lee@kernel.org \
    --cc=gerd.haeussler.ext@siemens.com \
    --cc=hdegoede@redhat.com \
    --cc=henning@hennsch.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=tobias.schaffner@siemens.com \
    --cc=xingtong.wu@siemens.com \
    --cc=xingtong_wu@163.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.