Message ID | 20231001-pxa-gpio-v4-2-0f3b975e6ed5@skole.hr |
---|---|
State | Superseded |
Headers | show |
Series | ARM: pxa: GPIO descriptor conversions | expand |
On Sun, Oct 1, 2023 at 5:13 PM Duje Mihanović <duje.mihanovic@skole.hr> wrote: > > Sharp's Spitz board still uses the legacy GPIO interface for configuring > its two onboard LEDs. > > Convert them to use the GPIO descriptor interface. ... > static void __init spitz_leds_init(void) > { > + gpiod_add_lookup_table(&spitz_led_gpio_table); > platform_device_register(&spitz_led_device); > + spitz_gpio_leds[0].gpiod = gpiod_get_index(&spitz_led_device.dev, > + NULL, 0, GPIOD_ASIS); > + spitz_gpio_leds[1].gpiod = gpiod_get_index(&spitz_led_device.dev, > + NULL, 1, GPIOD_ASIS); > } What's the point of keeping a lookup table after we got descriptors out of it?
On Sun, Oct 1, 2023 at 4:35 PM Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > > On Sun, Oct 1, 2023 at 5:13 PM Duje Mihanović <duje.mihanovic@skole.hr> wrote: > > > > Sharp's Spitz board still uses the legacy GPIO interface for configuring > > its two onboard LEDs. > > > > Convert them to use the GPIO descriptor interface. > > ... > > > static void __init spitz_leds_init(void) > > { > > + gpiod_add_lookup_table(&spitz_led_gpio_table); > > platform_device_register(&spitz_led_device); > > + spitz_gpio_leds[0].gpiod = gpiod_get_index(&spitz_led_device.dev, > > + NULL, 0, GPIOD_ASIS); > > + spitz_gpio_leds[1].gpiod = gpiod_get_index(&spitz_led_device.dev, > > + NULL, 1, GPIOD_ASIS); > > } > > What's the point of keeping a lookup table after we got descriptors out of it? > Normally the descriptors would be retrieved in drivers and so lookup tables should stay in memory forever as static resources (just like device-tree). We have recently added some "temporary" lookup tables to address even worse hacks. The tables would be removed immediately after the descriptor is retrieved simply because we used that hack in drivers which may be unbound and re-bound resulting in adding repeating lookup entries. Here we're dealing with a board-file so a more classic approach of having static lookup tables added once and never removed is in order. So I'd leave it like this. Bart
On Sun, Oct 1, 2023 at 4:13 PM Duje Mihanović <duje.mihanovic@skole.hr> wrote: > Sharp's Spitz board still uses the legacy GPIO interface for configuring > its two onboard LEDs. > > Convert them to use the GPIO descriptor interface. > > Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr> LGTM: Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 535e2b2e997b..b6a4085e9fb0 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -452,16 +452,25 @@ static inline void spitz_keys_init(void) {} * LEDs ******************************************************************************/ #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) +static struct gpiod_lookup_table spitz_led_gpio_table = { + .dev_id = "leds-gpio", + .table = { + GPIO_LOOKUP_IDX("pxa-gpio", SPITZ_GPIO_LED_ORANGE, NULL, 0, + GPIO_ACTIVE_HIGH), + GPIO_LOOKUP_IDX("pxa-gpio", SPITZ_GPIO_LED_GREEN, NULL, 1, + GPIO_ACTIVE_HIGH), + { } + } +}; + static struct gpio_led spitz_gpio_leds[] = { { .name = "spitz:amber:charge", .default_trigger = "sharpsl-charge", - .gpio = SPITZ_GPIO_LED_ORANGE, }, { .name = "spitz:green:hddactivity", .default_trigger = "disk-activity", - .gpio = SPITZ_GPIO_LED_GREEN, }, }; @@ -480,7 +489,12 @@ static struct platform_device spitz_led_device = { static void __init spitz_leds_init(void) { + gpiod_add_lookup_table(&spitz_led_gpio_table); platform_device_register(&spitz_led_device); + spitz_gpio_leds[0].gpiod = gpiod_get_index(&spitz_led_device.dev, + NULL, 0, GPIOD_ASIS); + spitz_gpio_leds[1].gpiod = gpiod_get_index(&spitz_led_device.dev, + NULL, 1, GPIOD_ASIS); } #else static inline void spitz_leds_init(void) {}
Sharp's Spitz board still uses the legacy GPIO interface for configuring its two onboard LEDs. Convert them to use the GPIO descriptor interface. Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr> --- arch/arm/mach-pxa/spitz.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)