ARM: 9101/1: sa1100/assabet: convert LEDs to gpiod APIs
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 20 Jul 2021 15:50:43 +0000 (16:50 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Mon, 25 Oct 2021 12:11:54 +0000 (13:11 +0100)
Convert the Assabet LEDs to use the gpiod APIs.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/mach-sa1100/assabet.c

index 2012fa8..9919e0f 100644 (file)
@@ -84,7 +84,7 @@ void ASSABET_BCR_frob(unsigned int mask, unsigned int val)
 }
 EXPORT_SYMBOL(ASSABET_BCR_frob);
 
-static int __init assabet_init_gpio(void __iomem *reg, u32 def_val)
+static void __init assabet_init_gpio(void __iomem *reg, u32 def_val)
 {
        struct gpio_chip *gc;
 
@@ -94,11 +94,9 @@ static int __init assabet_init_gpio(void __iomem *reg, u32 def_val)
                           assabet_names, NULL, NULL);
 
        if (IS_ERR(gc))
-               return PTR_ERR(gc);
+               return;
 
        assabet_bcr_gc = gc;
-
-       return gc->base;
 }
 
 /*
@@ -475,16 +473,23 @@ static struct gpiod_lookup_table assabet_cf_vcc_gpio_table = {
        },
 };
 
+static struct gpiod_lookup_table assabet_leds_gpio_table = {
+       .dev_id = "leds-gpio",
+       .table = {
+               GPIO_LOOKUP("assabet", 13, NULL, GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP("assabet", 14, NULL, GPIO_ACTIVE_LOW),
+               { },
+       },
+};
+
 static struct gpio_led assabet_leds[] __initdata = {
        {
                .name = "assabet:red",
                .default_trigger = "cpu0",
-               .active_low = 1,
                .default_state = LEDS_GPIO_DEFSTATE_KEEP,
        }, {
                .name = "assabet:green",
                .default_trigger = "heartbeat",
-               .active_low = 1,
                .default_state = LEDS_GPIO_DEFSTATE_KEEP,
        },
 };
@@ -603,6 +608,7 @@ static void __init assabet_init(void)
                                          &assabet_keys_pdata,
                                          sizeof(assabet_keys_pdata));
 
+       gpiod_add_lookup_table(&assabet_leds_gpio_table);
        gpio_led_register_device(-1, &assabet_leds_pdata);
 
 #ifndef ASSABET_PAL_VIDEO
@@ -739,7 +745,6 @@ static void __init assabet_map_io(void)
 
 void __init assabet_init_irq(void)
 {
-       unsigned int assabet_gpio_base;
        u32 def_val;
 
        sa1100_init_irq();
@@ -754,10 +759,7 @@ void __init assabet_init_irq(void)
         *
         * This must precede any driver calls to BCR_set() or BCR_clear().
         */
-       assabet_gpio_base = assabet_init_gpio((void *)&ASSABET_BCR, def_val);
-
-       assabet_leds[0].gpio = assabet_gpio_base + 13;
-       assabet_leds[1].gpio = assabet_gpio_base + 14;
+       assabet_init_gpio((void *)&ASSABET_BCR, def_val);
 }
 
 MACHINE_START(ASSABET, "Intel-Assabet")