ARM: pxa: consolidate GPIO chip platform data
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 28 Jun 2024 18:08:42 +0000 (11:08 -0700)
committerArnd Bergmann <arnd@arndb.de>
Tue, 9 Jul 2024 13:21:15 +0000 (15:21 +0200)
The platform data for the GPIO controllers for the boards using non-DT
setup is the same between PXA25x (gumstix) and PXA27x (Spitz) devices.
Move it into devices.c to consolidate code. It will help with conversion
to software nodes/properties.

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-3-dmitry.torokhov@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-pxa/devices.c
arch/arm/mach-pxa/pxa25x.c
arch/arm/mach-pxa/pxa27x.c

index 1e4cd502340ecef2d53c0f72729f6f0afe148ba1..7cc6db2d1615c8471ee6f68ad23a62b985241f22 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/clk-provider.h>
 #include <linux/dma-mapping.h>
 #include <linux/dmaengine.h>
+#include <linux/gpio-pxa.h>
 #include <linux/platform_data/i2c-pxa.h>
 #include <linux/soc/pxa/cpu.h>
 
@@ -17,6 +18,7 @@
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/mmp_dma.h>
 
+#include "mfp-pxa2xx.h"
 #include "regs-ost.h"
 #include "reset.h"
 #include "devices.h"
@@ -650,11 +652,19 @@ struct resource pxa_resource_gpio[] = {
        },
 };
 
+static struct pxa_gpio_platform_data pxa2xx_gpio_info = {
+       .irq_base       = PXA_GPIO_TO_IRQ(0),
+       .gpio_set_wake  = gpio_set_wake,
+};
+
 struct platform_device pxa25x_device_gpio = {
        .name           = "pxa25x-gpio",
        .id             = -1,
        .num_resources  = ARRAY_SIZE(pxa_resource_gpio),
        .resource       = pxa_resource_gpio,
+       .dev            = {
+               .platform_data  = &pxa2xx_gpio_info,
+       },
 };
 
 struct platform_device pxa27x_device_gpio = {
@@ -662,6 +672,9 @@ struct platform_device pxa27x_device_gpio = {
        .id             = -1,
        .num_resources  = ARRAY_SIZE(pxa_resource_gpio),
        .resource       = pxa_resource_gpio,
+       .dev            = {
+               .platform_data  = &pxa2xx_gpio_info,
+       },
 };
 
 static struct resource pxa_dma_resource[] = {
index 02712d24be829c29b6d05086ce380fd0f940dd72..2ab3d8d664668630c626ae758172137463bb064b 100644 (file)
@@ -178,12 +178,8 @@ void __init pxa25x_map_io(void)
        pxa25x_get_clk_frequency_khz(1);
 }
 
-static struct pxa_gpio_platform_data pxa25x_gpio_info __initdata = {
-       .irq_base       = PXA_GPIO_TO_IRQ(0),
-       .gpio_set_wake  = gpio_set_wake,
-};
-
 static struct platform_device *pxa25x_devices[] __initdata = {
+       &pxa25x_device_gpio,
        &pxa25x_device_udc,
        &pxa_device_pmu,
        &pxa_device_i2s,
@@ -244,7 +240,6 @@ static int __init pxa25x_init(void)
 
                if (!of_have_populated_dt()) {
                        pxa2xx_set_dmac_info(&pxa25x_dma_pdata);
-                       pxa_register_device(&pxa25x_device_gpio, &pxa25x_gpio_info);
                        ret = platform_add_devices(pxa25x_devices,
                                                   ARRAY_SIZE(pxa25x_devices));
                }
index d71491e2e1d6eec4c7c7a6c3c788fa43ceb77803..b135b9ef665c0ba0c383cf7e1a22b5e97572539f 100644 (file)
@@ -276,12 +276,8 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
        pxa_register_device(&pxa27x_device_i2c_power, info);
 }
 
-static struct pxa_gpio_platform_data pxa27x_gpio_info __initdata = {
-       .irq_base       = PXA_GPIO_TO_IRQ(0),
-       .gpio_set_wake  = gpio_set_wake,
-};
-
 static struct platform_device *devices[] __initdata = {
+       &pxa27x_device_gpio,
        &pxa27x_device_udc,
        &pxa_device_pmu,
        &pxa_device_i2s,
@@ -345,8 +341,6 @@ static int __init pxa27x_init(void)
                register_syscore_ops(&pxa2xx_mfp_syscore_ops);
 
                if (!of_have_populated_dt()) {
-                       pxa_register_device(&pxa27x_device_gpio,
-                                           &pxa27x_gpio_info);
                        pxa2xx_set_dmac_info(&pxa27x_dma_pdata);
                        ret = platform_add_devices(devices,
                                                   ARRAY_SIZE(devices));