ARM: pxa: move PXA_GPIO_TO_IRQ macro
authorHaojian Zhuang <haojian.zhuang@linaro.org>
Tue, 9 Apr 2013 10:12:04 +0000 (18:12 +0800)
committerHaojian Zhuang <haojian.zhuang@linaro.org>
Thu, 11 Apr 2013 02:00:05 +0000 (10:00 +0800)
Since PXA_GPIO_TO_IRQ() & MMP_GPIO_TO_IRQ() macro are depended on
arch code, move them from gpio driver to platform driver instead.

Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
15 files changed:
arch/arm/mach-mmp/aspenite.c
arch/arm/mach-mmp/avengers_lite.c
arch/arm/mach-mmp/brownstone.c
arch/arm/mach-mmp/flint.c
arch/arm/mach-mmp/gplugd.c
arch/arm/mach-mmp/jasper.c
arch/arm/mach-mmp/tavorevb.c
arch/arm/mach-mmp/teton_bga.c
arch/arm/mach-mmp/ttc_dkb.c
arch/arm/mach-pxa/pxa25x.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa3xx.c
arch/arm/mach-pxa/pxa930.c
drivers/gpio/gpio-pxa.c
include/linux/gpio-pxa.h

index 9f64d5632e07af34ab02e2f67ed07937c98ac77b..fa21aac52467f9bd564ab6489920f4760507a3a0 100644 (file)
@@ -9,6 +9,7 @@
  *  publishhed by the Free Software Foundation.
  */
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
@@ -110,6 +111,10 @@ static unsigned long common_pin_config[] __initdata = {
        GPIO121_KP_MKIN4,
 };
 
+static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct smc91x_platdata smc91x_info = {
        .flags  = SMC91X_USE_16BIT | SMC91X_NOWAIT,
 };
@@ -248,6 +253,8 @@ static void __init common_init(void)
        pxa168_add_nand(&aspenite_nand_info);
        pxa168_add_fb(&aspenite_lcd_info);
        pxa168_add_keypad(&aspenite_keypad_info);
+       platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&pxa168_device_gpio);
 
        /* off-chip devices */
index 1f94957b56ae430eecd43b612bd373f39d02f0f5..a451a0f4d512ccca07f813d55e46ceaadd8ee43d 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <linux/init.h>
 #include <linux/kernel.h>
+#include <linux/gpio-pxa.h>
 #include <linux/platform_device.h>
 
 #include <asm/mach-types.h>
@@ -32,12 +33,18 @@ static unsigned long avengers_lite_pin_config_V16F[] __initdata = {
        GPIO89_UART2_RXD,
 };
 
+static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static void __init avengers_lite_init(void)
 {
        mfp_config(ARRAY_AND_SIZE(avengers_lite_pin_config_V16F));
 
        /* on-chip devices */
        pxa168_add_uart(2);
+       platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&pxa168_device_gpio);
 }
 
index 2358011c7d8ec7e96f24352d9331673fb455e8a4..ac25544b8cdb15bddeec7472508fb0165d2e26f0 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/gpio-pxa.h>
 #include <linux/regulator/machine.h>
 #include <linux/regulator/max8649.h>
 #include <linux/regulator/fixed.h>
@@ -104,6 +105,10 @@ static unsigned long brownstone_pin_config[] __initdata = {
        GPIO89_GPIO,
 };
 
+static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct regulator_consumer_supply max8649_supply[] = {
        REGULATOR_SUPPLY("vcc_core", NULL),
 };
@@ -202,6 +207,8 @@ static void __init brownstone_init(void)
        /* on-chip devices */
        mmp2_add_uart(1);
        mmp2_add_uart(3);
+       platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&mmp2_device_gpio);
        mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info));
        mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */
index 754c352dd02b0c184c1b1adf134b79a3760b774d..6291c33d83e26cef825fcd6c1cf96ad024a5ce93 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/smc91x.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/interrupt.h>
 
 #include <asm/mach-types.h>
@@ -77,6 +78,10 @@ static unsigned long flint_pin_config[] __initdata = {
        GPIO160_ND_RDY1,
 };
 
+static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct smc91x_platdata flint_smc91x_info = {
        .flags  = SMC91X_USE_16BIT | SMC91X_NOWAIT,
 };
@@ -111,6 +116,8 @@ static void __init flint_init(void)
        /* on-chip devices */
        mmp2_add_uart(1);
        mmp2_add_uart(2);
+       platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&mmp2_device_gpio);
 
        /* off-chip devices */
index f62b68d926f4237bf70911ba43487d27c98d4e97..d81b2475e67e547cb5009a666b6caf779b300cb1 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 
 #include <asm/mach/arch.h>
 #include <asm/mach-types.h>
@@ -128,6 +129,10 @@ static unsigned long gplugd_pin_config[] __initdata = {
        GPIO116_I2S_TXD
 };
 
