ARM: orion5x: Convert TS409 board to GPIO descriptors for LEDs
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 23 Apr 2024 13:54:01 +0000 (15:54 +0200)
committerGregory CLEMENT <gregory.clement@bootlin.com>
Sun, 5 May 2024 16:18:18 +0000 (18:18 +0200)
This makes the LEDs on the TS409 Orion5x board use GPIO
descriptors instead of hardcoded GPIOs from the global
numberspace.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
arch/arm/mach-orion5x/ts409-setup.c

index 6f60dc1dfa22891d82a430db5829c18c8e9b14b0..8131982c10d97e0a477b6266fd0ffdcf10e22139 100644 (file)
@@ -8,6 +8,7 @@
  * Copyright (C) 2008  Martin Michlmayr <tbm@cyrius.com>
  */
 #include <linux/gpio.h>
+#include <linux/gpio/machine.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
@@ -168,20 +169,27 @@ static struct i2c_board_info __initdata qnap_ts409_i2c_rtc = {
 static struct gpio_led ts409_led_pins[] = {
        {
                .name           = "ts409:red:sata1",
-               .gpio           = 4,
-               .active_low     = 1,
        }, {
                .name           = "ts409:red:sata2",
-               .gpio           = 5,
-               .active_low     = 1,
        }, {
                .name           = "ts409:red:sata3",
-               .gpio           = 6,
-               .active_low     = 1,
        }, {
                .name           = "ts409:red:sata4",
-               .gpio           = 7,
-               .active_low     = 1,
+       },
+};
+
+static struct gpiod_lookup_table ts409_leds_gpio_table = {
+       .dev_id = "leds-gpio",
+       .table = {
+               GPIO_LOOKUP_IDX("orion_gpio0", 4, NULL,
+                               0, GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP_IDX("orion_gpio0", 5, NULL,
+                               1, GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP_IDX("orion_gpio0", 6, NULL,
+                               2, GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP_IDX("orion_gpio0", 7, NULL,
+                               3, GPIO_ACTIVE_LOW),
+               { },
        },
 };
 
@@ -300,6 +308,7 @@ static void __init qnap_ts409_init(void)
        if (qnap_ts409_i2c_rtc.irq == 0)
                pr_warn("qnap_ts409_init: failed to get RTC IRQ\n");
        i2c_register_board_info(0, &qnap_ts409_i2c_rtc, 1);
+       gpiod_add_lookup_table(&ts409_leds_gpio_table);
        platform_device_register(&ts409_leds);
 
        /* register tsx09 specific power-off method */