At 2023-07-31 15:18:33, xingtong_wu@xxxxxxx wrote: >From: "xingtong.wu" <xingtong.wu@xxxxxxxxxxx> > >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: xingtong.wu <xingtong.wu@xxxxxxxxxxx> >--- > .../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 c552ea73ed9d..10dca208d8cc 100644 >--- a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c >+++ b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c >@@ -58,6 +58,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 583a6b6c7c22..a5b544b20857 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; >+ >+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 int simatic_ipc_leds_gpio_f7188x_remove(struct platform_device *pdev) > { >- return simatic_ipc_leds_gpio_remove(pdev, &simatic_ipc_led_gpio_table, >- &simatic_ipc_led_gpio_table_extra); >+ return 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 Hi After engaging in a thorough discussion, it appears that we have reached a consensus to merge this patch. Considering the considerable duration that has passed, I am sending this email as a gentle reminder, in case there is a possibility that it may have slipped your mind. XingTong