+static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct i2c_board_info gplugd_i2c_board_info[] = {
        {
                .type = "isl1208",
@@ -186,6 +191,8 @@ static void __init gplugd_init(void)
        pxa168_add_uart(3);
        pxa168_add_ssp(1);
        pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info));
+       platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&pxa168_device_gpio);
 
        pxa168_add_eth(&gplugd_eth_platform_data);
index 66634fd0ecb092991c8be85e155dd1f066800ad0..0e9e5c05b37c242a532deda65d50bbfe7dbfa5a8 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <linux/init.h>
 #include <linux/kernel.h>
+#include <linux/gpio-pxa.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/regulator/machine.h>
@@ -99,6 +100,10 @@ static unsigned long jasper_pin_config[] __initdata = {
        GPIO151_MMC3_CLK,
 };
 
+static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct regulator_consumer_supply max8649_supply[] = {
        REGULATOR_SUPPLY("vcc_core", NULL),
 };
@@ -165,6 +170,9 @@ static void __init jasper_init(void)
        mmp2_add_uart(1);
        mmp2_add_uart(3);
        mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(jasper_twsi1_info));
+       platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
+       platform_device_register(&mmp2_device_gpio);
        mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */
 
        regulator_has_full_constraints();
index 4c127d23955da3419ebb9cf7fc57d23944870a0a..cdfc9bfee1a4c1f9526bfdff4a6d566efbcb33a0 100644 (file)
@@ -8,6 +8,7 @@
  *  publishhed by the Free Software Foundation.
  */
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
@@ -60,6 +61,10 @@ static unsigned long tavorevb_pin_config[] __initdata = {
        DF_RDY0_DF_RDY0,
 };
 
+static struct pxa_gpio_platform_data pxa910_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct smc91x_platdata tavorevb_smc91x_info = {
        .flags  = SMC91X_USE_16BIT | SMC91X_NOWAIT,
 };
@@ -93,6 +98,8 @@ static void __init tavorevb_init(void)
 
        /* on-chip devices */
        pxa910_add_uart(1);
+       platform_device_add_data(&pxa910_device_gpio, &pxa910_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&pxa910_device_gpio);
 
        /* off-chip devices */
index 8609967975ed9039e56b643ddd07ee52e0e3b12a..e4d95b4c6bb272a427c5e4d6dae3cb7676b11ae9 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/input.h>
 #include <linux/platform_data/keypad-pxa27x.h>
 #include <linux/i2c.h>
@@ -49,6 +50,10 @@ static unsigned long teton_bga_pin_config[] __initdata = {
        GPIO78_GPIO,
 };
 
+static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static unsigned int teton_bga_matrix_key_map[] = {
        KEY(0, 6, KEY_ESC),
        KEY(0, 7, KEY_ENTER),
@@ -79,6 +84,8 @@ static void __init teton_bga_init(void)
        pxa168_add_uart(1);
        pxa168_add_keypad(&teton_bga_keypad_info);
        pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info));
+       platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_device_register(&pxa168_device_gpio);
 }
 
index 22a9058f9f4de1fdf3f413596c1dc7473881c7cc..6aa78887292189a597e9b37b39fbf464839edeaf 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/interrupt.h>
 #include <linux/i2c/pca953x.h>
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/mfd/88pm860x.h>
 #include <linux/platform_data/mv_usb.h>
 #include <linux/spi/spi.h>
@@ -75,6 +76,10 @@ static unsigned long ttc_dkb_pin_config[] __initdata = {
        DF_RDY0_DF_RDY0,
 };
 
+static struct pxa_gpio_platform_data pxa910_gpio_pdata = {
+       .irq_base       = MMP_GPIO_TO_IRQ(0),
+};
+
 static struct mtd_partition ttc_dkb_onenand_partitions[] = {
        {
                .name           = "bootloader",
@@ -284,6 +289,8 @@ static void __init ttc_dkb_init(void)
 
        /* off-chip devices */
        pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info));
+       platform_device_add_data(&pxa910_device_gpio, &pxa910_gpio_pdata,
+                                sizeof(struct pxa_gpio_platform_data));
        platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices));
 
 #ifdef CONFIG_USB_MV_UDC
index e31a8812cf0da08a5ddf4de150a4a7a95324f5a8..f2c28972084d92e9dbb74aca91804a093534093b 100644 (file)
@@ -344,7 +344,8 @@ void __init pxa25x_map_io(void)
 }
 
 static struct pxa_gpio_platform_data pxa25x_gpio_info __initdata = {
-       .gpio_set_wake = gpio_set_wake,
+       .irq_base       = PXA_GPIO_TO_IRQ(0),
+       .gpio_set_wake  = gpio_set_wake,
 };
 
 static struct platform_device *pxa25x_devices[] __initdata = {
index 7635ec5c9a1dfd32724c72ec9b5043956914b4c6..301471a07a109256fecdb054ab18f297620bfe49 100644 (file)
@@ -431,7 +431,8 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
 }
 
 static struct pxa_gpio_platform_data pxa27x_gpio_info __initdata = {
-       .gpio_set_wake = gpio_set_wake,
+       .irq_base       = PXA_GPIO_TO_IRQ(0),
+       .gpio_set_wake  = gpio_set_wake,
 };
 
 static struct platform_device *devices[] __initdata = {
index 572666a1e4a81c70194fddfe294f8e407cbf950d..87011f3de69d6daa8e55030200c4dbfe57ffdf92 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/gpio-pxa.h>
 #include <linux/pm.h>
 #include <linux/platform_device.h>
 #include <linux/irq.h>
@@ -436,6 +437,10 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info)
        pxa_register_device(&pxa3xx_device_i2c_power, info);
 }
 
