From: Arnd Bergmann Date: Mon, 27 Apr 2026 14:35:27 +0000 (+0200) Subject: ARM: s3c: use gpio lookup table for LEDs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b64cbd3f5d96b143fa9f21d84d381b1bb286339c;p=thirdparty%2Fkernel%2Flinux.git ARM: s3c: use gpio lookup table for LEDs The crag6410 board is one of the last users of the gpio-led driver with plain gpio numbers. The driver has several ways to pass this information without using gpio numbers, using a lookup table is the easiest way. Signed-off-by: Arnd Bergmann Reviewed-by: Bartosz Golaszewski Reviewed-by: Linus Walleij Link: https://patch.msgid.link/20260427143546.3098519-1-arnd@kernel.org Signed-off-by: Krzysztof Kozlowski --- diff --git a/arch/arm/mach-s3c/mach-crag6410.c b/arch/arm/mach-s3c/mach-crag6410.c index 028169c7debf3..c4040aad1ed30 100644 --- a/arch/arm/mach-s3c/mach-crag6410.c +++ b/arch/arm/mach-s3c/mach-crag6410.c @@ -779,46 +779,53 @@ static struct s3c_sdhci_platdata crag6410_hsmmc0_pdata = { static const struct gpio_led gpio_leds[] = { { .name = "d13:green:", - .gpio = MMGPIO_GPIO_BASE + 0, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d14:green:", - .gpio = MMGPIO_GPIO_BASE + 1, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d15:green:", - .gpio = MMGPIO_GPIO_BASE + 2, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d16:green:", - .gpio = MMGPIO_GPIO_BASE + 3, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d17:green:", - .gpio = MMGPIO_GPIO_BASE + 4, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d18:green:", - .gpio = MMGPIO_GPIO_BASE + 5, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d19:green:", - .gpio = MMGPIO_GPIO_BASE + 6, .default_state = LEDS_GPIO_DEFSTATE_ON, }, { .name = "d20:green:", - .gpio = MMGPIO_GPIO_BASE + 7, .default_state = LEDS_GPIO_DEFSTATE_ON, }, }; +static struct gpiod_lookup_table crag_leds_table = { + .dev_id = "leds-gpio", + .table = { + GPIO_LOOKUP_IDX("basic-mmio-gpio", 0, "cs", 0, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 1, "cs", 1, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 2, "cs", 2, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 3, "cs", 3, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 4, "cs", 4, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 5, "cs", 5, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 6, "cs", 6, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("basic-mmio-gpio", 7, "cs", 7, GPIO_ACTIVE_LOW), + { }, + }, +}; + static const struct gpio_led_platform_data gpio_leds_pdata = { .leds = gpio_leds, .num_leds = ARRAY_SIZE(gpio_leds), @@ -875,6 +882,7 @@ static void __init crag6410_machine_init(void) platform_add_devices(crag6410_devices, ARRAY_SIZE(crag6410_devices)); platform_device_register_full(&crag6410_mmgpio_devinfo); + gpiod_add_lookup_table(&crag_leds_table); gpio_led_register_device(-1, &gpio_leds_pdata); regulator_has_full_constraints();