]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ARM: spitz: Use software nodes to describe LCD GPIOs
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 28 Jun 2024 18:08:47 +0000 (11:08 -0700)
committerArnd Bergmann <arnd@arndb.de>
Tue, 9 Jul 2024 13:21:15 +0000 (15:21 +0200)
Convert Spitz to use software nodes for specifying GPIOs for the LCD.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20240628180852.1738922-8-dmitry.torokhov@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-pxa/spitz.c

index 278d49ed7a9c74b0b8650fe2d29ba5566415c1f1..c79510185ce3589ea23d97da112c6e01f9355bda 100644 (file)
@@ -532,22 +532,24 @@ static struct gpiod_lookup_table spitz_ads7846_gpio_table = {
        },
 };
 
-static struct gpiod_lookup_table spitz_lcdcon_gpio_table = {
-       .dev_id = "spi2.1",
-       .table = {
-               GPIO_LOOKUP("sharp-scoop.1", 6, "BL_CONT", GPIO_ACTIVE_LOW),
-               GPIO_LOOKUP("sharp-scoop.1", 7, "BL_ON", GPIO_ACTIVE_HIGH),
-               { },
-       },
+static const struct property_entry spitz_lcdcon_props[] = {
+       PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
+                           &spitz_scoop_2_gpiochip_node, 6, GPIO_ACTIVE_LOW),
+       PROPERTY_ENTRY_GPIO("BL_ON-gpios",
+                           &spitz_scoop_2_gpiochip_node, 7, GPIO_ACTIVE_HIGH),
+       { }
 };
 
-static struct gpiod_lookup_table akita_lcdcon_gpio_table = {
-       .dev_id = "spi2.1",
-       .table = {
-               GPIO_LOOKUP("i2c-max7310", 3, "BL_ON", GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP("i2c-max7310", 4, "BL_CONT", GPIO_ACTIVE_LOW),
-               { },
-       },
+static const struct property_entry akita_lcdcon_props[] = {
+       PROPERTY_ENTRY_GPIO("BL_ON-gpios",
+                           &akita_max7310_gpiochip_node, 3, GPIO_ACTIVE_HIGH),
+       PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
+                           &akita_max7310_gpiochip_node, 4, GPIO_ACTIVE_LOW),
+       { }
+};
+
+static struct software_node spitz_lcdcon_node = {
+       .name = "spitz-lcdcon",
 };
 
 static struct corgi_lcd_platform_data spitz_lcdcon_info = {
@@ -572,6 +574,7 @@ static struct spi_board_info spitz_spi_devices[] = {
                .bus_num                = 2,
                .chip_select            = 1,
                .platform_data          = &spitz_lcdcon_info,
+               .swnode                 = &spitz_lcdcon_node,
        }, {
                .modalias               = "max1111",
                .max_speed_hz           = 450000,
@@ -606,11 +609,6 @@ static void __init spitz_spi_init(void)
        struct platform_device *pd;
        int err;
 
-       if (machine_is_akita())
-               gpiod_add_lookup_table(&akita_lcdcon_gpio_table);
-       else
-               gpiod_add_lookup_table(&spitz_lcdcon_gpio_table);
-
        gpiod_add_lookup_table(&spitz_ads7846_gpio_table);
 
        pd = platform_device_register_full(&spitz_spi_device_info);
@@ -619,6 +617,8 @@ static void __init spitz_spi_init(void)
                pr_err("pxa2xx-spi: failed to instantiate SPI controller: %d\n",
                       err);
 
+       spitz_lcdcon_node.properties = machine_is_akita() ?
+                                       akita_lcdcon_props : spitz_lcdcon_props;
        spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices));
 }
 #else