+static struct pxa_gpio_platform_data pxa3xx_gpio_pdata = {
+       .irq_base       = PXA_GPIO_TO_IRQ(0),
+};
+
 static struct platform_device *devices[] __initdata = {
        &pxa27x_device_udc,
        &pxa_device_pmu,
@@ -488,8 +493,12 @@ static int __init pxa3xx_init(void)
                ret = platform_add_devices(devices, ARRAY_SIZE(devices));
                if (ret)
                        return ret;
-               if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320())
+               if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320()) {
+                       platform_device_add_data(&pxa3xx_device_gpio,
+                                                &pxa3xx_gpio_pdata,
+                                                sizeof(pxa3xx_gpio_pdata));
                        ret = platform_device_register(&pxa3xx_device_gpio);
+               }
        }
 
        return ret;
index 4693a78948aad959d11d5e7748b6f92f2f31227b..ab624487cf39d3d8cf346f82c73518b08a6a7839 100644 (file)
 
 #include <linux/module.h>
 #include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/irq.h>
 #include <linux/dma-mapping.h>
+#include <linux/irq.h>
+#include <linux/gpio-pxa.h>
+#include <linux/platform_device.h>
 
 #include <mach/pxa930.h>
 
@@ -192,6 +193,10 @@ static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = {
        MFP_ADDR_END,
 };
 
+static struct pxa_gpio_platform_data pxa93x_gpio_pdata = {
+       .irq_base       = PXA_GPIO_TO_IRQ(0),
+};
+
 static int __init pxa930_init(void)
 {
        int ret = 0;
@@ -199,6 +204,9 @@ static int __init pxa930_init(void)
        if (cpu_is_pxa93x()) {
                mfp_init_base(io_p2v(MFPR_BASE));
                mfp_init_addr(pxa930_mfp_addr_map);
+               platform_device_add_data(&pxa93x_device_gpio,
+                                        &pxa93x_gpio_pdata,
+                                        sizeof(pxa93x_gpio_pdata));
                ret = platform_device_register(&pxa93x_device_gpio);
        }
 
index fe74b0cc2bcbc8fdc032c0ed9562c4f0bceec1ba..a0905b20f48e896e4cc99eb0689e83f0bc1dd6e2 100644 (file)
@@ -574,19 +574,18 @@ static int pxa_gpio_probe(struct platform_device *pdev)
        int gpio, irq, ret, use_of = 0;
        int irq0 = 0, irq1 = 0, irq_mux, gpio_offset = 0;
 
-       ret = pxa_gpio_probe_dt(pdev);
-       if (ret < 0) {
+       info = dev_get_platdata(&pdev->dev);
+       if (info) {
+               irq_base = info->irq_base;
+               if (irq_base <= 0)
+                       return -EINVAL;
                pxa_last_gpio = pxa_gpio_nums(pdev);
-#ifdef CONFIG_ARCH_PXA
-               if (gpio_is_pxa_type(gpio_type))
-                       irq_base = PXA_GPIO_TO_IRQ(0);
-#endif
-#ifdef CONFIG_ARCH_MMP
-               if (gpio_is_mmp_type(gpio_type))
-                       irq_base = MMP_GPIO_TO_IRQ(0);
-#endif
        } else {
+               irq_base = 0;
                use_of = 1;
+               ret = pxa_gpio_probe_dt(pdev);
+               if (ret < 0)
+                       return -EINVAL;
        }
 
        if (!pxa_last_gpio)
@@ -623,7 +622,6 @@ static int pxa_gpio_probe(struct platform_device *pdev)
        }
 
        /* Initialize GPIO chips */
-       info = dev_get_platdata(&pdev->dev);
        pxa_init_gpio_chip(pxa_last_gpio, info ? info->gpio_set_wake : NULL);
 
        /* clear all GPIO edge detects */
index d755b28ba63541cc1f803993573c66aa3870eed5..d90ebbe02ca4b257ff00a7a628f34aaef25ab3be 100644 (file)
@@ -14,6 +14,7 @@ extern int pxa_last_gpio;
 extern int pxa_irq_to_gpio(int irq);
 
 struct pxa_gpio_platform_data {
+       int irq_base;
        int (*gpio_set_wake)(unsigned int gpio, unsigned int on);
 };