diff options
author | Haojian Zhuang <haojian.zhuang@linaro.org> | 2013-04-07 04:44:33 -0400 |
---|---|---|
committer | Haojian Zhuang <haojian.zhuang@linaro.org> | 2013-04-10 21:59:23 -0400 |
commit | 2cab0292285ce3180224c130d2fb1104aee44ff1 (patch) | |
tree | a3f8bea618053618e7e1461b743ac7cb6e444454 | |
parent | 31880c37c11e28cb81c70757e38392b42e695dc6 (diff) |
ARM: pxa: remove cpu_is_xxx in gpio driver
Avoid to use cpu_is_xxx() in pxa gpio driver. Use platform_device_id
to identify the difference.
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | arch/arm/mach-mmp/clock-mmp2.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/clock-pxa168.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/clock-pxa910.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/mmp-dt.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-mmp/mmp2-dt.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/mmp2.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/pxa168.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/pxa910.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/devices.c | 29 | ||||
-rw-r--r-- | arch/arm/mach-pxa/devices.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa27x.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa3xx.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa930.c | 5 | ||||
-rw-r--r-- | drivers/clk/mmp/clk-mmp2.c | 2 | ||||
-rw-r--r-- | drivers/clk/mmp/clk-pxa168.c | 2 | ||||
-rw-r--r-- | drivers/clk/mmp/clk-pxa910.c | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-pxa.c | 106 |
18 files changed, 140 insertions, 56 deletions
diff --git a/arch/arm/mach-mmp/clock-mmp2.c b/arch/arm/mach-mmp/clock-mmp2.c index 21d22002cd19..53d77cbd6000 100644 --- a/arch/arm/mach-mmp/clock-mmp2.c +++ b/arch/arm/mach-mmp/clock-mmp2.c | |||
@@ -98,7 +98,7 @@ static struct clk_lookup mmp2_clkregs[] = { | |||
98 | INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), | 98 | INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), |
99 | INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), | 99 | INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), |
100 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 100 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
101 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | 101 | INIT_CLKREG(&clk_gpio, "mmp2-gpio", NULL), |
102 | INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), | 102 | INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), |
103 | INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), | 103 | INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), |
104 | INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), | 104 | INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), |
diff --git a/arch/arm/mach-mmp/clock-pxa168.c b/arch/arm/mach-mmp/clock-pxa168.c index 5e6c18ccebd4..c572f219ae26 100644 --- a/arch/arm/mach-mmp/clock-pxa168.c +++ b/arch/arm/mach-mmp/clock-pxa168.c | |||
@@ -78,7 +78,7 @@ static struct clk_lookup pxa168_clkregs[] = { | |||
78 | INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), | 78 | INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), |
79 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 79 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
80 | INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), | 80 | INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), |
81 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | 81 | INIT_CLKREG(&clk_gpio, "mmp-gpio", NULL), |
82 | INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL), | 82 | INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL), |
83 | INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"), | 83 | INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"), |
84 | INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"), | 84 | INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"), |
diff --git a/arch/arm/mach-mmp/clock-pxa910.c b/arch/arm/mach-mmp/clock-pxa910.c index 933ea71d0b56..379e1df61c70 100644 --- a/arch/arm/mach-mmp/clock-pxa910.c +++ b/arch/arm/mach-mmp/clock-pxa910.c | |||
@@ -56,7 +56,7 @@ static struct clk_lookup pxa910_clkregs[] = { | |||
56 | INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), | 56 | INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), |
57 | INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), | 57 | INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), |
58 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 58 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
59 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | 59 | INIT_CLKREG(&clk_gpio, "mmp-gpio", NULL), |
60 | INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"), | 60 | INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"), |
61 | INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL), | 61 | INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL), |
62 | }; | 62 | }; |
diff --git a/arch/arm/mach-mmp/mmp-dt.c b/arch/arm/mach-mmp/mmp-dt.c index d063efa0a4f1..5b890b686952 100644 --- a/arch/arm/mach-mmp/mmp-dt.c +++ b/arch/arm/mach-mmp/mmp-dt.c | |||
@@ -28,7 +28,7 @@ static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = { | |||
28 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL), | 28 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL), |
29 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), | 29 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), |
30 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), | 30 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), |
31 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), | 31 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp-gpio", NULL), |
32 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), | 32 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), |
33 | {} | 33 | {} |
34 | }; | 34 | }; |
@@ -39,7 +39,7 @@ static const struct of_dev_auxdata pxa910_auxdata_lookup[] __initconst = { | |||
39 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL), | 39 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL), |
40 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), | 40 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), |
41 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL), | 41 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL), |
42 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), | 42 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp-gpio", NULL), |
43 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), | 43 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), |
44 | {} | 44 | {} |
45 | }; | 45 | }; |
diff --git a/arch/arm/mach-mmp/mmp2-dt.c b/arch/arm/mach-mmp/mmp2-dt.c index fad431aa6e09..924b6e838e50 100644 --- a/arch/arm/mach-mmp/mmp2-dt.c +++ b/arch/arm/mach-mmp/mmp2-dt.c | |||
@@ -31,7 +31,7 @@ static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = { | |||
31 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL), | 31 | OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL), |
32 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), | 32 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), |
33 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), | 33 | OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), |
34 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), | 34 | OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "mmp2-gpio", NULL), |
35 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), | 35 | OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), |
36 | {} | 36 | {} |
37 | }; | 37 | }; |
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index d94d114eef7b..c7592f168bbd 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c | |||
@@ -164,7 +164,7 @@ struct resource mmp2_resource_gpio[] = { | |||
164 | }; | 164 | }; |
165 | 165 | ||
166 | struct platform_device mmp2_device_gpio = { | 166 | struct platform_device mmp2_device_gpio = { |
167 | .name = "pxa-gpio", | 167 | .name = "mmp2-gpio", |
168 | .id = -1, | 168 | .id = -1, |
169 | .num_resources = ARRAY_SIZE(mmp2_resource_gpio), | 169 | .num_resources = ARRAY_SIZE(mmp2_resource_gpio), |
170 | .resource = mmp2_resource_gpio, | 170 | .resource = mmp2_resource_gpio, |
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 9bc7b86a86a7..a30dcf3b7d9e 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c | |||
@@ -125,7 +125,7 @@ struct resource pxa168_resource_gpio[] = { | |||
125 | }; | 125 | }; |
126 | 126 | ||
127 | struct platform_device pxa168_device_gpio = { | 127 | struct platform_device pxa168_device_gpio = { |
128 | .name = "pxa-gpio", | 128 | .name = "mmp-gpio", |
129 | .id = -1, | 129 | .id = -1, |
130 | .num_resources = ARRAY_SIZE(pxa168_resource_gpio), | 130 | .num_resources = ARRAY_SIZE(pxa168_resource_gpio), |
131 | .resource = pxa168_resource_gpio, | 131 | .resource = pxa168_resource_gpio, |
diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 36cb321a3d70..ce6393acad86 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c | |||
@@ -152,7 +152,7 @@ struct resource pxa910_resource_gpio[] = { | |||
152 | }; | 152 | }; |
153 | 153 | ||
154 | struct platform_device pxa910_device_gpio = { | 154 | struct platform_device pxa910_device_gpio = { |
155 | .name = "pxa-gpio", | 155 | .name = "mmp-gpio", |
156 | .id = -1, | 156 | .id = -1, |
157 | .num_resources = ARRAY_SIZE(pxa910_resource_gpio), | 157 | .num_resources = ARRAY_SIZE(pxa910_resource_gpio), |
158 | .resource = pxa910_resource_gpio, | 158 | .resource = pxa910_resource_gpio, |
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c index daa86d39ed9e..666094315ab1 100644 --- a/arch/arm/mach-pxa/devices.c +++ b/arch/arm/mach-pxa/devices.c | |||
@@ -1107,8 +1107,33 @@ struct resource pxa_resource_gpio[] = { | |||
1107 | }, | 1107 | }, |
1108 | }; | 1108 | }; |
1109 | 1109 | ||
1110 | struct platform_device pxa_device_gpio = { | 1110 | struct platform_device pxa25x_device_gpio = { |
1111 | .name = "pxa-gpio", | 1111 | #ifdef CONFIG_CPU_PXA26x |
1112 | .name = "pxa26x-gpio", | ||
1113 | #else | ||
1114 | .name = "pxa25x-gpio", | ||
1115 | #endif | ||
1116 | .id = -1, | ||
1117 | .num_resources = ARRAY_SIZE(pxa_resource_gpio), | ||
1118 | .resource = pxa_resource_gpio, | ||
1119 | }; | ||
1120 | |||
1121 | struct platform_device pxa27x_device_gpio = { | ||
1122 | .name = "pxa27x-gpio", | ||
1123 | .id = -1, | ||
1124 | .num_resources = ARRAY_SIZE(pxa_resource_gpio), | ||
1125 | .resource = pxa_resource_gpio, | ||
1126 | }; | ||
1127 | |||
1128 | struct platform_device pxa3xx_device_gpio = { | ||
1129 | .name = "pxa3xx-gpio", | ||
1130 | .id = -1, | ||
1131 | .num_resources = ARRAY_SIZE(pxa_resource_gpio), | ||
1132 | .resource = pxa_resource_gpio, | ||
1133 | }; | ||
1134 | |||
1135 | struct platform_device pxa93x_device_gpio = { | ||
1136 | .name = "pxa93x-gpio", | ||
1112 | .id = -1, | 1137 | .id = -1, |
1113 | .num_resources = ARRAY_SIZE(pxa_resource_gpio), | 1138 | .num_resources = ARRAY_SIZE(pxa_resource_gpio), |
1114 | .resource = pxa_resource_gpio, | 1139 | .resource = pxa_resource_gpio, |
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h index 1475db107254..0f3fd0d65b12 100644 --- a/arch/arm/mach-pxa/devices.h +++ b/arch/arm/mach-pxa/devices.h | |||
@@ -16,7 +16,6 @@ extern struct platform_device pxa_device_ficp; | |||
16 | extern struct platform_device sa1100_device_rtc; | 16 | extern struct platform_device sa1100_device_rtc; |
17 | extern struct platform_device pxa_device_rtc; | 17 | extern struct platform_device pxa_device_rtc; |
18 | extern struct platform_device pxa_device_ac97; | 18 | extern struct platform_device pxa_device_ac97; |
19 | extern struct platform_device pxa_device_gpio; | ||
20 | 19 | ||
21 | extern struct platform_device pxa27x_device_i2c_power; | 20 | extern struct platform_device pxa27x_device_i2c_power; |
22 | extern struct platform_device pxa27x_device_ohci; | 21 | extern struct platform_device pxa27x_device_ohci; |
@@ -46,4 +45,9 @@ extern struct platform_device pxa_device_asoc_ssp2; | |||
46 | extern struct platform_device pxa_device_asoc_ssp3; | 45 | extern struct platform_device pxa_device_asoc_ssp3; |
47 | extern struct platform_device pxa_device_asoc_ssp4; | 46 | extern struct platform_device pxa_device_asoc_ssp4; |
48 | 47 | ||
48 | extern struct platform_device pxa25x_device_gpio; | ||
49 | extern struct platform_device pxa27x_device_gpio; | ||
50 | extern struct platform_device pxa3xx_device_gpio; | ||
51 | extern struct platform_device pxa93x_device_gpio; | ||
52 | |||
49 | void __init pxa_register_device(struct platform_device *dev, void *data); | 53 | void __init pxa_register_device(struct platform_device *dev, void *data); |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 3f5171eaf67b..e31a8812cf0d 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -208,7 +208,11 @@ static struct clk_lookup pxa25x_clkregs[] = { | |||
208 | INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"), | 208 | INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"), |
209 | INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"), | 209 | INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"), |
210 | INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL), | 210 | INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL), |
211 | INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), | 211 | #ifdef CONFIG_CPU_PXA26x |
212 | INIT_CLKREG(&clk_dummy, "pxa26x-gpio", NULL), | ||
213 | #else | ||
214 | INIT_CLKREG(&clk_dummy, "pxa25x-gpio", NULL), | ||
215 | #endif | ||
212 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), | 216 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), |
213 | }; | 217 | }; |
214 | 218 | ||
@@ -375,7 +379,7 @@ static int __init pxa25x_init(void) | |||
375 | register_syscore_ops(&pxa2xx_mfp_syscore_ops); | 379 | register_syscore_ops(&pxa2xx_mfp_syscore_ops); |
376 | register_syscore_ops(&pxa2xx_clock_syscore_ops); | 380 | register_syscore_ops(&pxa2xx_clock_syscore_ops); |
377 | 381 | ||
378 | pxa_register_device(&pxa_device_gpio, &pxa25x_gpio_info); | 382 | pxa_register_device(&pxa25x_device_gpio, &pxa25x_gpio_info); |
379 | ret = platform_add_devices(pxa25x_devices, | 383 | ret = platform_add_devices(pxa25x_devices, |
380 | ARRAY_SIZE(pxa25x_devices)); | 384 | ARRAY_SIZE(pxa25x_devices)); |
381 | if (ret) | 385 | if (ret) |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 3203a9f5b4a2..7635ec5c9a1d 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -237,7 +237,7 @@ static struct clk_lookup pxa27x_clkregs[] = { | |||
237 | INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"), | 237 | INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"), |
238 | INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"), | 238 | INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"), |
239 | INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL), | 239 | INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL), |
240 | INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), | 240 | INIT_CLKREG(&clk_dummy, "pxa27x-gpio", NULL), |
241 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), | 241 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), |
242 | }; | 242 | }; |
243 | 243 | ||
@@ -470,7 +470,7 @@ static int __init pxa27x_init(void) | |||
470 | register_syscore_ops(&pxa2xx_mfp_syscore_ops); | 470 | register_syscore_ops(&pxa2xx_mfp_syscore_ops); |
471 | register_syscore_ops(&pxa2xx_clock_syscore_ops); | 471 | register_syscore_ops(&pxa2xx_clock_syscore_ops); |
472 | 472 | ||
473 | pxa_register_device(&pxa_device_gpio, &pxa27x_gpio_info); | 473 | pxa_register_device(&pxa27x_device_gpio, &pxa27x_gpio_info); |
474 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); | 474 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); |
475 | } | 475 | } |
476 | 476 | ||
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 656a1bb16d14..572666a1e4a8 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -92,7 +92,8 @@ static struct clk_lookup pxa3xx_clkregs[] = { | |||
92 | INIT_CLKREG(&clk_pxa3xx_mmc1, "pxa2xx-mci.0", NULL), | 92 | INIT_CLKREG(&clk_pxa3xx_mmc1, "pxa2xx-mci.0", NULL), |
93 | INIT_CLKREG(&clk_pxa3xx_mmc2, "pxa2xx-mci.1", NULL), | 93 | INIT_CLKREG(&clk_pxa3xx_mmc2, "pxa2xx-mci.1", NULL), |
94 | INIT_CLKREG(&clk_pxa3xx_smemc, "pxa2xx-pcmcia", NULL), | 94 | INIT_CLKREG(&clk_pxa3xx_smemc, "pxa2xx-pcmcia", NULL), |
95 | INIT_CLKREG(&clk_pxa3xx_gpio, "pxa-gpio", NULL), | 95 | INIT_CLKREG(&clk_pxa3xx_gpio, "pxa3xx-gpio", NULL), |
96 | INIT_CLKREG(&clk_pxa3xx_gpio, "pxa93x-gpio", NULL), | ||
96 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), | 97 | INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), |
97 | }; | 98 | }; |
98 | 99 | ||
@@ -436,7 +437,6 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info) | |||
436 | } | 437 | } |
437 | 438 | ||
438 | static struct platform_device *devices[] __initdata = { | 439 | static struct platform_device *devices[] __initdata = { |
439 | &pxa_device_gpio, | ||
440 | &pxa27x_device_udc, | 440 | &pxa27x_device_udc, |
441 | &pxa_device_pmu, | 441 | &pxa_device_pmu, |
442 | &pxa_device_i2s, | 442 | &pxa_device_i2s, |
@@ -482,8 +482,14 @@ static int __init pxa3xx_init(void) | |||
482 | register_syscore_ops(&pxa3xx_mfp_syscore_ops); | 482 | register_syscore_ops(&pxa3xx_mfp_syscore_ops); |
483 | register_syscore_ops(&pxa3xx_clock_syscore_ops); | 483 | register_syscore_ops(&pxa3xx_clock_syscore_ops); |
484 | 484 | ||
485 | if (!of_have_populated_dt()) | 485 | if (of_have_populated_dt()) |
486 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); | 486 | return 0; |
487 | |||
488 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
489 | if (ret) | ||
490 | return ret; | ||
491 | if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320()) | ||
492 | ret = platform_device_register(&pxa3xx_device_gpio); | ||
487 | } | 493 | } |
488 | 494 | ||
489 | return ret; | 495 | return ret; |
diff --git a/arch/arm/mach-pxa/pxa930.c b/arch/arm/mach-pxa/pxa930.c index 8aeacf908784..4693a78948aa 100644 --- a/arch/arm/mach-pxa/pxa930.c +++ b/arch/arm/mach-pxa/pxa930.c | |||
@@ -18,6 +18,8 @@ | |||
18 | 18 | ||
19 | #include <mach/pxa930.h> | 19 | #include <mach/pxa930.h> |
20 | 20 | ||
21 | #include "devices.h" | ||
22 | |||
21 | static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = { | 23 | static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = { |
22 | 24 | ||
23 | MFP_ADDR(GPIO0, 0x02e0), | 25 | MFP_ADDR(GPIO0, 0x02e0), |
@@ -192,9 +194,12 @@ static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = { | |||
192 | 194 | ||
193 | static int __init pxa930_init(void) | 195 | static int __init pxa930_init(void) |
194 | { | 196 | { |
197 | int ret = 0; | ||
198 | |||
195 | if (cpu_is_pxa93x()) { | 199 | if (cpu_is_pxa93x()) { |
196 | mfp_init_base(io_p2v(MFPR_BASE)); | 200 | mfp_init_base(io_p2v(MFPR_BASE)); |
197 | mfp_init_addr(pxa930_mfp_addr_map); | 201 | mfp_init_addr(pxa930_mfp_addr_map); |
202 | ret = platform_device_register(&pxa93x_device_gpio); | ||
198 | } | 203 | } |
199 | 204 | ||
200 | if (cpu_is_pxa935()) | 205 | if (cpu_is_pxa935()) |
diff --git a/drivers/clk/mmp/clk-mmp2.c b/drivers/clk/mmp/clk-mmp2.c index ade435820c7e..d1f1a19d4351 100644 --- a/drivers/clk/mmp/clk-mmp2.c +++ b/drivers/clk/mmp/clk-mmp2.c | |||
@@ -221,7 +221,7 @@ void __init mmp2_clk_init(void) | |||
221 | 221 | ||
222 | clk = mmp_clk_register_apbc("gpio", "vctcxo", | 222 | clk = mmp_clk_register_apbc("gpio", "vctcxo", |
223 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); | 223 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); |
224 | clk_register_clkdev(clk, NULL, "pxa-gpio"); | 224 | clk_register_clkdev(clk, NULL, "mmp2-gpio"); |
225 | 225 | ||
226 | clk = mmp_clk_register_apbc("kpc", "clk32", | 226 | clk = mmp_clk_register_apbc("kpc", "clk32", |
227 | apbc_base + APBC_KPC, 10, 0, &clk_lock); | 227 | apbc_base + APBC_KPC, 10, 0, &clk_lock); |
diff --git a/drivers/clk/mmp/clk-pxa168.c b/drivers/clk/mmp/clk-pxa168.c index e8d036c12cbf..28b3b51c794b 100644 --- a/drivers/clk/mmp/clk-pxa168.c +++ b/drivers/clk/mmp/clk-pxa168.c | |||
@@ -172,7 +172,7 @@ void __init pxa168_clk_init(void) | |||
172 | 172 | ||
173 | clk = mmp_clk_register_apbc("gpio", "vctcxo", | 173 | clk = mmp_clk_register_apbc("gpio", "vctcxo", |
174 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); | 174 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); |
175 | clk_register_clkdev(clk, NULL, "pxa-gpio"); | 175 | clk_register_clkdev(clk, NULL, "mmp-gpio"); |
176 | 176 | ||
177 | clk = mmp_clk_register_apbc("kpc", "clk32", | 177 | clk = mmp_clk_register_apbc("kpc", "clk32", |
178 | apbc_base + APBC_KPC, 10, 0, &clk_lock); | 178 | apbc_base + APBC_KPC, 10, 0, &clk_lock); |
diff --git a/drivers/clk/mmp/clk-pxa910.c b/drivers/clk/mmp/clk-pxa910.c index 7048c31d6e7e..6ec05698ed38 100644 --- a/drivers/clk/mmp/clk-pxa910.c +++ b/drivers/clk/mmp/clk-pxa910.c | |||
@@ -177,7 +177,7 @@ void __init pxa910_clk_init(void) | |||
177 | 177 | ||
178 | clk = mmp_clk_register_apbc("gpio", "vctcxo", | 178 | clk = mmp_clk_register_apbc("gpio", "vctcxo", |
179 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); | 179 | apbc_base + APBC_GPIO, 10, 0, &clk_lock); |
180 | clk_register_clkdev(clk, NULL, "pxa-gpio"); | 180 | clk_register_clkdev(clk, NULL, "mmp-gpio"); |
181 | 181 | ||
182 | clk = mmp_clk_register_apbc("kpc", "clk32", | 182 | clk = mmp_clk_register_apbc("kpc", "clk32", |
183 | apbc_base + APBC_KPC, 10, 0, &clk_lock); | 183 | apbc_base + APBC_KPC, 10, 0, &clk_lock); |
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c index 9cc108d2b770..fe74b0cc2bcb 100644 --- a/drivers/gpio/gpio-pxa.c +++ b/drivers/gpio/gpio-pxa.c | |||
@@ -86,20 +86,61 @@ struct pxa_gpio_chip { | |||
86 | #endif | 86 | #endif |
87 | }; | 87 | }; |
88 | 88 | ||
89 | enum { | 89 | enum pxa_gpio_type { |
90 | PXA25X_GPIO = 0, | 90 | PXA25X_GPIO = 0, |
91 | PXA26X_GPIO, | 91 | PXA26X_GPIO, |
92 | PXA27X_GPIO, | 92 | PXA27X_GPIO, |
93 | PXA3XX_GPIO, | 93 | PXA3XX_GPIO, |
94 | PXA93X_GPIO, | 94 | PXA93X_GPIO, |
95 | MMP_GPIO = 0x10, | 95 | MMP_GPIO = 0x10, |
96 | MMP2_GPIO, | ||
97 | }; | ||
98 | |||
99 | struct pxa_gpio_id { | ||
100 | enum pxa_gpio_type type; | ||
101 | int gpio_nums; | ||
96 | }; | 102 | }; |
97 | 103 | ||
98 | static DEFINE_SPINLOCK(gpio_lock); | 104 | static DEFINE_SPINLOCK(gpio_lock); |
99 | static struct pxa_gpio_chip *pxa_gpio_chips; | 105 | static struct pxa_gpio_chip *pxa_gpio_chips; |
100 | static int gpio_type; | 106 | static enum pxa_gpio_type gpio_type; |
101 | static void __iomem *gpio_reg_base; | 107 | static void __iomem *gpio_reg_base; |
102 | 108 | ||
109 | static struct pxa_gpio_id pxa25x_id = { | ||
110 | .type = PXA25X_GPIO, | ||
111 | .gpio_nums = 85, | ||
112 | }; | ||
113 | |||
114 | static struct pxa_gpio_id pxa26x_id = { | ||
115 | .type = PXA26X_GPIO, | ||
116 | .gpio_nums = 90, | ||
117 | }; | ||
118 | |||
119 | static struct pxa_gpio_id pxa27x_id = { | ||
120 | .type = PXA27X_GPIO, | ||
121 | .gpio_nums = 121, | ||
122 | }; | ||
123 | |||
124 | static struct pxa_gpio_id pxa3xx_id = { | ||
125 | .type = PXA3XX_GPIO, | ||
126 | .gpio_nums = 128, | ||
127 | }; | ||
128 | |||
129 | static struct pxa_gpio_id pxa93x_id = { | ||
130 | .type = PXA93X_GPIO, | ||
131 | .gpio_nums = 192, | ||
132 | }; | ||
133 | |||
134 | static struct pxa_gpio_id mmp_id = { | ||
135 | .type = MMP_GPIO, | ||
136 | .gpio_nums = 128, | ||
137 | }; | ||
138 | |||
139 | static struct pxa_gpio_id mmp2_id = { | ||
140 | .type = MMP2_GPIO, | ||
141 | .gpio_nums = 192, | ||
142 | }; | ||
143 | |||
103 | #define for_each_gpio_chip(i, c) \ | 144 | #define for_each_gpio_chip(i, c) \ |
104 | for (i = 0, c = &pxa_gpio_chips[0]; i <= pxa_last_gpio; i += 32, c++) | 145 | for (i = 0, c = &pxa_gpio_chips[0]; i <= pxa_last_gpio; i += 32, c++) |
105 | 146 | ||
@@ -432,40 +473,27 @@ static struct irq_chip pxa_muxed_gpio_chip = { | |||
432 | .irq_set_wake = pxa_gpio_set_wake, | 473 | .irq_set_wake = pxa_gpio_set_wake, |
433 | }; | 474 | }; |
434 | 475 | ||
435 | static int pxa_gpio_nums(void) | 476 | static int pxa_gpio_nums(struct platform_device *pdev) |
436 | { | 477 | { |
478 | const struct platform_device_id *id = platform_get_device_id(pdev); | ||
479 | struct pxa_gpio_id *pxa_id = (struct pxa_gpio_id *)id->driver_data; | ||
437 | int count = 0; | 480 | int count = 0; |
438 | 481 | ||
439 | #ifdef CONFIG_ARCH_PXA | 482 | switch (pxa_id->type) { |
440 | if (cpu_is_pxa25x()) { | 483 | case PXA25X_GPIO: |
441 | #ifdef CONFIG_CPU_PXA26x | 484 | case PXA26X_GPIO: |
442 | count = 89; | 485 | case PXA27X_GPIO: |
443 | gpio_type = PXA26X_GPIO; | 486 | case PXA3XX_GPIO: |
444 | #elif defined(CONFIG_PXA25x) | 487 | case PXA93X_GPIO: |
445 | count = 84; | 488 | case MMP_GPIO: |
446 | gpio_type = PXA26X_GPIO; | 489 | case MMP2_GPIO: |
447 | #endif /* CONFIG_CPU_PXA26x */ | 490 | gpio_type = pxa_id->type; |
448 | } else if (cpu_is_pxa27x()) { | 491 | count = pxa_id->gpio_nums - 1; |
449 | count = 120; | 492 | break; |
450 | gpio_type = PXA27X_GPIO; | 493 | default: |
451 | } else if (cpu_is_pxa93x()) { | 494 | count = -EINVAL; |
452 | count = 191; | 495 | break; |
453 | gpio_type = PXA93X_GPIO; | ||
454 | } else if (cpu_is_pxa3xx()) { | ||
455 | count = 127; | ||
456 | gpio_type = PXA3XX_GPIO; | ||
457 | } | ||
458 | #endif /* CONFIG_ARCH_PXA */ | ||
459 | |||
460 | #ifdef CONFIG_ARCH_MMP | ||
461 | if (cpu_is_pxa168() || cpu_is_pxa910()) { | ||
462 | count = 127; | ||
463 | gpio_type = MMP_GPIO; | ||
464 | } else if (cpu_is_mmp2()) { | ||
465 | count = 191; | ||
466 | gpio_type = MMP_GPIO; | ||
467 | } | 496 | } |
468 | #endif /* CONFIG_ARCH_MMP */ | ||
469 | return count; | 497 | return count; |
470 | } | 498 | } |
471 | 499 | ||
@@ -548,7 +576,7 @@ static int pxa_gpio_probe(struct platform_device *pdev) | |||
548 | 576 | ||
549 | ret = pxa_gpio_probe_dt(pdev); | 577 | ret = pxa_gpio_probe_dt(pdev); |
550 | if (ret < 0) { | 578 | if (ret < 0) { |
551 | pxa_last_gpio = pxa_gpio_nums(); | 579 | pxa_last_gpio = pxa_gpio_nums(pdev); |
552 | #ifdef CONFIG_ARCH_PXA | 580 | #ifdef CONFIG_ARCH_PXA |
553 | if (gpio_is_pxa_type(gpio_type)) | 581 | if (gpio_is_pxa_type(gpio_type)) |
554 | irq_base = PXA_GPIO_TO_IRQ(0); | 582 | irq_base = PXA_GPIO_TO_IRQ(0); |
@@ -635,12 +663,24 @@ static int pxa_gpio_probe(struct platform_device *pdev) | |||
635 | return 0; | 663 | return 0; |
636 | } | 664 | } |
637 | 665 | ||
666 | static const struct platform_device_id gpio_id_table[] = { | ||
667 | { "pxa25x-gpio", (unsigned long)&pxa25x_id }, | ||
668 | { "pxa26x-gpio", (unsigned long)&pxa26x_id }, | ||
669 | { "pxa27x-gpio", (unsigned long)&pxa27x_id }, | ||
670 | { "pxa3xx-gpio", (unsigned long)&pxa3xx_id }, | ||
671 | { "pxa93x-gpio", (unsigned long)&pxa93x_id }, | ||
672 | { "mmp-gpio", (unsigned long)&mmp_id }, | ||
673 | { "mmp2-gpio", (unsigned long)&mmp2_id }, | ||
674 | { }, | ||
675 | }; | ||
676 | |||
638 | static struct platform_driver pxa_gpio_driver = { | 677 | static struct platform_driver pxa_gpio_driver = { |
639 | .probe = pxa_gpio_probe, | 678 | .probe = pxa_gpio_probe, |
640 | .driver = { | 679 | .driver = { |
641 | .name = "pxa-gpio", | 680 | .name = "pxa-gpio", |
642 | .of_match_table = of_match_ptr(pxa_gpio_dt_ids), | 681 | .of_match_table = of_match_ptr(pxa_gpio_dt_ids), |
643 | }, | 682 | }, |
683 | .id_table = gpio_id_table, | ||
644 | }; | 684 | }; |
645 | module_platform_driver(pxa_gpio_driver); | 685 | module_platform_driver(pxa_gpio_driver); |
646 | 686 | ||