diff options
Diffstat (limited to 'arch/arm/mach-mmp')
-rw-r--r-- | arch/arm/mach-mmp/aspenite.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mmp/avengers_lite.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-mmp/brownstone.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-mmp/flint.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mmp/gplugd.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/gpio-pxa.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/gpio.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/irqs.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/mmp2.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/pxa168.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/include/mach/pxa910.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/mmp2.c | 39 | ||||
-rw-r--r-- | arch/arm/mach-mmp/pxa168.c | 40 | ||||
-rw-r--r-- | arch/arm/mach-mmp/pxa910.c | 40 | ||||
-rw-r--r-- | arch/arm/mach-mmp/tavorevb.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-mmp/teton_bga.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-mmp/ttc_dkb.c | 8 |
17 files changed, 96 insertions, 75 deletions
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 7a60bbbce7a4..f0d236dfb02b 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c | |||
@@ -120,8 +120,8 @@ static struct resource smc91x_resources[] = { | |||
120 | .flags = IORESOURCE_MEM, | 120 | .flags = IORESOURCE_MEM, |
121 | }, | 121 | }, |
122 | [1] = { | 122 | [1] = { |
123 | .start = gpio_to_irq(27), | 123 | .start = MMP_GPIO_TO_IRQ(27), |
124 | .end = gpio_to_irq(27), | 124 | .end = MMP_GPIO_TO_IRQ(27), |
125 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | 125 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, |
126 | } | 126 | } |
127 | }; | 127 | }; |
@@ -232,6 +232,7 @@ static void __init common_init(void) | |||
232 | pxa168_add_nand(&aspenite_nand_info); | 232 | pxa168_add_nand(&aspenite_nand_info); |
233 | pxa168_add_fb(&aspenite_lcd_info); | 233 | pxa168_add_fb(&aspenite_lcd_info); |
234 | pxa168_add_keypad(&aspenite_keypad_info); | 234 | pxa168_add_keypad(&aspenite_keypad_info); |
235 | platform_device_register(&pxa168_device_gpio); | ||
235 | 236 | ||
236 | /* off-chip devices */ | 237 | /* off-chip devices */ |
237 | platform_device_register(&smc91x_device); | 238 | platform_device_register(&smc91x_device); |
diff --git a/arch/arm/mach-mmp/avengers_lite.c b/arch/arm/mach-mmp/avengers_lite.c index 39f0878d64a0..c5d53e0742e9 100644 --- a/arch/arm/mach-mmp/avengers_lite.c +++ b/arch/arm/mach-mmp/avengers_lite.c | |||
@@ -38,6 +38,7 @@ static void __init avengers_lite_init(void) | |||
38 | 38 | ||
39 | /* on-chip devices */ | 39 | /* on-chip devices */ |
40 | pxa168_add_uart(2); | 40 | pxa168_add_uart(2); |
41 | platform_device_register(&pxa168_device_gpio); | ||
41 | } | 42 | } |
42 | 43 | ||
43 | MACHINE_START(AVENGERS_LITE, "PXA168 Avengers lite Development Platform") | 44 | MACHINE_START(AVENGERS_LITE, "PXA168 Avengers lite Development Platform") |
diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c index 983cfb15fbde..eb07565a06a3 100644 --- a/arch/arm/mach-mmp/brownstone.c +++ b/arch/arm/mach-mmp/brownstone.c | |||
@@ -202,6 +202,7 @@ static void __init brownstone_init(void) | |||
202 | /* on-chip devices */ | 202 | /* on-chip devices */ |
203 | mmp2_add_uart(1); | 203 | mmp2_add_uart(1); |
204 | mmp2_add_uart(3); | 204 | mmp2_add_uart(3); |
205 | platform_device_register(&mmp2_device_gpio); | ||
205 | mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info)); | 206 | mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info)); |
206 | mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */ | 207 | mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */ |
207 | mmp2_add_sdhost(2, &mmp2_sdh_platdata_mmc2); /* eMMC */ | 208 | mmp2_add_sdhost(2, &mmp2_sdh_platdata_mmc2); /* eMMC */ |
diff --git a/arch/arm/mach-mmp/flint.c b/arch/arm/mach-mmp/flint.c index c4fd806b15b4..c1f0aa88dd8a 100644 --- a/arch/arm/mach-mmp/flint.c +++ b/arch/arm/mach-mmp/flint.c | |||
@@ -87,8 +87,8 @@ static struct resource smc91x_resources[] = { | |||
87 | .flags = IORESOURCE_MEM, | 87 | .flags = IORESOURCE_MEM, |
88 | }, | 88 | }, |
89 | [1] = { | 89 | [1] = { |
90 | .start = gpio_to_irq(155), | 90 | .start = MMP_GPIO_TO_IRQ(155), |
91 | .end = gpio_to_irq(155), | 91 | .end = MMP_GPIO_TO_IRQ(155), |
92 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | 92 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, |
93 | } | 93 | } |
94 | }; | 94 | }; |
@@ -110,6 +110,7 @@ static void __init flint_init(void) | |||
110 | /* on-chip devices */ | 110 | /* on-chip devices */ |
111 | mmp2_add_uart(1); | 111 | mmp2_add_uart(1); |
112 | mmp2_add_uart(2); | 112 | mmp2_add_uart(2); |
113 | platform_device_register(&mmp2_device_gpio); | ||
113 | 114 | ||
114 | /* off-chip devices */ | 115 | /* off-chip devices */ |
115 | platform_device_register(&smc91x_device); | 116 | platform_device_register(&smc91x_device); |
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c index 69156568bc41..933420a7c3ba 100644 --- a/arch/arm/mach-mmp/gplugd.c +++ b/arch/arm/mach-mmp/gplugd.c | |||
@@ -184,6 +184,7 @@ static void __init gplugd_init(void) | |||
184 | pxa168_add_uart(3); | 184 | pxa168_add_uart(3); |
185 | pxa168_add_ssp(0); | 185 | pxa168_add_ssp(0); |
186 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info)); | 186 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info)); |
187 | platform_device_register(&pxa168_device_gpio); | ||
187 | 188 | ||
188 | pxa168_add_eth(&gplugd_eth_platform_data); | 189 | pxa168_add_eth(&gplugd_eth_platform_data); |
189 | } | 190 | } |
diff --git a/arch/arm/mach-mmp/include/mach/gpio-pxa.h b/arch/arm/mach-mmp/include/mach/gpio-pxa.h index d14eeaf16322..9b79937d7817 100644 --- a/arch/arm/mach-mmp/include/mach/gpio-pxa.h +++ b/arch/arm/mach-mmp/include/mach/gpio-pxa.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define __ASM_MACH_GPIO_PXA_H | 2 | #define __ASM_MACH_GPIO_PXA_H |
3 | 3 | ||
4 | #include <mach/addr-map.h> | 4 | #include <mach/addr-map.h> |
5 | #include <mach/cputype.h> | ||
5 | #include <mach/irqs.h> | 6 | #include <mach/irqs.h> |
6 | 7 | ||
7 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) | 8 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) |
@@ -9,8 +10,6 @@ | |||
9 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | 10 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) |
10 | #define GPIO_REG(x) (GPIO_REGS_VIRT + (x)) | 11 | #define GPIO_REG(x) (GPIO_REGS_VIRT + (x)) |
11 | 12 | ||
12 | #define NR_BUILTIN_GPIO IRQ_GPIO_NUM | ||
13 | |||
14 | #define gpio_to_bank(gpio) ((gpio) >> 5) | 13 | #define gpio_to_bank(gpio) ((gpio) >> 5) |
15 | 14 | ||
16 | /* NOTE: these macros are defined here to make optimization of | 15 | /* NOTE: these macros are defined here to make optimization of |
diff --git a/arch/arm/mach-mmp/include/mach/gpio.h b/arch/arm/mach-mmp/include/mach/gpio.h index 681262359d1c..13219ebf5128 100644 --- a/arch/arm/mach-mmp/include/mach/gpio.h +++ b/arch/arm/mach-mmp/include/mach/gpio.h | |||
@@ -3,11 +3,6 @@ | |||
3 | 3 | ||
4 | #include <asm-generic/gpio.h> | 4 | #include <asm-generic/gpio.h> |
5 | 5 | ||
6 | #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio)) | 6 | #include <mach/cputype.h> |
7 | #define irq_to_gpio(irq) ((irq) - IRQ_GPIO_START) | ||
8 | 7 | ||
9 | #define __gpio_is_inverted(gpio) (0) | ||
10 | #define __gpio_is_occupied(gpio) (0) | ||
11 | |||
12 | #include <plat/gpio.h> | ||
13 | #endif /* __ASM_MACH_GPIO_H */ | 8 | #endif /* __ASM_MACH_GPIO_H */ |
diff --git a/arch/arm/mach-mmp/include/mach/irqs.h b/arch/arm/mach-mmp/include/mach/irqs.h index a09d328e2ddd..34635a0bbb59 100644 --- a/arch/arm/mach-mmp/include/mach/irqs.h +++ b/arch/arm/mach-mmp/include/mach/irqs.h | |||
@@ -219,10 +219,10 @@ | |||
219 | #define IRQ_MMP2_MUX_END (IRQ_MMP2_SSP_BASE + 2) | 219 | #define IRQ_MMP2_MUX_END (IRQ_MMP2_SSP_BASE + 2) |
220 | 220 | ||
221 | #define IRQ_GPIO_START 128 | 221 | #define IRQ_GPIO_START 128 |
222 | #define IRQ_GPIO_NUM 192 | 222 | #define MMP_NR_BUILTIN_GPIO 192 |
223 | #define IRQ_GPIO(x) (IRQ_GPIO_START + (x)) | 223 | #define MMP_GPIO_TO_IRQ(gpio) (IRQ_GPIO_START + (gpio)) |
224 | 224 | ||
225 | #define IRQ_BOARD_START (IRQ_GPIO_START + IRQ_GPIO_NUM) | 225 | #define IRQ_BOARD_START (IRQ_GPIO_START + MMP_NR_BUILTIN_GPIO) |
226 | 226 | ||
227 | #define NR_IRQS (IRQ_BOARD_START) | 227 | #define NR_IRQS (IRQ_BOARD_START) |
228 | 228 | ||
diff --git a/arch/arm/mach-mmp/include/mach/mmp2.h b/arch/arm/mach-mmp/include/mach/mmp2.h index 2f7b2d3c2b18..cba22fed2265 100644 --- a/arch/arm/mach-mmp/include/mach/mmp2.h +++ b/arch/arm/mach-mmp/include/mach/mmp2.h | |||
@@ -32,6 +32,8 @@ extern struct pxa_device_desc mmp2_device_sdh3; | |||
32 | extern struct pxa_device_desc mmp2_device_asram; | 32 | extern struct pxa_device_desc mmp2_device_asram; |
33 | extern struct pxa_device_desc mmp2_device_isram; | 33 | extern struct pxa_device_desc mmp2_device_isram; |
34 | 34 | ||
35 | extern struct platform_device mmp2_device_gpio; | ||
36 | |||
35 | static inline int mmp2_add_uart(int id) | 37 | static inline int mmp2_add_uart(int id) |
36 | { | 38 | { |
37 | struct pxa_device_desc *d = NULL; | 39 | struct pxa_device_desc *d = NULL; |
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index 7fb568d2845b..f9286089da3a 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h | |||
@@ -42,6 +42,8 @@ struct pxa168_usb_pdata { | |||
42 | /* pdata can be NULL */ | 42 | /* pdata can be NULL */ |
43 | int __init pxa168_add_usb_host(struct pxa168_usb_pdata *pdata); | 43 | int __init pxa168_add_usb_host(struct pxa168_usb_pdata *pdata); |
44 | 44 | ||
45 | extern struct platform_device pxa168_device_gpio; | ||
46 | |||
45 | static inline int pxa168_add_uart(int id) | 47 | static inline int pxa168_add_uart(int id) |
46 | { | 48 | { |
47 | struct pxa_device_desc *d = NULL; | 49 | struct pxa_device_desc *d = NULL; |
diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h index 91be75591398..4de13abef7bb 100644 --- a/arch/arm/mach-mmp/include/mach/pxa910.h +++ b/arch/arm/mach-mmp/include/mach/pxa910.h | |||
@@ -21,6 +21,8 @@ extern struct pxa_device_desc pxa910_device_pwm3; | |||
21 | extern struct pxa_device_desc pxa910_device_pwm4; | 21 | extern struct pxa_device_desc pxa910_device_pwm4; |
22 | extern struct pxa_device_desc pxa910_device_nand; | 22 | extern struct pxa_device_desc pxa910_device_nand; |
23 | 23 | ||
24 | extern struct platform_device pxa910_device_gpio; | ||
25 | |||
24 | static inline int pxa910_add_uart(int id) | 26 | static inline int pxa910_add_uart(int id) |
25 | { | 27 | { |
26 | struct pxa_device_desc *d = NULL; | 28 | struct pxa_device_desc *d = NULL; |
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index 5dd1d4a6aeb9..617c60a170a4 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/platform_device.h> | ||
16 | 17 | ||
17 | #include <asm/hardware/cache-tauros2.h> | 18 | #include <asm/hardware/cache-tauros2.h> |
18 | 19 | ||
@@ -24,7 +25,6 @@ | |||
24 | #include <mach/irqs.h> | 25 | #include <mach/irqs.h> |
25 | #include <mach/dma.h> | 26 | #include <mach/dma.h> |
26 | #include <mach/mfp.h> | 27 | #include <mach/mfp.h> |
27 | #include <mach/gpio-pxa.h> | ||
28 | #include <mach/devices.h> | 28 | #include <mach/devices.h> |
29 | #include <mach/mmp2.h> | 29 | #include <mach/mmp2.h> |
30 | 30 | ||
@@ -33,8 +33,6 @@ | |||
33 | 33 | ||
34 | #define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000) | 34 | #define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000) |
35 | 35 | ||
36 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x9c) | ||
37 | |||
38 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { | 36 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { |
39 | 37 | ||
40 | MFP_ADDR_X(GPIO0, GPIO58, 0x54), | 38 | MFP_ADDR_X(GPIO0, GPIO58, 0x54), |
@@ -95,24 +93,9 @@ void mmp2_clear_pmic_int(void) | |||
95 | __raw_writel(data, mfpr_pmic); | 93 | __raw_writel(data, mfpr_pmic); |
96 | } | 94 | } |
97 | 95 | ||
98 | static void __init mmp2_init_gpio(void) | ||
99 | { | ||
100 | int i; | ||
101 | |||
102 | /* enable GPIO clock */ | ||
103 | __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_MMP2_GPIO); | ||
104 | |||
105 | /* unmask GPIO edge detection for all 6 banks -- APMASKx */ | ||
106 | for (i = 0; i < 6; i++) | ||
107 | __raw_writel(0xffffffff, APMASK(i)); | ||
108 | |||
109 | pxa_init_gpio(IRQ_MMP2_GPIO, 0, 167, NULL); | ||
110 | } | ||
111 | |||
112 | void __init mmp2_init_irq(void) | 96 | void __init mmp2_init_irq(void) |
113 | { | 97 | { |
114 | mmp2_init_icu(); | 98 | mmp2_init_icu(); |
115 | mmp2_init_gpio(); | ||
116 | } | 99 | } |
117 | 100 | ||
118 | static void sdhc_clk_enable(struct clk *clk) | 101 | static void sdhc_clk_enable(struct clk *clk) |
@@ -149,6 +132,7 @@ static APBC_CLK(twsi3, MMP2_TWSI3, 0, 26000000); | |||
149 | static APBC_CLK(twsi4, MMP2_TWSI4, 0, 26000000); | 132 | static APBC_CLK(twsi4, MMP2_TWSI4, 0, 26000000); |
150 | static APBC_CLK(twsi5, MMP2_TWSI5, 0, 26000000); | 133 | static APBC_CLK(twsi5, MMP2_TWSI5, 0, 26000000); |
151 | static APBC_CLK(twsi6, MMP2_TWSI6, 0, 26000000); | 134 | static APBC_CLK(twsi6, MMP2_TWSI6, 0, 26000000); |
135 | static APBC_CLK(gpio, MMP2_GPIO, 0, 26000000); | ||
152 | 136 | ||
153 | static APMU_CLK(nand, NAND, 0xbf, 100000000); | 137 | static APMU_CLK(nand, NAND, 0xbf, 100000000); |
154 | static APMU_CLK_OPS(sdh0, SDH0, 0x1b, 200000000, &sdhc_clk_ops); | 138 | static APMU_CLK_OPS(sdh0, SDH0, 0x1b, 200000000, &sdhc_clk_ops); |
@@ -168,6 +152,7 @@ static struct clk_lookup mmp2_clkregs[] = { | |||
168 | INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), | 152 | INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), |
169 | INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), | 153 | INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), |
170 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 154 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
155 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | ||
171 | INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), | 156 | INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), |
172 | INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), | 157 | INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), |
173 | INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), | 158 | INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), |
@@ -230,3 +215,21 @@ MMP2_DEVICE(asram, "asram", -1, NONE, 0xe0000000, 0x4000); | |||
230 | /* 0xd1000000 ~ 0xd101ffff is reserved for secure processor */ | 215 | /* 0xd1000000 ~ 0xd101ffff is reserved for secure processor */ |
231 | MMP2_DEVICE(isram, "isram", -1, NONE, 0xd1020000, 0x18000); | 216 | MMP2_DEVICE(isram, "isram", -1, NONE, 0xd1020000, 0x18000); |
232 | 217 | ||
218 | struct resource mmp2_resource_gpio[] = { | ||
219 | { | ||
220 | .start = 0xd4019000, | ||
221 | .end = 0xd4019fff, | ||
222 | .flags = IORESOURCE_MEM, | ||
223 | }, { | ||
224 | .start = IRQ_MMP2_GPIO, | ||
225 | .end = IRQ_MMP2_GPIO, | ||
226 | .flags = IORESOURCE_IRQ, | ||
227 | }, | ||
228 | }; | ||
229 | |||
230 | struct platform_device mmp2_device_gpio = { | ||
231 | .name = "pxa-gpio", | ||
232 | .id = -1, | ||
233 | .num_resources = ARRAY_SIZE(mmp2_resource_gpio), | ||
234 | .resource = mmp2_resource_gpio, | ||
235 | }; | ||
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 76ca15c00e45..84245035f351 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/list.h> | 13 | #include <linux/list.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/clk.h> | 15 | #include <linux/clk.h> |
16 | #include <linux/platform_device.h> | ||
16 | 17 | ||
17 | #include <asm/mach/time.h> | 18 | #include <asm/mach/time.h> |
18 | #include <mach/addr-map.h> | 19 | #include <mach/addr-map.h> |
@@ -20,7 +21,6 @@ | |||
20 | #include <mach/regs-apbc.h> | 21 | #include <mach/regs-apbc.h> |
21 | #include <mach/regs-apmu.h> | 22 | #include <mach/regs-apmu.h> |
22 | #include <mach/irqs.h> | 23 | #include <mach/irqs.h> |
23 | #include <mach/gpio-pxa.h> | ||
24 | #include <mach/dma.h> | 24 | #include <mach/dma.h> |
25 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
26 | #include <mach/mfp.h> | 26 | #include <mach/mfp.h> |
@@ -43,26 +43,9 @@ static struct mfp_addr_map pxa168_mfp_addr_map[] __initdata = | |||
43 | MFP_ADDR_END, | 43 | MFP_ADDR_END, |
44 | }; | 44 | }; |
45 | 45 | ||
46 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x09c) | ||
47 | |||
48 | static void __init pxa168_init_gpio(void) | ||
49 | { | ||
50 | int i; | ||
51 | |||
52 | /* enable GPIO clock */ | ||
53 | __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_PXA168_GPIO); | ||
54 | |||
55 | /* unmask GPIO edge detection for all 4 banks - APMASKx */ | ||
56 | for (i = 0; i < 4; i++) | ||
57 | __raw_writel(0xffffffff, APMASK(i)); | ||
58 | |||
59 | pxa_init_gpio(IRQ_PXA168_GPIOX, 0, 127, NULL); | ||
60 | } | ||
61 | |||
62 | void __init pxa168_init_irq(void) | 46 | void __init pxa168_init_irq(void) |
63 | { | 47 | { |
64 | icu_init_irq(); | 48 | icu_init_irq(); |
65 | pxa168_init_gpio(); | ||
66 | } | 49 | } |
67 | 50 | ||
68 | /* APB peripheral clocks */ | 51 | /* APB peripheral clocks */ |
@@ -80,6 +63,7 @@ static APBC_CLK(ssp2, PXA168_SSP2, 4, 0); | |||
80 | static APBC_CLK(ssp3, PXA168_SSP3, 4, 0); | 63 | static APBC_CLK(ssp3, PXA168_SSP3, 4, 0); |
81 | static APBC_CLK(ssp4, PXA168_SSP4, 4, 0); | 64 | static APBC_CLK(ssp4, PXA168_SSP4, 4, 0); |
82 | static APBC_CLK(ssp5, PXA168_SSP5, 4, 0); | 65 | static APBC_CLK(ssp5, PXA168_SSP5, 4, 0); |
66 | static APBC_CLK(gpio, PXA168_GPIO, 0, 13000000); | ||
83 | static APBC_CLK(keypad, PXA168_KPC, 0, 32000); | 67 | static APBC_CLK(keypad, PXA168_KPC, 0, 32000); |
84 | 68 | ||
85 | static APMU_CLK(nand, NAND, 0x19b, 156000000); | 69 | static APMU_CLK(nand, NAND, 0x19b, 156000000); |
@@ -105,6 +89,7 @@ static struct clk_lookup pxa168_clkregs[] = { | |||
105 | INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), | 89 | INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), |
106 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 90 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
107 | INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), | 91 | INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), |
92 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | ||
108 | INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL), | 93 | INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL), |
109 | INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"), | 94 | INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"), |
110 | INIT_CLKREG(&clk_usb, "pxa168-ehci", "PXA168-USBCLK"), | 95 | INIT_CLKREG(&clk_usb, "pxa168-ehci", "PXA168-USBCLK"), |
@@ -174,6 +159,25 @@ PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8); | |||
174 | PXA168_DEVICE(keypad, "pxa27x-keypad", -1, KEYPAD, 0xd4012000, 0x4c); | 159 | PXA168_DEVICE(keypad, "pxa27x-keypad", -1, KEYPAD, 0xd4012000, 0x4c); |
175 | PXA168_DEVICE(eth, "pxa168-eth", -1, MFU, 0xc0800000, 0x0fff); | 160 | PXA168_DEVICE(eth, "pxa168-eth", -1, MFU, 0xc0800000, 0x0fff); |
176 | 161 | ||
162 | struct resource pxa168_resource_gpio[] = { | ||
163 | { | ||
164 | .start = 0xd4019000, | ||
165 | .end = 0xd4019fff, | ||
166 | .flags = IORESOURCE_MEM, | ||
167 | }, { | ||
168 | .start = IRQ_PXA168_GPIOX, | ||
169 | .end = IRQ_PXA168_GPIOX, | ||
170 | .flags = IORESOURCE_IRQ, | ||
171 | }, | ||
172 | }; | ||
173 | |||
174 | struct platform_device pxa168_device_gpio = { | ||
175 | .name = "pxa-gpio", | ||
176 | .id = -1, | ||
177 | .num_resources = ARRAY_SIZE(pxa168_resource_gpio), | ||
178 | .resource = pxa168_resource_gpio, | ||
179 | }; | ||
180 | |||
177 | struct resource pxa168_usb_host_resources[] = { | 181 | struct resource pxa168_usb_host_resources[] = { |
178 | /* USB Host conroller register base */ | 182 | /* USB Host conroller register base */ |
179 | [0] = { | 183 | [0] = { |
diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 4ebbfbba39fc..3241a25784d0 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/list.h> | 13 | #include <linux/list.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/platform_device.h> | ||
15 | 16 | ||
16 | #include <asm/mach/time.h> | 17 | #include <asm/mach/time.h> |
17 | #include <mach/addr-map.h> | 18 | #include <mach/addr-map.h> |
@@ -19,7 +20,6 @@ | |||
19 | #include <mach/regs-apmu.h> | 20 | #include <mach/regs-apmu.h> |
20 | #include <mach/cputype.h> | 21 | #include <mach/cputype.h> |
21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
22 | #include <mach/gpio-pxa.h> | ||
23 | #include <mach/dma.h> | 23 | #include <mach/dma.h> |
24 | #include <mach/mfp.h> | 24 | #include <mach/mfp.h> |
25 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
@@ -77,26 +77,9 @@ static struct mfp_addr_map pxa910_mfp_addr_map[] __initdata = | |||
77 | MFP_ADDR_END, | 77 | MFP_ADDR_END, |
78 | }; | 78 | }; |
79 | 79 | ||
80 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x09c) | ||
81 | |||
82 | static void __init pxa910_init_gpio(void) | ||
83 | { | ||
84 | int i; | ||
85 | |||
86 | /* enable GPIO clock */ | ||
87 | __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_PXA910_GPIO); | ||
88 | |||
89 | /* unmask GPIO edge detection for all 4 banks - APMASKx */ | ||
90 | for (i = 0; i < 4; i++) | ||
91 | __raw_writel(0xffffffff, APMASK(i)); | ||
92 | |||
93 | pxa_init_gpio(IRQ_PXA910_AP_GPIO, 0, 127, NULL); | ||
94 | } | ||
95 | |||
96 | void __init pxa910_init_irq(void) | 80 | void __init pxa910_init_irq(void) |
97 | { | 81 | { |
98 | icu_init_irq(); | 82 | icu_init_irq(); |
99 | pxa910_init_gpio(); | ||
100 | } | 83 | } |
101 | 84 | ||
102 | /* APB peripheral clocks */ | 85 | /* APB peripheral clocks */ |
@@ -108,6 +91,7 @@ static APBC_CLK(pwm1, PXA910_PWM1, 1, 13000000); | |||
108 | static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000); | 91 | static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000); |
109 | static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); | 92 | static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); |
110 | static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); | 93 | static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); |
94 | static APBC_CLK(gpio, PXA910_GPIO, 0, 13000000); | ||
111 | 95 | ||
112 | static APMU_CLK(nand, NAND, 0x19b, 156000000); | 96 | static APMU_CLK(nand, NAND, 0x19b, 156000000); |
113 | static APMU_CLK(u2o, USB, 0x1b, 480000000); | 97 | static APMU_CLK(u2o, USB, 0x1b, 480000000); |
@@ -123,6 +107,7 @@ static struct clk_lookup pxa910_clkregs[] = { | |||
123 | INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), | 107 | INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), |
124 | INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), | 108 | INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), |
125 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), | 109 | INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), |
110 | INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), | ||
126 | INIT_CLKREG(&clk_u2o, "pxa-u2o", "U2OCLK"), | 111 | INIT_CLKREG(&clk_u2o, "pxa-u2o", "U2OCLK"), |
127 | }; | 112 | }; |
128 | 113 | ||
@@ -179,3 +164,22 @@ PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE, 0xd401a400, 0x10); | |||
179 | PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); | 164 | PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); |
180 | PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); | 165 | PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); |
181 | PXA910_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); | 166 | PXA910_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99); |
167 | |||
168 | struct resource pxa910_resource_gpio[] = { | ||
169 | { | ||
170 | .start = 0xd4019000, | ||
171 | .end = 0xd4019fff, | ||
172 | .flags = IORESOURCE_MEM, | ||
173 | }, { | ||
174 | .start = IRQ_PXA910_AP_GPIO, | ||
175 | .end = IRQ_PXA910_AP_GPIO, | ||
176 | .flags = IORESOURCE_IRQ, | ||
177 | }, | ||
178 | }; | ||
179 | |||
180 | struct platform_device pxa910_device_gpio = { | ||
181 | .name = "pxa-gpio", | ||
182 | .id = -1, | ||
183 | .num_resources = ARRAY_SIZE(pxa910_resource_gpio), | ||
184 | .resource = pxa910_resource_gpio, | ||
185 | }; | ||
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c index eb5be879fd8c..bb2ddb72bca2 100644 --- a/arch/arm/mach-mmp/tavorevb.c +++ b/arch/arm/mach-mmp/tavorevb.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <mach/addr-map.h> | 19 | #include <mach/addr-map.h> |
20 | #include <mach/mfp-pxa910.h> | 20 | #include <mach/mfp-pxa910.h> |
21 | #include <mach/pxa910.h> | 21 | #include <mach/pxa910.h> |
22 | #include <mach/irqs.h> | ||
22 | 23 | ||
23 | #include "common.h" | 24 | #include "common.h" |
24 | 25 | ||
@@ -71,8 +72,8 @@ static struct resource smc91x_resources[] = { | |||
71 | .flags = IORESOURCE_MEM, | 72 | .flags = IORESOURCE_MEM, |
72 | }, | 73 | }, |
73 | [1] = { | 74 | [1] = { |
74 | .start = gpio_to_irq(80), | 75 | .start = MMP_GPIO_TO_IRQ(80), |
75 | .end = gpio_to_irq(80), | 76 | .end = MMP_GPIO_TO_IRQ(80), |
76 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, | 77 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, |
77 | } | 78 | } |
78 | }; | 79 | }; |
@@ -93,6 +94,7 @@ static void __init tavorevb_init(void) | |||
93 | 94 | ||
94 | /* on-chip devices */ | 95 | /* on-chip devices */ |
95 | pxa910_add_uart(1); | 96 | pxa910_add_uart(1); |
97 | platform_device_register(&pxa910_device_gpio); | ||
96 | 98 | ||
97 | /* off-chip devices */ | 99 | /* off-chip devices */ |
98 | platform_device_register(&smc91x_device); | 100 | platform_device_register(&smc91x_device); |
diff --git a/arch/arm/mach-mmp/teton_bga.c b/arch/arm/mach-mmp/teton_bga.c index bbe4727b96cc..703de85b571c 100644 --- a/arch/arm/mach-mmp/teton_bga.c +++ b/arch/arm/mach-mmp/teton_bga.c | |||
@@ -66,7 +66,7 @@ static struct pxa27x_keypad_platform_data teton_bga_keypad_info __initdata = { | |||
66 | static struct i2c_board_info teton_bga_i2c_info[] __initdata = { | 66 | static struct i2c_board_info teton_bga_i2c_info[] __initdata = { |
67 | { | 67 | { |
68 | I2C_BOARD_INFO("ds1337", 0x68), | 68 | I2C_BOARD_INFO("ds1337", 0x68), |
69 | .irq = gpio_to_irq(RTC_INT_GPIO) | 69 | .irq = MMP_GPIO_TO_IRQ(RTC_INT_GPIO) |
70 | }, | 70 | }, |
71 | }; | 71 | }; |
72 | 72 | ||
@@ -78,6 +78,7 @@ static void __init teton_bga_init(void) | |||
78 | pxa168_add_uart(1); | 78 | pxa168_add_uart(1); |
79 | pxa168_add_keypad(&teton_bga_keypad_info); | 79 | pxa168_add_keypad(&teton_bga_keypad_info); |
80 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info)); | 80 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info)); |
81 | platform_device_register(&pxa168_device_gpio); | ||
81 | } | 82 | } |
82 | 83 | ||
83 | MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform") | 84 | MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform") |
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index 176515a76989..a80ed262df1c 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c | |||
@@ -24,12 +24,13 @@ | |||
24 | #include <mach/addr-map.h> | 24 | #include <mach/addr-map.h> |
25 | #include <mach/mfp-pxa910.h> | 25 | #include <mach/mfp-pxa910.h> |
26 | #include <mach/pxa910.h> | 26 | #include <mach/pxa910.h> |
27 | #include <mach/irqs.h> | ||
27 | 28 | ||
28 | #include "common.h" | 29 | #include "common.h" |
29 | 30 | ||
30 | #define TTCDKB_GPIO_EXT0(x) (NR_BUILTIN_GPIO + ((x < 0) ? 0 : \ | 31 | #define TTCDKB_GPIO_EXT0(x) (MMP_NR_BUILTIN_GPIO + ((x < 0) ? 0 : \ |
31 | ((x < 16) ? x : 15))) | 32 | ((x < 16) ? x : 15))) |
32 | #define TTCDKB_GPIO_EXT1(x) (NR_BUILTIN_GPIO + 16 + ((x < 0) ? 0 : \ | 33 | #define TTCDKB_GPIO_EXT1(x) (MMP_NR_BUILTIN_GPIO + 16 + ((x < 0) ? 0 : \ |
33 | ((x < 16) ? x : 15))) | 34 | ((x < 16) ? x : 15))) |
34 | 35 | ||
35 | /* | 36 | /* |
@@ -122,6 +123,7 @@ static struct platform_device ttc_dkb_device_onenand = { | |||
122 | }; | 123 | }; |
123 | 124 | ||
124 | static struct platform_device *ttc_dkb_devices[] = { | 125 | static struct platform_device *ttc_dkb_devices[] = { |
126 | &pxa910_device_gpio, | ||
125 | &ttc_dkb_device_onenand, | 127 | &ttc_dkb_device_onenand, |
126 | }; | 128 | }; |
127 | 129 | ||
@@ -136,7 +138,7 @@ static struct i2c_board_info ttc_dkb_i2c_info[] = { | |||
136 | { | 138 | { |
137 | .type = "max7312", | 139 | .type = "max7312", |
138 | .addr = 0x23, | 140 | .addr = 0x23, |
139 | .irq = IRQ_GPIO(80), | 141 | .irq = MMP_GPIO_TO_IRQ(80), |
140 | .platform_data = &max7312_data, | 142 | .platform_data = &max7312_data, |
141 | }, | 143 | }, |
142 | }; | 144 | }; |