diff options
Diffstat (limited to 'arch/arm')
226 files changed, 872 insertions, 3041 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3146ed3f6eca..4792d2928fa3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -835,6 +835,7 @@ config ARCH_U300 | |||
835 | select CLKDEV_LOOKUP | 835 | select CLKDEV_LOOKUP |
836 | select HAVE_MACH_CLKDEV | 836 | select HAVE_MACH_CLKDEV |
837 | select GENERIC_GPIO | 837 | select GENERIC_GPIO |
838 | select ARCH_REQUIRE_GPIOLIB | ||
838 | help | 839 | help |
839 | Support for ST-Ericsson U300 series mobile platforms. | 840 | Support for ST-Ericsson U300 series mobile platforms. |
840 | 841 | ||
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index a07b0e763a80..1cde34a080d7 100644 --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c | |||
@@ -12,11 +12,11 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/gpio.h> | ||
15 | #include <linux/string.h> | 16 | #include <linux/string.h> |
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
18 | #include <linux/io.h> | 19 | #include <linux/io.h> |
19 | #include <asm/gpio.h> | ||
20 | #include <asm/hardware/scoop.h> | 20 | #include <asm/hardware/scoop.h> |
21 | 21 | ||
22 | /* PCMCIA to Scoop linkage | 22 | /* PCMCIA to Scoop linkage |
diff --git a/arch/arm/include/asm/gpio.h b/arch/arm/include/asm/gpio.h index 166a7a3e2840..11ad0bfbb0ad 100644 --- a/arch/arm/include/asm/gpio.h +++ b/arch/arm/include/asm/gpio.h | |||
@@ -4,4 +4,23 @@ | |||
4 | /* not all ARM platforms necessarily support this API ... */ | 4 | /* not all ARM platforms necessarily support this API ... */ |
5 | #include <mach/gpio.h> | 5 | #include <mach/gpio.h> |
6 | 6 | ||
7 | #ifndef __ARM_GPIOLIB_COMPLEX | ||
8 | /* Note: this may rely upon the value of ARCH_NR_GPIOS set in mach/gpio.h */ | ||
9 | #include <asm-generic/gpio.h> | ||
10 | |||
11 | /* The trivial gpiolib dispatchers */ | ||
12 | #define gpio_get_value __gpio_get_value | ||
13 | #define gpio_set_value __gpio_set_value | ||
14 | #define gpio_cansleep __gpio_cansleep | ||
15 | #endif | ||
16 | |||
17 | /* | ||
18 | * Provide a default gpio_to_irq() which should satisfy every case. | ||
19 | * However, some platforms want to do this differently, so allow them | ||
20 | * to override it. | ||
21 | */ | ||
22 | #ifndef gpio_to_irq | ||
23 | #define gpio_to_irq __gpio_to_irq | ||
24 | #endif | ||
25 | |||
7 | #endif /* _ARCH_ARM_GPIO_H */ | 26 | #endif /* _ARCH_ARM_GPIO_H */ |
diff --git a/arch/arm/include/asm/hardware/iop3xx-gpio.h b/arch/arm/include/asm/hardware/iop3xx-gpio.h index b69d972b1f7d..9eda7dc92ad8 100644 --- a/arch/arm/include/asm/hardware/iop3xx-gpio.h +++ b/arch/arm/include/asm/hardware/iop3xx-gpio.h | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
29 | #include <asm-generic/gpio.h> | 29 | #include <asm-generic/gpio.h> |
30 | 30 | ||
31 | #define __ARM_GPIOLIB_COMPLEX | ||
32 | |||
31 | #define IOP3XX_N_GPIOS 8 | 33 | #define IOP3XX_N_GPIOS 8 |
32 | 34 | ||
33 | static inline int gpio_get_value(unsigned gpio) | 35 | static inline int gpio_get_value(unsigned gpio) |
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c index dba0d8d8a4bd..f87f5040e78e 100644 --- a/arch/arm/mach-at91/at91cap9_devices.c +++ b/arch/arm/mach-at91/at91cap9_devices.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/mach/irq.h> | 16 | #include <asm/mach/irq.h> |
17 | 17 | ||
18 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
19 | #include <linux/gpio.h> | ||
19 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
20 | #include <linux/i2c-gpio.h> | 21 | #include <linux/i2c-gpio.h> |
21 | 22 | ||
@@ -23,7 +24,6 @@ | |||
23 | 24 | ||
24 | #include <mach/board.h> | 25 | #include <mach/board.h> |
25 | #include <mach/cpu.h> | 26 | #include <mach/cpu.h> |
26 | #include <mach/gpio.h> | ||
27 | #include <mach/at91cap9.h> | 27 | #include <mach/at91cap9.h> |
28 | #include <mach/at91cap9_matrix.h> | 28 | #include <mach/at91cap9_matrix.h> |
29 | #include <mach/at91sam9_smc.h> | 29 | #include <mach/at91sam9_smc.h> |
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 7227755ffec6..978be950035a 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
@@ -14,11 +14,11 @@ | |||
14 | #include <asm/mach/map.h> | 14 | #include <asm/mach/map.h> |
15 | 15 | ||
16 | #include <linux/dma-mapping.h> | 16 | #include <linux/dma-mapping.h> |
17 | #include <linux/gpio.h> | ||
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
18 | #include <linux/i2c-gpio.h> | 19 | #include <linux/i2c-gpio.h> |
19 | 20 | ||
20 | #include <mach/board.h> | 21 | #include <mach/board.h> |
21 | #include <mach/gpio.h> | ||
22 | #include <mach/at91rm9200.h> | 22 | #include <mach/at91rm9200.h> |
23 | #include <mach/at91rm9200_mc.h> | 23 | #include <mach/at91rm9200_mc.h> |
24 | 24 | ||
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 39f81f47b4ba..a53b3de9daa2 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
@@ -13,11 +13,11 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | 14 | ||
15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
16 | #include <linux/gpio.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <linux/i2c-gpio.h> | 18 | #include <linux/i2c-gpio.h> |
18 | 19 | ||
19 | #include <mach/board.h> | 20 | #include <mach/board.h> |
20 | #include <mach/gpio.h> | ||
21 | #include <mach/cpu.h> | 21 | #include <mach/cpu.h> |
22 | #include <mach/at91sam9260.h> | 22 | #include <mach/at91sam9260.h> |
23 | #include <mach/at91sam9260_matrix.h> | 23 | #include <mach/at91sam9260_matrix.h> |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 0f917928eeb7..4e647b653339 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/mach/map.h> | 14 | #include <asm/mach/map.h> |
15 | 15 | ||
16 | #include <linux/dma-mapping.h> | 16 | #include <linux/dma-mapping.h> |
17 | #include <linux/gpio.h> | ||
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
18 | #include <linux/i2c-gpio.h> | 19 | #include <linux/i2c-gpio.h> |
19 | 20 | ||
@@ -21,7 +22,6 @@ | |||
21 | #include <video/atmel_lcdc.h> | 22 | #include <video/atmel_lcdc.h> |
22 | 23 | ||
23 | #include <mach/board.h> | 24 | #include <mach/board.h> |
24 | #include <mach/gpio.h> | ||
25 | #include <mach/at91sam9261.h> | 25 | #include <mach/at91sam9261.h> |
26 | #include <mach/at91sam9261_matrix.h> | 26 | #include <mach/at91sam9261_matrix.h> |
27 | #include <mach/at91sam9_smc.h> | 27 | #include <mach/at91sam9_smc.h> |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index a050f41fc860..dd7662bc395f 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | 14 | ||
15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
16 | #include <linux/gpio.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <linux/i2c-gpio.h> | 18 | #include <linux/i2c-gpio.h> |
18 | 19 | ||
@@ -20,7 +21,6 @@ | |||
20 | #include <video/atmel_lcdc.h> | 21 | #include <video/atmel_lcdc.h> |
21 | 22 | ||
22 | #include <mach/board.h> | 23 | #include <mach/board.h> |
23 | #include <mach/gpio.h> | ||
24 | #include <mach/at91sam9263.h> | 24 | #include <mach/at91sam9263.h> |
25 | #include <mach/at91sam9263_matrix.h> | 25 | #include <mach/at91sam9263_matrix.h> |
26 | #include <mach/at91sam9_smc.h> | 26 | #include <mach/at91sam9_smc.h> |
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 600bffb01edb..c3dfb1b3b1e3 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | 14 | ||
15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
16 | #include <linux/gpio.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <linux/i2c-gpio.h> | 18 | #include <linux/i2c-gpio.h> |
18 | #include <linux/atmel-mci.h> | 19 | #include <linux/atmel-mci.h> |
@@ -21,7 +22,6 @@ | |||
21 | #include <video/atmel_lcdc.h> | 22 | #include <video/atmel_lcdc.h> |
22 | 23 | ||
23 | #include <mach/board.h> | 24 | #include <mach/board.h> |
24 | #include <mach/gpio.h> | ||
25 | #include <mach/at91sam9g45.h> | 25 | #include <mach/at91sam9g45.h> |
26 | #include <mach/at91sam9g45_matrix.h> | 26 | #include <mach/at91sam9g45_matrix.h> |
27 | #include <mach/at91sam9_smc.h> | 27 | #include <mach/at91sam9_smc.h> |
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index aacb19dc9225..305a851b5bff 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <asm/mach/map.h> | 10 | #include <asm/mach/map.h> |
11 | 11 | ||
12 | #include <linux/dma-mapping.h> | 12 | #include <linux/dma-mapping.h> |
13 | #include <linux/gpio.h> | ||
13 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
14 | #include <linux/i2c-gpio.h> | 15 | #include <linux/i2c-gpio.h> |
15 | 16 | ||
@@ -17,7 +18,6 @@ | |||
17 | #include <video/atmel_lcdc.h> | 18 | #include <video/atmel_lcdc.h> |
18 | 19 | ||
19 | #include <mach/board.h> | 20 | #include <mach/board.h> |
20 | #include <mach/gpio.h> | ||
21 | #include <mach/at91sam9rl.h> | 21 | #include <mach/at91sam9rl.h> |
22 | #include <mach/at91sam9rl_matrix.h> | 22 | #include <mach/at91sam9rl_matrix.h> |
23 | #include <mach/at91sam9_smc.h> | 23 | #include <mach/at91sam9_smc.h> |
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c index 5aa58851eb39..367d5cd5e362 100644 --- a/arch/arm/mach-at91/board-1arm.c +++ b/arch/arm/mach-at91/board-1arm.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/gpio.h> | ||
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
@@ -34,7 +35,6 @@ | |||
34 | #include <asm/mach/irq.h> | 35 | #include <asm/mach/irq.h> |
35 | 36 | ||
36 | #include <mach/board.h> | 37 | #include <mach/board.h> |
37 | #include <mach/gpio.h> | ||
38 | #include <mach/cpu.h> | 38 | #include <mach/cpu.h> |
39 | 39 | ||
40 | #include "generic.h" | 40 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c index b0c796d42e49..0487ea10c2d6 100644 --- a/arch/arm/mach-at91/board-afeb-9260v1.c +++ b/arch/arm/mach-at91/board-afeb-9260v1.c | |||
@@ -25,6 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/gpio.h> | ||
28 | #include <linux/init.h> | 29 | #include <linux/init.h> |
29 | #include <linux/mm.h> | 30 | #include <linux/mm.h> |
30 | #include <linux/module.h> | 31 | #include <linux/module.h> |
@@ -43,7 +44,6 @@ | |||
43 | #include <asm/mach/irq.h> | 44 | #include <asm/mach/irq.h> |
44 | 45 | ||
45 | #include <mach/board.h> | 46 | #include <mach/board.h> |
46 | #include <mach/gpio.h> | ||
47 | 47 | ||
48 | #include "generic.h" | 48 | #include "generic.h" |
49 | 49 | ||
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c index d1abd5898e85..747b2eaa9737 100644 --- a/arch/arm/mach-at91/board-cam60.c +++ b/arch/arm/mach-at91/board-cam60.c | |||
@@ -21,6 +21,7 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/gpio.h> | ||
24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
25 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
26 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -38,7 +39,6 @@ | |||
38 | #include <asm/mach/irq.h> | 39 | #include <asm/mach/irq.h> |
39 | 40 | ||
40 | #include <mach/board.h> | 41 | #include <mach/board.h> |
41 | #include <mach/gpio.h> | ||
42 | #include <mach/at91sam9_smc.h> | 42 | #include <mach/at91sam9_smc.h> |
43 | 43 | ||
44 | #include "sam9_smc.h" | 44 | #include "sam9_smc.h" |
diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c index 679b0b743e92..062670351a6a 100644 --- a/arch/arm/mach-at91/board-cap9adk.c +++ b/arch/arm/mach-at91/board-cap9adk.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | #include <linux/gpio.h> | ||
25 | #include <linux/init.h> | 26 | #include <linux/init.h> |
26 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
27 | #include <linux/module.h> | 28 | #include <linux/module.h> |
@@ -41,7 +42,6 @@ | |||
41 | #include <asm/mach/map.h> | 42 | #include <asm/mach/map.h> |
42 | 43 | ||
43 | #include <mach/board.h> | 44 | #include <mach/board.h> |
44 | #include <mach/gpio.h> | ||
45 | #include <mach/at91cap9_matrix.h> | 45 | #include <mach/at91cap9_matrix.h> |
46 | #include <mach/at91sam9_smc.h> | 46 | #include <mach/at91sam9_smc.h> |
47 | #include <mach/system_rev.h> | 47 | #include <mach/system_rev.h> |
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c index c578c5d90728..774c87fcbd5b 100644 --- a/arch/arm/mach-at91/board-carmeva.c +++ b/arch/arm/mach-at91/board-carmeva.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -35,7 +36,6 @@ | |||
35 | 36 | ||
36 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
37 | #include <mach/board.h> | 38 | #include <mach/board.h> |
38 | #include <mach/gpio.h> | ||
39 | 39 | ||
40 | #include "generic.h" | 40 | #include "generic.h" |
41 | 41 | ||
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c index f4da8a16d5dc..fc885a4ce243 100644 --- a/arch/arm/mach-at91/board-cpu9krea.c +++ b/arch/arm/mach-at91/board-cpu9krea.c | |||
@@ -21,6 +21,7 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/gpio.h> | ||
24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
25 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
26 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -40,7 +41,6 @@ | |||
40 | 41 | ||
41 | #include <mach/hardware.h> | 42 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 43 | #include <mach/board.h> |
43 | #include <mach/gpio.h> | ||
44 | #include <mach/at91sam9_smc.h> | 44 | #include <mach/at91sam9_smc.h> |
45 | #include <mach/at91sam9260_matrix.h> | 45 | #include <mach/at91sam9260_matrix.h> |
46 | 46 | ||
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c index 2d919f5a4f57..d35e65b08ccd 100644 --- a/arch/arm/mach-at91/board-cpuat91.c +++ b/arch/arm/mach-at91/board-cpuat91.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/gpio.h> | ||
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
@@ -36,7 +37,6 @@ | |||
36 | #include <asm/mach/irq.h> | 37 | #include <asm/mach/irq.h> |
37 | 38 | ||
38 | #include <mach/board.h> | 39 | #include <mach/board.h> |
39 | #include <mach/gpio.h> | ||
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | #include <mach/cpu.h> | 41 | #include <mach/cpu.h> |
42 | 42 | ||
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c index 17654d5e94e6..c3936665e645 100644 --- a/arch/arm/mach-at91/board-csb337.c +++ b/arch/arm/mach-at91/board-csb337.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/gpio.h> | ||
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
@@ -38,7 +39,6 @@ | |||
38 | 39 | ||
39 | #include <mach/hardware.h> | 40 | #include <mach/hardware.h> |
40 | #include <mach/board.h> | 41 | #include <mach/board.h> |
41 | #include <mach/gpio.h> | ||
42 | 42 | ||
43 | #include "generic.h" | 43 | #include "generic.h" |
44 | 44 | ||
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c index 72b55674616c..586100e2acbb 100644 --- a/arch/arm/mach-at91/board-csb637.c +++ b/arch/arm/mach-at91/board-csb637.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
25 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
@@ -35,7 +36,6 @@ | |||
35 | 36 | ||
36 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
37 | #include <mach/board.h> | 38 | #include <mach/board.h> |
38 | #include <mach/gpio.h> | ||
39 | 39 | ||
40 | #include "generic.h" | 40 | #include "generic.h" |
41 | 41 | ||
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c index 01170a2766a8..45db7a3dbef0 100644 --- a/arch/arm/mach-at91/board-eb9200.c +++ b/arch/arm/mach-at91/board-eb9200.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -35,7 +36,6 @@ | |||
35 | #include <asm/mach/irq.h> | 36 | #include <asm/mach/irq.h> |
36 | 37 | ||
37 | #include <mach/board.h> | 38 | #include <mach/board.h> |
38 | #include <mach/gpio.h> | ||
39 | 39 | ||
40 | #include "generic.h" | 40 | #include "generic.h" |
41 | 41 | ||
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c index 7c0313c51f26..2f9c16d29212 100644 --- a/arch/arm/mach-at91/board-ecbat91.c +++ b/arch/arm/mach-at91/board-ecbat91.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -37,7 +38,6 @@ | |||
37 | #include <asm/mach/irq.h> | 38 | #include <asm/mach/irq.h> |
38 | 39 | ||
39 | #include <mach/board.h> | 40 | #include <mach/board.h> |
40 | #include <mach/gpio.h> | ||
41 | #include <mach/cpu.h> | 41 | #include <mach/cpu.h> |
42 | 42 | ||
43 | #include "generic.h" | 43 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c index 4a170890b3b1..3bae73e63633 100644 --- a/arch/arm/mach-at91/board-kafa.c +++ b/arch/arm/mach-at91/board-kafa.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | #include <linux/gpio.h> | ||
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/mm.h> | 24 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
@@ -34,7 +35,6 @@ | |||
34 | #include <asm/mach/irq.h> | 35 | #include <asm/mach/irq.h> |
35 | 36 | ||
36 | #include <mach/board.h> | 37 | #include <mach/board.h> |
37 | #include <mach/gpio.h> | ||
38 | #include <mach/cpu.h> | 38 | #include <mach/cpu.h> |
39 | 39 | ||
40 | #include "generic.h" | 40 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index 9dc8d496ead1..15a3f1a87ab0 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -35,7 +36,6 @@ | |||
35 | #include <asm/mach/irq.h> | 36 | #include <asm/mach/irq.h> |
36 | 37 | ||
37 | #include <mach/board.h> | 38 | #include <mach/board.h> |
38 | #include <mach/gpio.h> | ||
39 | #include <mach/cpu.h> | 39 | #include <mach/cpu.h> |
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | 41 | ||
diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c index 9bc6ab32e0ac..6094496f7edb 100644 --- a/arch/arm/mach-at91/board-neocore926.c +++ b/arch/arm/mach-at91/board-neocore926.c | |||
@@ -21,6 +21,7 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/gpio.h> | ||
24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
25 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
26 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -44,7 +45,6 @@ | |||
44 | 45 | ||
45 | #include <mach/hardware.h> | 46 | #include <mach/hardware.h> |
46 | #include <mach/board.h> | 47 | #include <mach/board.h> |
47 | #include <mach/gpio.h> | ||
48 | #include <mach/at91sam9_smc.h> | 48 | #include <mach/at91sam9_smc.h> |
49 | 49 | ||
50 | #include "sam9_smc.h" | 50 | #include "sam9_smc.h" |
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index b7b8390e8a00..0a8fe6a1b7c8 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -37,7 +38,6 @@ | |||
37 | #include <asm/mach/irq.h> | 38 | #include <asm/mach/irq.h> |
38 | 39 | ||
39 | #include <mach/board.h> | 40 | #include <mach/board.h> |
40 | #include <mach/gpio.h> | ||
41 | #include <mach/at91rm9200_mc.h> | 41 | #include <mach/at91rm9200_mc.h> |
42 | 42 | ||
43 | #include "generic.h" | 43 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c index 81f911033681..938cc390bea3 100644 --- a/arch/arm/mach-at91/board-qil-a9260.c +++ b/arch/arm/mach-at91/board-qil-a9260.c | |||
@@ -21,6 +21,7 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/gpio.h> | ||
24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
25 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
26 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -40,7 +41,6 @@ | |||
40 | 41 | ||
41 | #include <mach/hardware.h> | 42 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 43 | #include <mach/board.h> |
43 | #include <mach/gpio.h> | ||
44 | #include <mach/at91sam9_smc.h> | 44 | #include <mach/at91sam9_smc.h> |
45 | #include <mach/at91_shdwc.h> | 45 | #include <mach/at91_shdwc.h> |
46 | 46 | ||
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c index 6f08faadb474..b4ac30e38a9e 100644 --- a/arch/arm/mach-at91/board-rm9200dk.c +++ b/arch/arm/mach-at91/board-rm9200dk.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | #include <linux/gpio.h> | ||
25 | #include <linux/init.h> | 26 | #include <linux/init.h> |
26 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
27 | #include <linux/module.h> | 28 | #include <linux/module.h> |
@@ -39,7 +40,6 @@ | |||
39 | 40 | ||
40 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
41 | #include <mach/board.h> | 42 | #include <mach/board.h> |
42 | #include <mach/gpio.h> | ||
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | 44 | ||
45 | #include "generic.h" | 45 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c index 85bcccd7b9e4..99fd7f8aee0e 100644 --- a/arch/arm/mach-at91/board-rm9200ek.c +++ b/arch/arm/mach-at91/board-rm9200ek.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | #include <linux/gpio.h> | ||
25 | #include <linux/init.h> | 26 | #include <linux/init.h> |
26 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
27 | #include <linux/module.h> | 28 | #include <linux/module.h> |
@@ -39,7 +40,6 @@ | |||
39 | 40 | ||
40 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
41 | #include <mach/board.h> | 42 | #include <mach/board.h> |
42 | #include <mach/gpio.h> | ||
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | 44 | ||
45 | #include "generic.h" | 45 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c index 4d3a02f1289e..2a21e790250e 100644 --- a/arch/arm/mach-at91/board-sam9-l9260.c +++ b/arch/arm/mach-at91/board-sam9-l9260.c | |||
@@ -21,6 +21,7 @@ | |||
21 | */ | 21 | */ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/gpio.h> | ||
24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
25 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
26 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -37,7 +38,6 @@ | |||
37 | #include <asm/mach/irq.h> | 38 | #include <asm/mach/irq.h> |
38 | 39 | ||
39 | #include <mach/board.h> | 40 | #include <mach/board.h> |
40 | #include <mach/gpio.h> | ||
41 | #include <mach/at91sam9_smc.h> | 41 | #include <mach/at91sam9_smc.h> |
42 | 42 | ||
43 | #include "sam9_smc.h" | 43 | #include "sam9_smc.h" |
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index 8a50c3e67186..89c8b579bfda 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -41,7 +42,6 @@ | |||
41 | 42 | ||
42 | #include <mach/hardware.h> | 43 | #include <mach/hardware.h> |
43 | #include <mach/board.h> | 44 | #include <mach/board.h> |
44 | #include <mach/gpio.h> | ||
45 | #include <mach/at91sam9_smc.h> | 45 | #include <mach/at91sam9_smc.h> |
46 | #include <mach/at91_shdwc.h> | 46 | #include <mach/at91_shdwc.h> |
47 | #include <mach/system_rev.h> | 47 | #include <mach/system_rev.h> |
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index 5096a0ec50c1..3741f43cdae9 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -45,7 +46,6 @@ | |||
45 | 46 | ||
46 | #include <mach/hardware.h> | 47 | #include <mach/hardware.h> |
47 | #include <mach/board.h> | 48 | #include <mach/board.h> |
48 | #include <mach/gpio.h> | ||
49 | #include <mach/at91sam9_smc.h> | 49 | #include <mach/at91sam9_smc.h> |
50 | #include <mach/at91_shdwc.h> | 50 | #include <mach/at91_shdwc.h> |
51 | #include <mach/system_rev.h> | 51 | #include <mach/system_rev.h> |
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index ea8f185d3b9d..a580dd451a41 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/gpio.h> | ||
23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
24 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
25 | #include <linux/module.h> | 26 | #include <linux/module.h> |
@@ -44,7 +45,6 @@ | |||
44 | 45 | ||
45 | #include <mach/hardware.h> | 46 | #include <mach/hardware.h> |
46 | #include <mach/board.h> | 47 | #include <mach/board.h> |
47 | #include <mach/gpio.h> | ||
48 | #include <mach/at91sam9_smc.h> | 48 | #include <mach/at91sam9_smc.h> |
49 | #include <mach/at91_shdwc.h> | 49 | #include <mach/at91_shdwc.h> |
50 | #include <mach/system_rev.h> | 50 | #include <mach/system_rev.h> |
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index 817f59d7251b..8d77c2ff96b2 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/types.h> | 20 | #include <linux/types.h> |
21 | #include <linux/gpio.h> | ||
21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
22 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
23 | #include <linux/module.h> | 24 | #include <linux/module.h> |
@@ -41,7 +42,6 @@ | |||
41 | #include <asm/mach/irq.h> | 42 | #include <asm/mach/irq.h> |
42 | 43 | ||
43 | #include <mach/board.h> | 44 | #include <mach/board.h> |
44 | #include <mach/gpio.h> | ||
45 | #include <mach/at91sam9_smc.h> | 45 | #include <mach/at91sam9_smc.h> |
46 | #include <mach/system_rev.h> | 46 | #include <mach/system_rev.h> |
47 | 47 | ||
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index ad234ccbf57e..2d6203ac1a42 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c | |||
@@ -14,6 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | #include <linux/gpio.h> | ||
17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
18 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
@@ -38,7 +39,6 @@ | |||
38 | #include <asm/mach/irq.h> | 39 | #include <asm/mach/irq.h> |
39 | 40 | ||
40 | #include <mach/board.h> | 41 | #include <mach/board.h> |
41 | #include <mach/gpio.h> | ||
42 | #include <mach/at91sam9_smc.h> | 42 | #include <mach/at91sam9_smc.h> |
43 | #include <mach/at91_shdwc.h> | 43 | #include <mach/at91_shdwc.h> |
44 | #include <mach/system_rev.h> | 44 | #include <mach/system_rev.h> |
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 4f14b54b93a8..39a28effc3df 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/gpio.h> | ||
11 | #include <linux/init.h> | 12 | #include <linux/init.h> |
12 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
@@ -30,7 +31,6 @@ | |||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <mach/board.h> | 33 | #include <mach/board.h> |
33 | #include <mach/gpio.h> | ||
34 | #include <mach/at91sam9_smc.h> | 34 | #include <mach/at91sam9_smc.h> |
35 | #include <mach/at91_shdwc.h> | 35 | #include <mach/at91_shdwc.h> |
36 | 36 | ||
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c index 260260b81992..5852d3d9890c 100644 --- a/arch/arm/mach-at91/board-usb-a926x.c +++ b/arch/arm/mach-at91/board-usb-a926x.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
29 | #include <linux/spi/spi.h> | 29 | #include <linux/spi/spi.h> |
30 | #include <linux/gpio_keys.h> | 30 | #include <linux/gpio_keys.h> |
31 | #include <linux/gpio.h> | ||
31 | #include <linux/input.h> | 32 | #include <linux/input.h> |
32 | #include <linux/spi/mmc_spi.h> | 33 | #include <linux/spi/mmc_spi.h> |
33 | 34 | ||
@@ -41,7 +42,6 @@ | |||
41 | 42 | ||
42 | #include <mach/hardware.h> | 43 | #include <mach/hardware.h> |
43 | #include <mach/board.h> | 44 | #include <mach/board.h> |
44 | #include <mach/gpio.h> | ||
45 | #include <mach/at91sam9_smc.h> | 45 | #include <mach/at91sam9_smc.h> |
46 | #include <mach/at91_shdwc.h> | 46 | #include <mach/at91_shdwc.h> |
47 | 47 | ||
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index 95edcbd2aec6..3c288b396fc4 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | #include <linux/gpio.h> | ||
25 | #include <linux/init.h> | 26 | #include <linux/init.h> |
26 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
27 | #include <linux/module.h> | 28 | #include <linux/module.h> |
@@ -43,7 +44,6 @@ | |||
43 | 44 | ||
44 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
45 | #include <mach/board.h> | 46 | #include <mach/board.h> |
46 | #include <mach/gpio.h> | ||
47 | #include <mach/at91rm9200_mc.h> | 47 | #include <mach/at91rm9200_mc.h> |
48 | #include <mach/cpu.h> | 48 | #include <mach/cpu.h> |
49 | 49 | ||
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 4615528205c8..224e9e2f8674 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/clk.h> | 12 | #include <linux/clk.h> |
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <linux/gpio.h> | ||
14 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
15 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
16 | #include <linux/debugfs.h> | 17 | #include <linux/debugfs.h> |
@@ -22,9 +23,6 @@ | |||
22 | 23 | ||
23 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
24 | #include <mach/at91_pio.h> | 25 | #include <mach/at91_pio.h> |
25 | #include <mach/gpio.h> | ||
26 | |||
27 | #include <asm/gpio.h> | ||
28 | 26 | ||
29 | #include "generic.h" | 27 | #include "generic.h" |
30 | 28 | ||
diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h index 056dc6674b6b..2b9a1f51210f 100644 --- a/arch/arm/mach-at91/include/mach/gpio.h +++ b/arch/arm/mach-at91/include/mach/gpio.h | |||
@@ -214,11 +214,6 @@ extern void at91_gpio_resume(void); | |||
214 | */ | 214 | */ |
215 | 215 | ||
216 | #include <asm/errno.h> | 216 | #include <asm/errno.h> |
217 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
218 | |||
219 | #define gpio_get_value __gpio_get_value | ||
220 | #define gpio_set_value __gpio_set_value | ||
221 | #define gpio_cansleep __gpio_cansleep | ||
222 | 217 | ||
223 | #define gpio_to_irq(gpio) (gpio) | 218 | #define gpio_to_irq(gpio) (gpio) |
224 | #define irq_to_gpio(irq) (irq) | 219 | #define irq_to_gpio(irq) (irq) |
diff --git a/arch/arm/mach-at91/leds.c b/arch/arm/mach-at91/leds.c index 0415a839e1ad..8dfafe76ffe6 100644 --- a/arch/arm/mach-at91/leds.c +++ b/arch/arm/mach-at91/leds.c | |||
@@ -9,13 +9,13 @@ | |||
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/gpio.h> | ||
12 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
16 | 17 | ||
17 | #include <mach/board.h> | 18 | #include <mach/board.h> |
18 | #include <mach/gpio.h> | ||
19 | 19 | ||
20 | 20 | ||
21 | /* ------------------------------------------------------------------------- */ | 21 | /* ------------------------------------------------------------------------- */ |
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 4159eca78945..7046158109d7 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * (at your option) any later version. | 10 | * (at your option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/gpio.h> | ||
13 | #include <linux/suspend.h> | 14 | #include <linux/suspend.h> |
14 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
15 | #include <linux/proc_fs.h> | 16 | #include <linux/proc_fs.h> |
@@ -25,7 +26,6 @@ | |||
25 | #include <asm/mach/irq.h> | 26 | #include <asm/mach/irq.h> |
26 | 27 | ||
27 | #include <mach/at91_pmc.h> | 28 | #include <mach/at91_pmc.h> |
28 | #include <mach/gpio.h> | ||
29 | #include <mach/cpu.h> | 29 | #include <mach/cpu.h> |
30 | 30 | ||
31 | #include "generic.h" | 31 | #include "generic.h" |
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile index 0b87a1ca2bb3..495e31306fc0 100644 --- a/arch/arm/mach-davinci/Makefile +++ b/arch/arm/mach-davinci/Makefile | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | # Common objects | 6 | # Common objects |
7 | obj-y := time.o clock.o serial.o io.o psc.o \ | 7 | obj-y := time.o clock.o serial.o io.o psc.o \ |
8 | gpio.o dma.o usb.o common.o sram.o aemif.o | 8 | dma.o usb.o common.o sram.o aemif.o |
9 | 9 | ||
10 | obj-$(CONFIG_DAVINCI_MUX) += mux.o | 10 | obj-$(CONFIG_DAVINCI_MUX) += mux.o |
11 | 11 | ||
@@ -17,7 +17,6 @@ obj-$(CONFIG_ARCH_DAVINCI_DM365) += dm365.o devices.o | |||
17 | obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o | 17 | obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o |
18 | obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o | 18 | obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o |
19 | obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += tnetv107x.o devices-tnetv107x.o | 19 | obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += tnetv107x.o devices-tnetv107x.o |
20 | obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += gpio-tnetv107x.o | ||
21 | 20 | ||
22 | obj-$(CONFIG_AINTC) += irq.o | 21 | obj-$(CONFIG_AINTC) += irq.o |
23 | obj-$(CONFIG_CP_INTC) += cp_intc.o | 22 | obj-$(CONFIG_CP_INTC) += cp_intc.o |
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c index 2ed2f822fc40..a6bf5dcaef13 100644 --- a/arch/arm/mach-davinci/da830.c +++ b/arch/arm/mach-davinci/da830.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * is licensed "as is" without any warranty of any kind, whether express | 8 | * is licensed "as is" without any warranty of any kind, whether express |
9 | * or implied. | 9 | * or implied. |
10 | */ | 10 | */ |
11 | #include <linux/gpio.h> | ||
11 | #include <linux/init.h> | 12 | #include <linux/init.h> |
12 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
13 | 14 | ||
@@ -19,7 +20,7 @@ | |||
19 | #include <mach/common.h> | 20 | #include <mach/common.h> |
20 | #include <mach/time.h> | 21 | #include <mach/time.h> |
21 | #include <mach/da8xx.h> | 22 | #include <mach/da8xx.h> |
22 | #include <mach/gpio.h> | 23 | #include <mach/gpio-davinci.h> |
23 | 24 | ||
24 | #include "clock.h" | 25 | #include "clock.h" |
25 | #include "mux.h" | 26 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index 935dbed5c541..4aae01576aab 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * is licensed "as is" without any warranty of any kind, whether express | 11 | * is licensed "as is" without any warranty of any kind, whether express |
12 | * or implied. | 12 | * or implied. |
13 | */ | 13 | */ |
14 | #include <linux/gpio.h> | ||
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/clk.h> | 16 | #include <linux/clk.h> |
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
@@ -27,7 +28,7 @@ | |||
27 | #include <mach/da8xx.h> | 28 | #include <mach/da8xx.h> |
28 | #include <mach/cpufreq.h> | 29 | #include <mach/cpufreq.h> |
29 | #include <mach/pm.h> | 30 | #include <mach/pm.h> |
30 | #include <mach/gpio.h> | 31 | #include <mach/gpio-davinci.h> |
31 | 32 | ||
32 | #include "clock.h" | 33 | #include "clock.h" |
33 | #include "mux.h" | 34 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index a3a94e9c9378..c143f43addcc 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/serial_8250.h> | 13 | #include <linux/serial_8250.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/dma-mapping.h> | 15 | #include <linux/dma-mapping.h> |
16 | #include <linux/gpio.h> | ||
17 | 16 | ||
18 | #include <linux/spi/spi.h> | 17 | #include <linux/spi/spi.h> |
19 | 18 | ||
@@ -30,6 +29,7 @@ | |||
30 | #include <mach/common.h> | 29 | #include <mach/common.h> |
31 | #include <mach/asp.h> | 30 | #include <mach/asp.h> |
32 | #include <mach/spi.h> | 31 | #include <mach/spi.h> |
32 | #include <mach/gpio-davinci.h> | ||
33 | 33 | ||
34 | #include "clock.h" | 34 | #include "clock.h" |
35 | #include "mux.h" | 35 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index 4604e72d7d99..679e168dce34 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/serial_8250.h> | 17 | #include <linux/serial_8250.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <linux/dma-mapping.h> | 19 | #include <linux/dma-mapping.h> |
20 | #include <linux/gpio.h> | ||
21 | #include <linux/spi/spi.h> | 20 | #include <linux/spi/spi.h> |
22 | 21 | ||
23 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
@@ -34,7 +33,7 @@ | |||
34 | #include <mach/asp.h> | 33 | #include <mach/asp.h> |
35 | #include <mach/keyscan.h> | 34 | #include <mach/keyscan.h> |
36 | #include <mach/spi.h> | 35 | #include <mach/spi.h> |
37 | 36 | #include <mach/gpio-davinci.h> | |
38 | 37 | ||
39 | #include "clock.h" | 38 | #include "clock.h" |
40 | #include "mux.h" | 39 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 4c82c2716293..9a274665edc5 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/clk.h> | 12 | #include <linux/clk.h> |
13 | #include <linux/serial_8250.h> | 13 | #include <linux/serial_8250.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/gpio.h> | ||
16 | 15 | ||
17 | #include <asm/mach/map.h> | 16 | #include <asm/mach/map.h> |
18 | 17 | ||
@@ -26,6 +25,7 @@ | |||
26 | #include <mach/serial.h> | 25 | #include <mach/serial.h> |
27 | #include <mach/common.h> | 26 | #include <mach/common.h> |
28 | #include <mach/asp.h> | 27 | #include <mach/asp.h> |
28 | #include <mach/gpio-davinci.h> | ||
29 | 29 | ||
30 | #include "clock.h" | 30 | #include "clock.h" |
31 | #include "mux.h" | 31 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 1802e711a2b8..03e5f4931b42 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
14 | #include <linux/serial_8250.h> | 14 | #include <linux/serial_8250.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/gpio.h> | ||
17 | 16 | ||
18 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
19 | 18 | ||
@@ -27,6 +26,7 @@ | |||
27 | #include <mach/serial.h> | 26 | #include <mach/serial.h> |
28 | #include <mach/common.h> | 27 | #include <mach/common.h> |
29 | #include <mach/asp.h> | 28 | #include <mach/asp.h> |
29 | #include <mach/gpio-davinci.h> | ||
30 | 30 | ||
31 | #include "clock.h" | 31 | #include "clock.h" |
32 | #include "mux.h" | 32 | #include "mux.h" |
diff --git a/arch/arm/mach-davinci/gpio-tnetv107x.c b/arch/arm/mach-davinci/gpio-tnetv107x.c deleted file mode 100644 index 3fa3e2867e19..000000000000 --- a/arch/arm/mach-davinci/gpio-tnetv107x.c +++ /dev/null | |||
@@ -1,205 +0,0 @@ | |||
1 | /* | ||
2 | * Texas Instruments TNETV107X GPIO Controller | ||
3 | * | ||
4 | * Copyright (C) 2010 Texas Instruments | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License as | ||
8 | * published by the Free Software Foundation version 2. | ||
9 | * | ||
10 | * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||
11 | * kind, whether express or implied; without even the implied warranty | ||
12 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/gpio.h> | ||
18 | |||
19 | #include <mach/common.h> | ||
20 | #include <mach/tnetv107x.h> | ||
21 | |||
22 | struct tnetv107x_gpio_regs { | ||
23 | u32 idver; | ||
24 | u32 data_in[3]; | ||
25 | u32 data_out[3]; | ||
26 | u32 direction[3]; | ||
27 | u32 enable[3]; | ||
28 | }; | ||
29 | |||
30 | #define gpio_reg_index(gpio) ((gpio) >> 5) | ||
31 | #define gpio_reg_bit(gpio) BIT((gpio) & 0x1f) | ||
32 | |||
33 | #define gpio_reg_rmw(reg, mask, val) \ | ||
34 | __raw_writel((__raw_readl(reg) & ~(mask)) | (val), (reg)) | ||
35 | |||
36 | #define gpio_reg_set_bit(reg, gpio) \ | ||
37 | gpio_reg_rmw((reg) + gpio_reg_index(gpio), 0, gpio_reg_bit(gpio)) | ||
38 | |||
39 | #define gpio_reg_clear_bit(reg, gpio) \ | ||
40 | gpio_reg_rmw((reg) + gpio_reg_index(gpio), gpio_reg_bit(gpio), 0) | ||
41 | |||
42 | #define gpio_reg_get_bit(reg, gpio) \ | ||
43 | (__raw_readl((reg) + gpio_reg_index(gpio)) & gpio_reg_bit(gpio)) | ||
44 | |||
45 | #define chip2controller(chip) \ | ||
46 | container_of(chip, struct davinci_gpio_controller, chip) | ||
47 | |||
48 | #define TNETV107X_GPIO_CTLRS DIV_ROUND_UP(TNETV107X_N_GPIO, 32) | ||
49 | |||
50 | static struct davinci_gpio_controller chips[TNETV107X_GPIO_CTLRS]; | ||
51 | |||
52 | static int tnetv107x_gpio_request(struct gpio_chip *chip, unsigned offset) | ||
53 | { | ||
54 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
55 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
56 | unsigned gpio = chip->base + offset; | ||
57 | unsigned long flags; | ||
58 | |||
59 | spin_lock_irqsave(&ctlr->lock, flags); | ||
60 | |||
61 | gpio_reg_set_bit(regs->enable, gpio); | ||
62 | |||
63 | spin_unlock_irqrestore(&ctlr->lock, flags); | ||
64 | |||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | static void tnetv107x_gpio_free(struct gpio_chip *chip, unsigned offset) | ||
69 | { | ||
70 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
71 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
72 | unsigned gpio = chip->base + offset; | ||
73 | unsigned long flags; | ||
74 | |||
75 | spin_lock_irqsave(&ctlr->lock, flags); | ||
76 | |||
77 | gpio_reg_clear_bit(regs->enable, gpio); | ||
78 | |||
79 | spin_unlock_irqrestore(&ctlr->lock, flags); | ||
80 | } | ||
81 | |||
82 | static int tnetv107x_gpio_dir_in(struct gpio_chip *chip, unsigned offset) | ||
83 | { | ||
84 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
85 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
86 | unsigned gpio = chip->base + offset; | ||
87 | unsigned long flags; | ||
88 | |||
89 | spin_lock_irqsave(&ctlr->lock, flags); | ||
90 | |||
91 | gpio_reg_set_bit(regs->direction, gpio); | ||
92 | |||
93 | spin_unlock_irqrestore(&ctlr->lock, flags); | ||
94 | |||
95 | return 0; | ||
96 | } | ||
97 | |||
98 | static int tnetv107x_gpio_dir_out(struct gpio_chip *chip, | ||
99 | unsigned offset, int value) | ||
100 | { | ||
101 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
102 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
103 | unsigned gpio = chip->base + offset; | ||
104 | unsigned long flags; | ||
105 | |||
106 | spin_lock_irqsave(&ctlr->lock, flags); | ||
107 | |||
108 | if (value) | ||
109 | gpio_reg_set_bit(regs->data_out, gpio); | ||
110 | else | ||
111 | gpio_reg_clear_bit(regs->data_out, gpio); | ||
112 | |||
113 | gpio_reg_clear_bit(regs->direction, gpio); | ||
114 | |||
115 | spin_unlock_irqrestore(&ctlr->lock, flags); | ||
116 | |||
117 | return 0; | ||
118 | } | ||
119 | |||
120 | static int tnetv107x_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
121 | { | ||
122 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
123 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
124 | unsigned gpio = chip->base + offset; | ||
125 | int ret; | ||
126 | |||
127 | ret = gpio_reg_get_bit(regs->data_in, gpio); | ||
128 | |||
129 | return ret ? 1 : 0; | ||
130 | } | ||
131 | |||
132 | static void tnetv107x_gpio_set(struct gpio_chip *chip, | ||
133 | unsigned offset, int value) | ||
134 | { | ||
135 | struct davinci_gpio_controller *ctlr = chip2controller(chip); | ||
136 | struct tnetv107x_gpio_regs __iomem *regs = ctlr->regs; | ||
137 | unsigned gpio = chip->base + offset; | ||
138 | unsigned long flags; | ||
139 | |||
140 | spin_lock_irqsave(&ctlr->lock, flags); | ||
141 | |||
142 | if (value) | ||
143 | gpio_reg_set_bit(regs->data_out, gpio); | ||
144 | else | ||
145 | gpio_reg_clear_bit(regs->data_out, gpio); | ||
146 | |||
147 | spin_unlock_irqrestore(&ctlr->lock, flags); | ||
148 | } | ||
149 | |||
150 | static int __init tnetv107x_gpio_setup(void) | ||
151 | { | ||
152 | int i, base; | ||
153 | unsigned ngpio; | ||
154 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
155 | struct tnetv107x_gpio_regs *regs; | ||
156 | struct davinci_gpio_controller *ctlr; | ||
157 | |||
158 | if (soc_info->gpio_type != GPIO_TYPE_TNETV107X) | ||
159 | return 0; | ||
160 | |||
161 | ngpio = soc_info->gpio_num; | ||
162 | if (ngpio == 0) { | ||
163 | pr_err("GPIO setup: how many GPIOs?\n"); | ||
164 | return -EINVAL; | ||
165 | } | ||
166 | |||
167 | if (WARN_ON(TNETV107X_N_GPIO < ngpio)) | ||
168 | ngpio = TNETV107X_N_GPIO; | ||
169 | |||
170 | regs = ioremap(soc_info->gpio_base, SZ_4K); | ||
171 | if (WARN_ON(!regs)) | ||
172 | return -EINVAL; | ||
173 | |||
174 | for (i = 0, base = 0; base < ngpio; i++, base += 32) { | ||
175 | ctlr = &chips[i]; | ||
176 | |||
177 | ctlr->chip.label = "tnetv107x"; | ||
178 | ctlr->chip.can_sleep = 0; | ||
179 | ctlr->chip.base = base; | ||
180 | ctlr->chip.ngpio = ngpio - base; | ||
181 | if (ctlr->chip.ngpio > 32) | ||
182 | ctlr->chip.ngpio = 32; | ||
183 | |||
184 | ctlr->chip.request = tnetv107x_gpio_request; | ||
185 | ctlr->chip.free = tnetv107x_gpio_free; | ||
186 | ctlr->chip.direction_input = tnetv107x_gpio_dir_in; | ||
187 | ctlr->chip.get = tnetv107x_gpio_get; | ||
188 | ctlr->chip.direction_output = tnetv107x_gpio_dir_out; | ||
189 | ctlr->chip.set = tnetv107x_gpio_set; | ||
190 | |||
191 | spin_lock_init(&ctlr->lock); | ||
192 | |||
193 | ctlr->regs = regs; | ||
194 | ctlr->set_data = ®s->data_out[i]; | ||
195 | ctlr->clr_data = ®s->data_out[i]; | ||
196 | ctlr->in_data = ®s->data_in[i]; | ||
197 | |||
198 | gpiochip_add(&ctlr->chip); | ||
199 | } | ||
200 | |||
201 | soc_info->gpio_ctlrs = chips; | ||
202 | soc_info->gpio_ctlrs_num = DIV_ROUND_UP(ngpio, 32); | ||
203 | return 0; | ||
204 | } | ||
205 | pure_initcall(tnetv107x_gpio_setup); | ||
diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c deleted file mode 100644 index cafbe13a82a5..000000000000 --- a/arch/arm/mach-davinci/gpio.c +++ /dev/null | |||
@@ -1,460 +0,0 @@ | |||
1 | /* | ||
2 | * TI DaVinci GPIO Support | ||
3 | * | ||
4 | * Copyright (c) 2006-2007 David Brownell | ||
5 | * Copyright (c) 2007, MontaVista Software, Inc. <source@mvista.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/errno.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/clk.h> | ||
16 | #include <linux/err.h> | ||
17 | #include <linux/io.h> | ||
18 | |||
19 | #include <mach/gpio.h> | ||
20 | |||
21 | #include <asm/mach/irq.h> | ||
22 | |||
23 | struct davinci_gpio_regs { | ||
24 | u32 dir; | ||
25 | u32 out_data; | ||
26 | u32 set_data; | ||
27 | u32 clr_data; | ||
28 | u32 in_data; | ||
29 | u32 set_rising; | ||
30 | u32 clr_rising; | ||
31 | u32 set_falling; | ||
32 | u32 clr_falling; | ||
33 | u32 intstat; | ||
34 | }; | ||
35 | |||
36 | #define chip2controller(chip) \ | ||
37 | container_of(chip, struct davinci_gpio_controller, chip) | ||
38 | |||
39 | static struct davinci_gpio_controller chips[DIV_ROUND_UP(DAVINCI_N_GPIO, 32)]; | ||
40 | static void __iomem *gpio_base; | ||
41 | |||
42 | static struct davinci_gpio_regs __iomem __init *gpio2regs(unsigned gpio) | ||
43 | { | ||
44 | void __iomem *ptr; | ||
45 | |||
46 | if (gpio < 32 * 1) | ||
47 | ptr = gpio_base + 0x10; | ||
48 | else if (gpio < 32 * 2) | ||
49 | ptr = gpio_base + 0x38; | ||
50 | else if (gpio < 32 * 3) | ||
51 | ptr = gpio_base + 0x60; | ||
52 | else if (gpio < 32 * 4) | ||
53 | ptr = gpio_base + 0x88; | ||
54 | else if (gpio < 32 * 5) | ||
55 | ptr = gpio_base + 0xb0; | ||
56 | else | ||
57 | ptr = NULL; | ||
58 | return ptr; | ||
59 | } | ||
60 | |||
61 | static inline struct davinci_gpio_regs __iomem *irq2regs(int irq) | ||
62 | { | ||
63 | struct davinci_gpio_regs __iomem *g; | ||
64 | |||
65 | g = (__force struct davinci_gpio_regs __iomem *)irq_get_chip_data(irq); | ||
66 | |||
67 | return g; | ||
68 | } | ||
69 | |||
70 | static int __init davinci_gpio_irq_setup(void); | ||
71 | |||
72 | /*--------------------------------------------------------------------------*/ | ||
73 | |||
74 | /* board setup code *MUST* setup pinmux and enable the GPIO clock. */ | ||
75 | static inline int __davinci_direction(struct gpio_chip *chip, | ||
76 | unsigned offset, bool out, int value) | ||
77 | { | ||
78 | struct davinci_gpio_controller *d = chip2controller(chip); | ||
79 | struct davinci_gpio_regs __iomem *g = d->regs; | ||
80 | unsigned long flags; | ||
81 | u32 temp; | ||
82 | u32 mask = 1 << offset; | ||
83 | |||
84 | spin_lock_irqsave(&d->lock, flags); | ||
85 | temp = __raw_readl(&g->dir); | ||
86 | if (out) { | ||
87 | temp &= ~mask; | ||
88 | __raw_writel(mask, value ? &g->set_data : &g->clr_data); | ||
89 | } else { | ||
90 | temp |= mask; | ||
91 | } | ||
92 | __raw_writel(temp, &g->dir); | ||
93 | spin_unlock_irqrestore(&d->lock, flags); | ||
94 | |||
95 | return 0; | ||
96 | } | ||
97 | |||
98 | static int davinci_direction_in(struct gpio_chip *chip, unsigned offset) | ||
99 | { | ||
100 | return __davinci_direction(chip, offset, false, 0); | ||
101 | } | ||
102 | |||
103 | static int | ||
104 | davinci_direction_out(struct gpio_chip *chip, unsigned offset, int value) | ||
105 | { | ||
106 | return __davinci_direction(chip, offset, true, value); | ||
107 | } | ||
108 | |||
109 | /* | ||
110 | * Read the pin's value (works even if it's set up as output); | ||
111 | * returns zero/nonzero. | ||
112 | * | ||
113 | * Note that changes are synched to the GPIO clock, so reading values back | ||
114 | * right after you've set them may give old values. | ||
115 | */ | ||
116 | static int davinci_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
117 | { | ||
118 | struct davinci_gpio_controller *d = chip2controller(chip); | ||
119 | struct davinci_gpio_regs __iomem *g = d->regs; | ||
120 | |||
121 | return (1 << offset) & __raw_readl(&g->in_data); | ||
122 | } | ||
123 | |||
124 | /* | ||
125 | * Assuming the pin is muxed as a gpio output, set its output value. | ||
126 | */ | ||
127 | static void | ||
128 | davinci_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | ||
129 | { | ||
130 | struct davinci_gpio_controller *d = chip2controller(chip); | ||
131 | struct davinci_gpio_regs __iomem *g = d->regs; | ||
132 | |||
133 | __raw_writel((1 << offset), value ? &g->set_data : &g->clr_data); | ||
134 | } | ||
135 | |||
136 | static int __init davinci_gpio_setup(void) | ||
137 | { | ||
138 | int i, base; | ||
139 | unsigned ngpio; | ||
140 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
141 | struct davinci_gpio_regs *regs; | ||
142 | |||
143 | if (soc_info->gpio_type != GPIO_TYPE_DAVINCI) | ||
144 | return 0; | ||
145 | |||
146 | /* | ||
147 | * The gpio banks conceptually expose a segmented bitmap, | ||
148 | * and "ngpio" is one more than the largest zero-based | ||
149 | * bit index that's valid. | ||
150 | */ | ||
151 | ngpio = soc_info->gpio_num; | ||
152 | if (ngpio == 0) { | ||
153 | pr_err("GPIO setup: how many GPIOs?\n"); | ||
154 | return -EINVAL; | ||
155 | } | ||
156 | |||
157 | if (WARN_ON(DAVINCI_N_GPIO < ngpio)) | ||
158 | ngpio = DAVINCI_N_GPIO; | ||
159 | |||
160 | gpio_base = ioremap(soc_info->gpio_base, SZ_4K); | ||
161 | if (WARN_ON(!gpio_base)) | ||
162 | return -ENOMEM; | ||
163 | |||
164 | for (i = 0, base = 0; base < ngpio; i++, base += 32) { | ||
165 | chips[i].chip.label = "DaVinci"; | ||
166 | |||
167 | chips[i].chip.direction_input = davinci_direction_in; | ||
168 | chips[i].chip.get = davinci_gpio_get; | ||
169 | chips[i].chip.direction_output = davinci_direction_out; | ||
170 | chips[i].chip.set = davinci_gpio_set; | ||
171 | |||
172 | chips[i].chip.base = base; | ||
173 | chips[i].chip.ngpio = ngpio - base; | ||
174 | if (chips[i].chip.ngpio > 32) | ||
175 | chips[i].chip.ngpio = 32; | ||
176 | |||
177 | spin_lock_init(&chips[i].lock); | ||
178 | |||
179 | regs = gpio2regs(base); | ||
180 | chips[i].regs = regs; | ||
181 | chips[i].set_data = ®s->set_data; | ||
182 | chips[i].clr_data = ®s->clr_data; | ||
183 | chips[i].in_data = ®s->in_data; | ||
184 | |||
185 | gpiochip_add(&chips[i].chip); | ||
186 | } | ||
187 | |||
188 | soc_info->gpio_ctlrs = chips; | ||
189 | soc_info->gpio_ctlrs_num = DIV_ROUND_UP(ngpio, 32); | ||
190 | |||
191 | davinci_gpio_irq_setup(); | ||
192 | return 0; | ||
193 | } | ||
194 | pure_initcall(davinci_gpio_setup); | ||
195 | |||
196 | /*--------------------------------------------------------------------------*/ | ||
197 | /* | ||
198 | * We expect irqs will normally be set up as input pins, but they can also be | ||
199 | * used as output pins ... which is convenient for testing. | ||
200 | * | ||
201 | * NOTE: The first few GPIOs also have direct INTC hookups in addition | ||
202 | * to their GPIOBNK0 irq, with a bit less overhead. | ||
203 | * | ||
204 | * All those INTC hookups (direct, plus several IRQ banks) can also | ||
205 | * serve as EDMA event triggers. | ||
206 | */ | ||
207 | |||
208 | static void gpio_irq_disable(struct irq_data *d) | ||
209 | { | ||
210 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | ||
211 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | ||
212 | |||
213 | __raw_writel(mask, &g->clr_falling); | ||
214 | __raw_writel(mask, &g->clr_rising); | ||
215 | } | ||
216 | |||
217 | static void gpio_irq_enable(struct irq_data *d) | ||
218 | { | ||
219 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | ||
220 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | ||
221 | unsigned status = irqd_get_trigger_type(d); | ||
222 | |||
223 | status &= IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING; | ||
224 | if (!status) | ||
225 | status = IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING; | ||
226 | |||
227 | if (status & IRQ_TYPE_EDGE_FALLING) | ||
228 | __raw_writel(mask, &g->set_falling); | ||
229 | if (status & IRQ_TYPE_EDGE_RISING) | ||
230 | __raw_writel(mask, &g->set_rising); | ||
231 | } | ||
232 | |||
233 | static int gpio_irq_type(struct irq_data *d, unsigned trigger) | ||
234 | { | ||
235 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | ||
236 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | ||
237 | |||
238 | if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | ||
239 | return -EINVAL; | ||
240 | |||
241 | return 0; | ||
242 | } | ||
243 | |||
244 | static struct irq_chip gpio_irqchip = { | ||
245 | .name = "GPIO", | ||
246 | .irq_enable = gpio_irq_enable, | ||
247 | .irq_disable = gpio_irq_disable, | ||
248 | .irq_set_type = gpio_irq_type, | ||
249 | .flags = IRQCHIP_SET_TYPE_MASKED, | ||
250 | }; | ||
251 | |||
252 | static void | ||
253 | gpio_irq_handler(unsigned irq, struct irq_desc *desc) | ||
254 | { | ||
255 | struct davinci_gpio_regs __iomem *g; | ||
256 | u32 mask = 0xffff; | ||
257 | struct davinci_gpio_controller *d; | ||
258 | |||
259 | d = (struct davinci_gpio_controller *)irq_desc_get_handler_data(desc); | ||
260 | g = (struct davinci_gpio_regs __iomem *)d->regs; | ||
261 | |||
262 | /* we only care about one bank */ | ||
263 | if (irq & 1) | ||
264 | mask <<= 16; | ||
265 | |||
266 | /* temporarily mask (level sensitive) parent IRQ */ | ||
267 | desc->irq_data.chip->irq_mask(&desc->irq_data); | ||
268 | desc->irq_data.chip->irq_ack(&desc->irq_data); | ||
269 | while (1) { | ||
270 | u32 status; | ||
271 | int n; | ||
272 | int res; | ||
273 | |||
274 | /* ack any irqs */ | ||
275 | status = __raw_readl(&g->intstat) & mask; | ||
276 | if (!status) | ||
277 | break; | ||
278 | __raw_writel(status, &g->intstat); | ||
279 | |||
280 | /* now demux them to the right lowlevel handler */ | ||
281 | n = d->irq_base; | ||
282 | if (irq & 1) { | ||
283 | n += 16; | ||
284 | status >>= 16; | ||
285 | } | ||
286 | |||
287 | while (status) { | ||
288 | res = ffs(status); | ||
289 | n += res; | ||
290 | generic_handle_irq(n - 1); | ||
291 | status >>= res; | ||
292 | } | ||
293 | } | ||
294 | desc->irq_data.chip->irq_unmask(&desc->irq_data); | ||
295 | /* now it may re-trigger */ | ||
296 | } | ||
297 | |||
298 | static int gpio_to_irq_banked(struct gpio_chip *chip, unsigned offset) | ||
299 | { | ||
300 | struct davinci_gpio_controller *d = chip2controller(chip); | ||
301 | |||
302 | if (d->irq_base >= 0) | ||
303 | return d->irq_base + offset; | ||
304 | else | ||
305 | return -ENODEV; | ||
306 | } | ||
307 | |||
308 | static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset) | ||
309 | { | ||
310 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
311 | |||
312 | /* NOTE: we assume for now that only irqs in the first gpio_chip | ||
313 | * can provide direct-mapped IRQs to AINTC (up to 32 GPIOs). | ||
314 | */ | ||
315 | if (offset < soc_info->gpio_unbanked) | ||
316 | return soc_info->gpio_irq + offset; | ||
317 | else | ||
318 | return -ENODEV; | ||
319 | } | ||
320 | |||
321 | static int gpio_irq_type_unbanked(struct irq_data *d, unsigned trigger) | ||
322 | { | ||
323 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | ||
324 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | ||
325 | |||
326 | if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | ||
327 | return -EINVAL; | ||
328 | |||
329 | __raw_writel(mask, (trigger & IRQ_TYPE_EDGE_FALLING) | ||
330 | ? &g->set_falling : &g->clr_falling); | ||
331 | __raw_writel(mask, (trigger & IRQ_TYPE_EDGE_RISING) | ||
332 | ? &g->set_rising : &g->clr_rising); | ||
333 | |||
334 | return 0; | ||
335 | } | ||
336 | |||
337 | /* | ||
338 | * NOTE: for suspend/resume, probably best to make a platform_device with | ||
339 | * suspend_late/resume_resume calls hooking into results of the set_wake() | ||
340 | * calls ... so if no gpios are wakeup events the clock can be disabled, | ||
341 | * with outputs left at previously set levels, and so that VDD3P3V.IOPWDN0 | ||
342 | * (dm6446) can be set appropriately for GPIOV33 pins. | ||
343 | */ | ||
344 | |||
345 | static int __init davinci_gpio_irq_setup(void) | ||
346 | { | ||
347 | unsigned gpio, irq, bank; | ||
348 | struct clk *clk; | ||
349 | u32 binten = 0; | ||
350 | unsigned ngpio, bank_irq; | ||
351 | struct davinci_soc_info *soc_info = &davinci_soc_info; | ||
352 | struct davinci_gpio_regs __iomem *g; | ||
353 | |||
354 | ngpio = soc_info->gpio_num; | ||
355 | |||
356 | bank_irq = soc_info->gpio_irq; | ||
357 | if (bank_irq == 0) { | ||
358 | printk(KERN_ERR "Don't know first GPIO bank IRQ.\n"); | ||
359 | return -EINVAL; | ||
360 | } | ||
361 | |||
362 | clk = clk_get(NULL, "gpio"); | ||
363 | if (IS_ERR(clk)) { | ||
364 | printk(KERN_ERR "Error %ld getting gpio clock?\n", | ||
365 | PTR_ERR(clk)); | ||
366 | return PTR_ERR(clk); | ||
367 | } | ||
368 | clk_enable(clk); | ||
369 | |||
370 | /* Arrange gpio_to_irq() support, handling either direct IRQs or | ||
371 | * banked IRQs. Having GPIOs in the first GPIO bank use direct | ||
372 | * IRQs, while the others use banked IRQs, would need some setup | ||
373 | * tweaks to recognize hardware which can do that. | ||
374 | */ | ||
375 | for (gpio = 0, bank = 0; gpio < ngpio; bank++, gpio += 32) { | ||
376 | chips[bank].chip.to_irq = gpio_to_irq_banked; | ||
377 | chips[bank].irq_base = soc_info->gpio_unbanked | ||
378 | ? -EINVAL | ||
379 | : (soc_info->intc_irq_num + gpio); | ||
380 | } | ||
381 | |||
382 | /* | ||
383 | * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO | ||
384 | * controller only handling trigger modes. We currently assume no | ||
385 | * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs. | ||
386 | */ | ||
387 | if (soc_info->gpio_unbanked) { | ||
388 | static struct irq_chip gpio_irqchip_unbanked; | ||
389 | |||
390 | /* pass "bank 0" GPIO IRQs to AINTC */ | ||
391 | chips[0].chip.to_irq = gpio_to_irq_unbanked; | ||
392 | binten = BIT(0); | ||
393 | |||
394 | /* AINTC handles mask/unmask; GPIO handles triggering */ | ||
395 | irq = bank_irq; | ||
396 | gpio_irqchip_unbanked = *irq_get_chip(irq); | ||
397 | gpio_irqchip_unbanked.name = "GPIO-AINTC"; | ||
398 | gpio_irqchip_unbanked.irq_set_type = gpio_irq_type_unbanked; | ||
399 | |||
400 | /* default trigger: both edges */ | ||
401 | g = gpio2regs(0); | ||
402 | __raw_writel(~0, &g->set_falling); | ||
403 | __raw_writel(~0, &g->set_rising); | ||
404 | |||
405 | /* set the direct IRQs up to use that irqchip */ | ||
406 | for (gpio = 0; gpio < soc_info->gpio_unbanked; gpio++, irq++) { | ||
407 | irq_set_chip(irq, &gpio_irqchip_unbanked); | ||
408 | irq_set_handler_data(irq, (void *)__gpio_mask(gpio)); | ||
409 | irq_set_chip_data(irq, (__force void *)g); | ||
410 | irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH); | ||
411 | } | ||
412 | |||
413 | goto done; | ||
414 | } | ||
415 | |||
416 | /* | ||
417 | * Or, AINTC can handle IRQs for banks of 16 GPIO IRQs, which we | ||
418 | * then chain through our own handler. | ||
419 | */ | ||
420 | for (gpio = 0, irq = gpio_to_irq(0), bank = 0; | ||
421 | gpio < ngpio; | ||
422 | bank++, bank_irq++) { | ||
423 | unsigned i; | ||
424 | |||
425 | /* disabled by default, enabled only as needed */ | ||
426 | g = gpio2regs(gpio); | ||
427 | __raw_writel(~0, &g->clr_falling); | ||
428 | __raw_writel(~0, &g->clr_rising); | ||
429 | |||
430 | /* set up all irqs in this bank */ | ||
431 | irq_set_chained_handler(bank_irq, gpio_irq_handler); | ||
432 | |||
433 | /* | ||
434 | * Each chip handles 32 gpios, and each irq bank consists of 16 | ||
435 | * gpio irqs. Pass the irq bank's corresponding controller to | ||
436 | * the chained irq handler. | ||
437 | */ | ||
438 | irq_set_handler_data(bank_irq, &chips[gpio / 32]); | ||
439 | |||
440 | for (i = 0; i < 16 && gpio < ngpio; i++, irq++, gpio++) { | ||
441 | irq_set_chip(irq, &gpio_irqchip); | ||
442 | irq_set_chip_data(irq, (__force void *)g); | ||
443 | irq_set_handler_data(irq, (void *)__gpio_mask(gpio)); | ||
444 | irq_set_handler(irq, handle_simple_irq); | ||
445 | set_irq_flags(irq, IRQF_VALID); | ||
446 | } | ||
447 | |||
448 | binten |= BIT(bank); | ||
449 | } | ||
450 | |||
451 | done: | ||
452 | /* BINTEN -- per-bank interrupt enable. genirq would also let these | ||
453 | * bits be set/cleared dynamically. | ||
454 | */ | ||
455 | __raw_writel(binten, gpio_base + 0x08); | ||
456 | |||
457 | printk(KERN_INFO "DaVinci: %d gpio irqs\n", irq - gpio_to_irq(0)); | ||
458 | |||
459 | return 0; | ||
460 | } | ||
diff --git a/arch/arm/mach-davinci/include/mach/gpio-davinci.h b/arch/arm/mach-davinci/include/mach/gpio-davinci.h new file mode 100644 index 000000000000..1fdd1fd35448 --- /dev/null +++ b/arch/arm/mach-davinci/include/mach/gpio-davinci.h | |||
@@ -0,0 +1,91 @@ | |||
1 | /* | ||
2 | * TI DaVinci GPIO Support | ||
3 | * | ||
4 | * Copyright (c) 2006 David Brownell | ||
5 | * Copyright (c) 2007, MontaVista Software, Inc. <source@mvista.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #ifndef __DAVINCI_DAVINCI_GPIO_H | ||
14 | #define __DAVINCI_DAVINCI_GPIO_H | ||
15 | |||
16 | #include <linux/io.h> | ||
17 | #include <linux/spinlock.h> | ||
18 | |||
19 | #include <asm-generic/gpio.h> | ||
20 | |||
21 | #include <mach/irqs.h> | ||
22 | #include <mach/common.h> | ||
23 | |||
24 | #define DAVINCI_GPIO_BASE 0x01C67000 | ||
25 | |||
26 | enum davinci_gpio_type { | ||
27 | GPIO_TYPE_DAVINCI = 0, | ||
28 | GPIO_TYPE_TNETV107X, | ||
29 | }; | ||
30 | |||
31 | /* | ||
32 | * basic gpio routines | ||
33 | * | ||
34 | * board-specific init should be done by arch/.../.../board-XXX.c (maybe | ||
35 | * initializing banks together) rather than boot loaders; kexec() won't | ||
36 | * go through boot loaders. | ||
37 | * | ||
38 | * the gpio clock will be turned on when gpios are used, and you may also | ||
39 | * need to pay attention to PINMUX registers to be sure those pins are | ||
40 | * used as gpios, not with other peripherals. | ||
41 | * | ||
42 | * On-chip GPIOs are numbered 0..(DAVINCI_N_GPIO-1). For documentation, | ||
43 | * and maybe for later updates, code may write GPIO(N). These may be | ||
44 | * all 1.8V signals, all 3.3V ones, or a mix of the two. A given chip | ||
45 | * may not support all the GPIOs in that range. | ||
46 | * | ||
47 | * GPIOs can also be on external chips, numbered after the ones built-in | ||
48 | * to the DaVinci chip. For now, they won't be usable as IRQ sources. | ||
49 | */ | ||
50 | #define GPIO(X) (X) /* 0 <= X <= (DAVINCI_N_GPIO - 1) */ | ||
51 | |||
52 | /* Convert GPIO signal to GPIO pin number */ | ||
53 | #define GPIO_TO_PIN(bank, gpio) (16 * (bank) + (gpio)) | ||
54 | |||
55 | struct davinci_gpio_controller { | ||
56 | struct gpio_chip chip; | ||
57 | int irq_base; | ||
58 | spinlock_t lock; | ||
59 | void __iomem *regs; | ||
60 | void __iomem *set_data; | ||
61 | void __iomem *clr_data; | ||
62 | void __iomem *in_data; | ||
63 | }; | ||
64 | |||
65 | /* The __gpio_to_controller() and __gpio_mask() functions inline to constants | ||
66 | * with constant parameters; or in outlined code they execute at runtime. | ||
67 | * | ||
68 | * You'd access the controller directly when reading or writing more than | ||
69 | * one gpio value at a time, and to support wired logic where the value | ||
70 | * being driven by the cpu need not match the value read back. | ||
71 | * | ||
72 | * These are NOT part of the cross-platform GPIO interface | ||
73 | */ | ||
74 | static inline struct davinci_gpio_controller * | ||
75 | __gpio_to_controller(unsigned gpio) | ||
76 | { | ||
77 | struct davinci_gpio_controller *ctlrs = davinci_soc_info.gpio_ctlrs; | ||
78 | int index = gpio / 32; | ||
79 | |||
80 | if (!ctlrs || index >= davinci_soc_info.gpio_ctlrs_num) | ||
81 | return NULL; | ||
82 | |||
83 | return ctlrs + index; | ||
84 | } | ||
85 | |||
86 | static inline u32 __gpio_mask(unsigned gpio) | ||
87 | { | ||
88 | return 1 << (gpio % 32); | ||
89 | } | ||
90 | |||
91 | #endif /* __DAVINCI_DAVINCI_GPIO_H */ | ||
diff --git a/arch/arm/mach-davinci/include/mach/gpio.h b/arch/arm/mach-davinci/include/mach/gpio.h index fbece126c2bf..fbaae4772b91 100644 --- a/arch/arm/mach-davinci/include/mach/gpio.h +++ b/arch/arm/mach-davinci/include/mach/gpio.h | |||
@@ -13,80 +13,10 @@ | |||
13 | #ifndef __DAVINCI_GPIO_H | 13 | #ifndef __DAVINCI_GPIO_H |
14 | #define __DAVINCI_GPIO_H | 14 | #define __DAVINCI_GPIO_H |
15 | 15 | ||
16 | #include <linux/io.h> | ||
17 | #include <linux/spinlock.h> | ||
18 | |||
19 | #include <asm-generic/gpio.h> | 16 | #include <asm-generic/gpio.h> |
20 | 17 | ||
21 | #include <mach/irqs.h> | 18 | /* The inline versions use the static inlines in the driver header */ |
22 | #include <mach/common.h> | 19 | #include "gpio-davinci.h" |
23 | |||
24 | #define DAVINCI_GPIO_BASE 0x01C67000 | ||
25 | |||
26 | enum davinci_gpio_type { | ||
27 | GPIO_TYPE_DAVINCI = 0, | ||
28 | GPIO_TYPE_TNETV107X, | ||
29 | }; | ||
30 | |||
31 | /* | ||
32 | * basic gpio routines | ||
33 | * | ||
34 | * board-specific init should be done by arch/.../.../board-XXX.c (maybe | ||
35 | * initializing banks together) rather than boot loaders; kexec() won't | ||
36 | * go through boot loaders. | ||
37 | * | ||
38 | * the gpio clock will be turned on when gpios are used, and you may also | ||
39 | * need to pay attention to PINMUX registers to be sure those pins are | ||
40 | * used as gpios, not with other peripherals. | ||
41 | * | ||
42 | * On-chip GPIOs are numbered 0..(DAVINCI_N_GPIO-1). For documentation, | ||
43 | * and maybe for later updates, code may write GPIO(N). These may be | ||
44 | * all 1.8V signals, all 3.3V ones, or a mix of the two. A given chip | ||
45 | * may not support all the GPIOs in that range. | ||
46 | * | ||
47 | * GPIOs can also be on external chips, numbered after the ones built-in | ||
48 | * to the DaVinci chip. For now, they won't be usable as IRQ sources. | ||
49 | */ | ||
50 | #define GPIO(X) (X) /* 0 <= X <= (DAVINCI_N_GPIO - 1) */ | ||
51 | |||
52 | /* Convert GPIO signal to GPIO pin number */ | ||
53 | #define GPIO_TO_PIN(bank, gpio) (16 * (bank) + (gpio)) | ||
54 | |||
55 | struct davinci_gpio_controller { | ||
56 | struct gpio_chip chip; | ||
57 | int irq_base; | ||
58 | spinlock_t lock; | ||
59 | void __iomem *regs; | ||
60 | void __iomem *set_data; | ||
61 | void __iomem *clr_data; | ||
62 | void __iomem *in_data; | ||
63 | }; | ||
64 | |||
65 | /* The __gpio_to_controller() and __gpio_mask() functions inline to constants | ||
66 | * with constant parameters; or in outlined code they execute at runtime. | ||
67 | * | ||
68 | * You'd access the controller directly when reading or writing more than | ||
69 | * one gpio value at a time, and to support wired logic where the value | ||
70 | * being driven by the cpu need not match the value read back. | ||
71 | * | ||
72 | * These are NOT part of the cross-platform GPIO interface | ||
73 | */ | ||
74 | static inline struct davinci_gpio_controller * | ||
75 | __gpio_to_controller(unsigned gpio) | ||
76 | { | ||
77 | struct davinci_gpio_controller *ctlrs = davinci_soc_info.gpio_ctlrs; | ||
78 | int index = gpio / 32; | ||
79 | |||
80 | if (!ctlrs || index >= davinci_soc_info.gpio_ctlrs_num) | ||
81 | return NULL; | ||
82 | |||
83 | return ctlrs + index; | ||
84 | } | ||
85 | |||
86 | static inline u32 __gpio_mask(unsigned gpio) | ||
87 | { | ||
88 | return 1 << (gpio % 32); | ||
89 | } | ||
90 | 20 | ||
91 | /* | 21 | /* |
92 | * The get/set/clear functions will inline when called with constant | 22 | * The get/set/clear functions will inline when called with constant |
@@ -147,11 +77,6 @@ static inline int gpio_cansleep(unsigned gpio) | |||
147 | return __gpio_cansleep(gpio); | 77 | return __gpio_cansleep(gpio); |
148 | } | 78 | } |
149 | 79 | ||
150 | static inline int gpio_to_irq(unsigned gpio) | ||
151 | { | ||
152 | return __gpio_to_irq(gpio); | ||
153 | } | ||
154 | |||
155 | static inline int irq_to_gpio(unsigned irq) | 80 | static inline int irq_to_gpio(unsigned irq) |
156 | { | 81 | { |
157 | /* don't support the reverse mapping */ | 82 | /* don't support the reverse mapping */ |
diff --git a/arch/arm/mach-davinci/tnetv107x.c b/arch/arm/mach-davinci/tnetv107x.c index 1b28fdd892a6..409bb869c7c7 100644 --- a/arch/arm/mach-davinci/tnetv107x.c +++ b/arch/arm/mach-davinci/tnetv107x.c | |||
@@ -12,6 +12,7 @@ | |||
12 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | */ | 14 | */ |
15 | #include <linux/gpio.h> | ||
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
17 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
@@ -27,9 +28,9 @@ | |||
27 | #include <mach/psc.h> | 28 | #include <mach/psc.h> |
28 | #include <mach/cp_intc.h> | 29 | #include <mach/cp_intc.h> |
29 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
30 | #include <mach/gpio.h> | ||
31 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
32 | #include <mach/tnetv107x.h> | 32 | #include <mach/tnetv107x.h> |
33 | #include <mach/gpio-davinci.h> | ||
33 | 34 | ||
34 | #include "clock.h" | 35 | #include "clock.h" |
35 | #include "mux.h" | 36 | #include "mux.h" |
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index c60f081e930b..94c78bc66275 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <mach/fb.h> | 38 | #include <mach/fb.h> |
39 | #include <mach/ep93xx_keypad.h> | 39 | #include <mach/ep93xx_keypad.h> |
40 | #include <mach/ep93xx_spi.h> | 40 | #include <mach/ep93xx_spi.h> |
41 | #include <mach/gpio-ep93xx.h> | ||
41 | 42 | ||
42 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
43 | #include <asm/mach/time.h> | 44 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c index 9969bb115f60..3f320c6477bf 100644 --- a/arch/arm/mach-ep93xx/edb93xx.c +++ b/arch/arm/mach-ep93xx/edb93xx.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
38 | #include <mach/fb.h> | 38 | #include <mach/fb.h> |
39 | #include <mach/ep93xx_spi.h> | 39 | #include <mach/ep93xx_spi.h> |
40 | #include <mach/gpio-ep93xx.h> | ||
40 | 41 | ||
41 | #include <asm/mach-types.h> | 42 | #include <asm/mach-types.h> |
42 | #include <asm/mach/arch.h> | 43 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-ep93xx/include/mach/gpio.h b/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h index c57152c231f1..8aff2ea35877 100644 --- a/arch/arm/mach-ep93xx/include/mach/gpio.h +++ b/arch/arm/mach-ep93xx/include/mach/gpio-ep93xx.h | |||
@@ -1,9 +1,7 @@ | |||
1 | /* | 1 | /* Include file for the EP93XX GPIO controller machine specifics */ |
2 | * arch/arm/mach-ep93xx/include/mach/gpio.h | ||
3 | */ | ||
4 | 2 | ||
5 | #ifndef __ASM_ARCH_GPIO_H | 3 | #ifndef __GPIO_EP93XX_H |
6 | #define __ASM_ARCH_GPIO_H | 4 | #define __GPIO_EP93XX_H |
7 | 5 | ||
8 | /* GPIO port A. */ | 6 | /* GPIO port A. */ |
9 | #define EP93XX_GPIO_LINE_A(x) ((x) + 0) | 7 | #define EP93XX_GPIO_LINE_A(x) ((x) + 0) |
@@ -99,22 +97,4 @@ | |||
99 | /* maximum value for irq capable line identifiers */ | 97 | /* maximum value for irq capable line identifiers */ |
100 | #define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7) | 98 | #define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7) |
101 | 99 | ||
102 | /* new generic GPIO API - see Documentation/gpio.txt */ | 100 | #endif /* __GPIO_EP93XX_H */ |
103 | |||
104 | #include <asm-generic/gpio.h> | ||
105 | |||
106 | #define gpio_get_value __gpio_get_value | ||
107 | #define gpio_set_value __gpio_set_value | ||
108 | #define gpio_cansleep __gpio_cansleep | ||
109 | |||
110 | /* | ||
111 | * Map GPIO A0..A7 (0..7) to irq 64..71, | ||
112 | * B0..B7 (7..15) to irq 72..79, and | ||
113 | * F0..F7 (16..24) to irq 80..87. | ||
114 | */ | ||
115 | #define gpio_to_irq(gpio) \ | ||
116 | (((gpio) <= EP93XX_GPIO_LINE_MAX_IRQ) ? (64 + (gpio)) : -EINVAL) | ||
117 | |||
118 | #define irq_to_gpio(irq) ((irq) - gpio_to_irq(0)) | ||
119 | |||
120 | #endif | ||
diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c index 8392e95d7cea..1a472ff12cce 100644 --- a/arch/arm/mach-ep93xx/simone.c +++ b/arch/arm/mach-ep93xx/simone.c | |||
@@ -18,12 +18,12 @@ | |||
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/gpio.h> | ||
22 | #include <linux/i2c.h> | 21 | #include <linux/i2c.h> |
23 | #include <linux/i2c-gpio.h> | 22 | #include <linux/i2c-gpio.h> |
24 | 23 | ||
25 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
26 | #include <mach/fb.h> | 25 | #include <mach/fb.h> |
26 | #include <mach/gpio-ep93xx.h> | ||
27 | 27 | ||
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c index 2e9c614757e4..4f4b0b2c4c31 100644 --- a/arch/arm/mach-ep93xx/snappercl15.c +++ b/arch/arm/mach-ep93xx/snappercl15.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/gpio.h> | ||
24 | #include <linux/i2c.h> | 23 | #include <linux/i2c.h> |
25 | #include <linux/i2c-gpio.h> | 24 | #include <linux/i2c-gpio.h> |
26 | #include <linux/fb.h> | 25 | #include <linux/fb.h> |
@@ -30,6 +29,7 @@ | |||
30 | 29 | ||
31 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
32 | #include <mach/fb.h> | 31 | #include <mach/fb.h> |
32 | #include <mach/gpio-ep93xx.h> | ||
33 | 33 | ||
34 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
35 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-exynos4/include/mach/gpio.h b/arch/arm/mach-exynos4/include/mach/gpio.h index be9266b10fdb..80523ca9bb49 100644 --- a/arch/arm/mach-exynos4/include/mach/gpio.h +++ b/arch/arm/mach-exynos4/include/mach/gpio.h | |||
@@ -13,11 +13,6 @@ | |||
13 | #ifndef __ASM_ARCH_GPIO_H | 13 | #ifndef __ASM_ARCH_GPIO_H |
14 | #define __ASM_ARCH_GPIO_H __FILE__ | 14 | #define __ASM_ARCH_GPIO_H __FILE__ |
15 | 15 | ||
16 | #define gpio_get_value __gpio_get_value | ||
17 | #define gpio_set_value __gpio_set_value | ||
18 | #define gpio_cansleep __gpio_cansleep | ||
19 | #define gpio_to_irq __gpio_to_irq | ||
20 | |||
21 | /* Practically, GPIO banks up to GPZ are the configurable gpio banks */ | 16 | /* Practically, GPIO banks up to GPZ are the configurable gpio banks */ |
22 | 17 | ||
23 | /* GPIO bank sizes */ | 18 | /* GPIO bank sizes */ |
@@ -151,6 +146,4 @@ enum s5p_gpio_number { | |||
151 | #define ARCH_NR_GPIOS (EXYNOS4_GPZ(EXYNOS4_GPIO_Z_NR) + \ | 146 | #define ARCH_NR_GPIOS (EXYNOS4_GPZ(EXYNOS4_GPIO_Z_NR) + \ |
152 | CONFIG_SAMSUNG_GPIO_EXTRA + 1) | 147 | CONFIG_SAMSUNG_GPIO_EXTRA + 1) |
153 | 148 | ||
154 | #include <asm-generic/gpio.h> | ||
155 | |||
156 | #endif /* __ASM_ARCH_GPIO_H */ | 149 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-gemini/include/mach/gpio.h b/arch/arm/mach-gemini/include/mach/gpio.h index 3bc2c70f2989..40a0527bada7 100644 --- a/arch/arm/mach-gemini/include/mach/gpio.h +++ b/arch/arm/mach-gemini/include/mach/gpio.h | |||
@@ -13,11 +13,6 @@ | |||
13 | #define __MACH_GPIO_H__ | 13 | #define __MACH_GPIO_H__ |
14 | 14 | ||
15 | #include <mach/irqs.h> | 15 | #include <mach/irqs.h> |
16 | #include <asm-generic/gpio.h> | ||
17 | |||
18 | #define gpio_get_value __gpio_get_value | ||
19 | #define gpio_set_value __gpio_set_value | ||
20 | #define gpio_cansleep __gpio_cansleep | ||
21 | 16 | ||
22 | #define gpio_to_irq(x) ((x) + GPIO_IRQ_BASE) | 17 | #define gpio_to_irq(x) ((x) + GPIO_IRQ_BASE) |
23 | #define irq_to_gpio(x) ((x) - GPIO_IRQ_BASE) | 18 | #define irq_to_gpio(x) ((x) - GPIO_IRQ_BASE) |
diff --git a/arch/arm/mach-imx/iomux-imx31.c b/arch/arm/mach-imx/iomux-imx31.c index cf8f8099ebd7..82bd4403b450 100644 --- a/arch/arm/mach-imx/iomux-imx31.c +++ b/arch/arm/mach-imx/iomux-imx31.c | |||
@@ -17,13 +17,12 @@ | |||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
18 | * MA 02110-1301, USA. | 18 | * MA 02110-1301, USA. |
19 | */ | 19 | */ |
20 | 20 | #include <linux/gpio.h> | |
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/spinlock.h> | 22 | #include <linux/spinlock.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | #include <mach/gpio.h> | ||
27 | #include <mach/iomux-mx3.h> | 26 | #include <mach/iomux-mx3.h> |
28 | 27 | ||
29 | /* | 28 | /* |
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c index fc26ed71b9ed..e1addc1a5813 100644 --- a/arch/arm/mach-imx/mach-mx27ads.c +++ b/arch/arm/mach-imx/mach-mx27ads.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | * GNU General Public License for more details. | 14 | * GNU General Public License for more details. |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
19 | #include <linux/mtd/map.h> | 19 | #include <linux/mtd/map.h> |
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/time.h> | 28 | #include <asm/mach/time.h> |
29 | #include <asm/mach/map.h> | 29 | #include <asm/mach/map.h> |
30 | #include <mach/gpio.h> | ||
31 | #include <mach/iomux-mx27.h> | 30 | #include <mach/iomux-mx27.h> |
32 | 31 | ||
33 | #include "devices-imx27.h" | 32 | #include "devices-imx27.h" |
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index 4068166c8993..59a512672bb9 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * License version 2. This program is licensed "as is" without any | 13 | * License version 2. This program is licensed "as is" without any |
14 | * warranty of any kind, whether express or implied. | 14 | * warranty of any kind, whether express or implied. |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
@@ -39,7 +39,7 @@ | |||
39 | #include <asm/mach/time.h> | 39 | #include <asm/mach/time.h> |
40 | #include <asm/mach/irq.h> | 40 | #include <asm/mach/irq.h> |
41 | 41 | ||
42 | #include <mach/gpio.h> | 42 | #include <mach/gpio-ixp2000.h> |
43 | 43 | ||
44 | static DEFINE_SPINLOCK(ixp2000_slowport_lock); | 44 | static DEFINE_SPINLOCK(ixp2000_slowport_lock); |
45 | static unsigned long ixp2000_slowport_irq_flags; | 45 | static unsigned long ixp2000_slowport_irq_flags; |
diff --git a/arch/arm/mach-ixp2000/include/mach/gpio.h b/arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h index 4a88d2c33dac..af836c76c3f1 100644 --- a/arch/arm/mach-ixp2000/include/mach/gpio.h +++ b/arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 2002 Intel Corporation. | 4 | * Copyright (C) 2002 Intel Corporation. |
5 | * | 5 | * |
6 | * This program is free software, you can redistribute it and/or modify | 6 | * This program is free software, you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
@@ -11,7 +11,7 @@ | |||
11 | /* | 11 | /* |
12 | * IXP2000 GPIO in/out, edge/level detection for IRQs: | 12 | * IXP2000 GPIO in/out, edge/level detection for IRQs: |
13 | * IRQs are generated on Falling-edge, Rising-Edge, Level-low, Level-High | 13 | * IRQs are generated on Falling-edge, Rising-Edge, Level-low, Level-High |
14 | * or both Falling-edge and Rising-edge. | 14 | * or both Falling-edge and Rising-edge. |
15 | * This must be called *before* the corresponding IRQ is registerd. | 15 | * This must be called *before* the corresponding IRQ is registerd. |
16 | * Use this instead of directly setting the GPIO registers. | 16 | * Use this instead of directly setting the GPIO registers. |
17 | * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb) | 17 | * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb) |
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c index 235638f800e5..634b6c852f68 100644 --- a/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/arch/arm/mach-ixp2000/ixdp2x00.c | |||
@@ -14,6 +14,7 @@ | |||
14 | * Free Software Foundation; either version 2 of the License, or (at your | 14 | * Free Software Foundation; either version 2 of the License, or (at your |
15 | * option) any later version. | 15 | * option) any later version. |
16 | */ | 16 | */ |
17 | #include <linux/gpio.h> | ||
17 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 19 | #include <linux/init.h> |
19 | #include <linux/mm.h> | 20 | #include <linux/mm.h> |
@@ -40,8 +41,7 @@ | |||
40 | #include <asm/mach/flash.h> | 41 | #include <asm/mach/flash.h> |
41 | #include <asm/mach/arch.h> | 42 | #include <asm/mach/arch.h> |
42 | 43 | ||
43 | #include <mach/gpio.h> | 44 | #include <mach/gpio-ixp2000.h> |
44 | |||
45 | 45 | ||
46 | /************************************************************************* | 46 | /************************************************************************* |
47 | * IXDP2x00 IRQ Initialization | 47 | * IXDP2x00 IRQ Initialization |
diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c index 03e54515e8b3..96e378345801 100644 --- a/arch/arm/mach-ixp4xx/dsmg600-setup.c +++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c | |||
@@ -16,7 +16,7 @@ | |||
16 | * Author: Rod Whitby <rod@whitby.id.au> | 16 | * Author: Rod Whitby <rod@whitby.id.au> |
17 | * Maintainers: http://www.nslu2-linux.org/ | 17 | * Maintainers: http://www.nslu2-linux.org/ |
18 | */ | 18 | */ |
19 | 19 | #include <linux/gpio.h> | |
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <linux/jiffies.h> | 21 | #include <linux/jiffies.h> |
22 | #include <linux/timer.h> | 22 | #include <linux/timer.h> |
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/flash.h> | 32 | #include <asm/mach/flash.h> |
33 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
34 | #include <asm/gpio.h> | ||
35 | 34 | ||
36 | #define DSMG600_SDA_PIN 5 | 35 | #define DSMG600_SDA_PIN 5 |
37 | #define DSMG600_SCL_PIN 4 | 36 | #define DSMG600_SCL_PIN 4 |
diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c index 23a8b3614568..72333a039431 100644 --- a/arch/arm/mach-ixp4xx/fsg-setup.c +++ b/arch/arm/mach-ixp4xx/fsg-setup.c | |||
@@ -14,7 +14,7 @@ | |||
14 | * Maintainers: http://www.nslu2-linux.org/ | 14 | * Maintainers: http://www.nslu2-linux.org/ |
15 | * | 15 | * |
16 | */ | 16 | */ |
17 | 17 | #include <linux/gpio.h> | |
18 | #include <linux/if_ether.h> | 18 | #include <linux/if_ether.h> |
19 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
20 | #include <linux/serial.h> | 20 | #include <linux/serial.h> |
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
28 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
29 | #include <asm/mach/flash.h> | 29 | #include <asm/mach/flash.h> |
30 | #include <asm/gpio.h> | ||
31 | 30 | ||
32 | #define FSG_SDA_PIN 12 | 31 | #define FSG_SDA_PIN 12 |
33 | #define FSG_SCL_PIN 13 | 32 | #define FSG_SCL_PIN 13 |
diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h index a5f87ded2f28..83d6b4ed60bb 100644 --- a/arch/arm/mach-ixp4xx/include/mach/gpio.h +++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
29 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
30 | 30 | ||
31 | #define __ARM_GPIOLIB_COMPLEX | ||
32 | |||
31 | static inline int gpio_request(unsigned gpio, const char *label) | 33 | static inline int gpio_request(unsigned gpio, const char *label) |
32 | { | 34 | { |
33 | return 0; | 35 | return 0; |
@@ -70,6 +72,7 @@ static inline void gpio_set_value(unsigned gpio, int value) | |||
70 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | 72 | #include <asm-generic/gpio.h> /* cansleep wrappers */ |
71 | 73 | ||
72 | extern int gpio_to_irq(int gpio); | 74 | extern int gpio_to_irq(int gpio); |
75 | #define gpio_to_irq gpio_to_irq | ||
73 | extern int irq_to_gpio(unsigned int irq); | 76 | extern int irq_to_gpio(unsigned int irq); |
74 | 77 | ||
75 | #endif | 78 | #endif |
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index afb51879d9a4..b752fa4d6927 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -17,7 +17,7 @@ | |||
17 | * Maintainers: http://www.nslu2-linux.org/ | 17 | * Maintainers: http://www.nslu2-linux.org/ |
18 | * | 18 | * |
19 | */ | 19 | */ |
20 | 20 | #include <linux/gpio.h> | |
21 | #include <linux/if_ether.h> | 21 | #include <linux/if_ether.h> |
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | #include <linux/jiffies.h> | 23 | #include <linux/jiffies.h> |
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/flash.h> | 34 | #include <asm/mach/flash.h> |
35 | #include <asm/gpio.h> | ||
36 | 35 | ||
37 | #define NAS100D_SDA_PIN 5 | 36 | #define NAS100D_SDA_PIN 5 |
38 | #define NAS100D_SCL_PIN 6 | 37 | #define NAS100D_SCL_PIN 6 |
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index 69e40f2cf092..0411a0a01071 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -16,7 +16,7 @@ | |||
16 | * Maintainers: http://www.nslu2-linux.org/ | 16 | * Maintainers: http://www.nslu2-linux.org/ |
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | #include <linux/gpio.h> | |
20 | #include <linux/if_ether.h> | 20 | #include <linux/if_ether.h> |
21 | #include <linux/irq.h> | 21 | #include <linux/irq.h> |
22 | #include <linux/serial.h> | 22 | #include <linux/serial.h> |
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/flash.h> | 31 | #include <asm/mach/flash.h> |
32 | #include <asm/mach/time.h> | 32 | #include <asm/mach/time.h> |
33 | #include <asm/gpio.h> | ||
34 | 33 | ||
35 | #define NSLU2_SDA_PIN 7 | 34 | #define NSLU2_SDA_PIN 7 |
36 | #define NSLU2_SCL_PIN 6 | 35 | #define NSLU2_SCL_PIN 6 |
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c index 05d193a25b25..c4c68e5b94f1 100644 --- a/arch/arm/mach-kirkwood/irq.c +++ b/arch/arm/mach-kirkwood/irq.c | |||
@@ -7,14 +7,13 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <mach/bridge-regs.h> | 15 | #include <mach/bridge-regs.h> |
16 | #include <plat/irq.h> | 16 | #include <plat/irq.h> |
17 | #include <asm/gpio.h> | ||
18 | #include "common.h" | 17 | #include "common.h" |
19 | 18 | ||
20 | static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | 19 | static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) |
diff --git a/arch/arm/mach-kirkwood/mpp.c b/arch/arm/mach-kirkwood/mpp.c index b0a7d979a8ed..cc431fa22ccb 100644 --- a/arch/arm/mach-kirkwood/mpp.c +++ b/arch/arm/mach-kirkwood/mpp.c | |||
@@ -7,12 +7,11 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/mbus.h> | 13 | #include <linux/mbus.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <asm/gpio.h> | ||
16 | #include <mach/hardware.h> | 15 | #include <mach/hardware.h> |
17 | #include <plat/mpp.h> | 16 | #include <plat/mpp.h> |
18 | #include "common.h" | 17 | #include "common.h" |
diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile index 7e3e8160ed30..853efd9133c6 100644 --- a/arch/arm/mach-ks8695/Makefile +++ b/arch/arm/mach-ks8695/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # Makefile for KS8695 architecture support | 3 | # Makefile for KS8695 architecture support |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y := cpu.o irq.o time.o gpio.o devices.o | 6 | obj-y := cpu.o irq.o time.o devices.o |
7 | obj-m := | 7 | obj-m := |
8 | obj-n := | 8 | obj-n := |
9 | obj- := | 9 | obj- := |
diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c index 3ca4f8e6f54f..3d7d11436aa5 100644 --- a/arch/arm/mach-ks8695/board-acs5k.c +++ b/arch/arm/mach-ks8695/board-acs5k.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
@@ -34,7 +34,7 @@ | |||
34 | #include <asm/mach/irq.h> | 34 | #include <asm/mach/irq.h> |
35 | 35 | ||
36 | #include <mach/devices.h> | 36 | #include <mach/devices.h> |
37 | #include <mach/gpio.h> | 37 | #include <mach/gpio-ks8695.h> |
38 | 38 | ||
39 | #include "generic.h" | 39 | #include "generic.h" |
40 | 40 | ||
diff --git a/arch/arm/mach-ks8695/board-dsm320.c b/arch/arm/mach-ks8695/board-dsm320.c index 1338cb3e9827..c3c867ac4155 100644 --- a/arch/arm/mach-ks8695/board-dsm320.c +++ b/arch/arm/mach-ks8695/board-dsm320.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
@@ -29,7 +29,7 @@ | |||
29 | #include <asm/mach/irq.h> | 29 | #include <asm/mach/irq.h> |
30 | 30 | ||
31 | #include <mach/devices.h> | 31 | #include <mach/devices.h> |
32 | #include <mach/gpio.h> | 32 | #include <mach/gpio-ks8695.h> |
33 | 33 | ||
34 | #include "generic.h" | 34 | #include "generic.h" |
35 | 35 | ||
diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c index e2e3cba8dcdb..9b9c47cc6471 100644 --- a/arch/arm/mach-ks8695/board-micrel.c +++ b/arch/arm/mach-ks8695/board-micrel.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * it under the terms of the GNU General Public License version 2 as | 5 | * it under the terms of the GNU General Public License version 2 as |
6 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
7 | */ | 7 | */ |
8 | 8 | #include <linux/gpio.h> | |
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
@@ -18,7 +18,7 @@ | |||
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <asm/mach/irq.h> | 19 | #include <asm/mach/irq.h> |
20 | 20 | ||
21 | #include <mach/gpio.h> | 21 | #include <mach/gpio-ks8695.h> |
22 | #include <mach/devices.h> | 22 | #include <mach/devices.h> |
23 | 23 | ||
24 | #include "generic.h" | 24 | #include "generic.h" |
diff --git a/arch/arm/mach-ks8695/devices.c b/arch/arm/mach-ks8695/devices.c index b89fb6d46ccc..73bd63812878 100644 --- a/arch/arm/mach-ks8695/devices.c +++ b/arch/arm/mach-ks8695/devices.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
22 | 22 | ||
23 | #include <linux/gpio.h> | ||
23 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
24 | 25 | ||
25 | #include <mach/irqs.h> | 26 | #include <mach/irqs.h> |
diff --git a/arch/arm/mach-ks8695/gpio.c b/arch/arm/mach-ks8695/gpio.c deleted file mode 100644 index 31e456508a6f..000000000000 --- a/arch/arm/mach-ks8695/gpio.c +++ /dev/null | |||
@@ -1,319 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ks8695/gpio.c | ||
3 | * | ||
4 | * Copyright (C) 2006 Andrew Victor | ||
5 | * Updated to GPIOLIB, Copyright 2008 Simtec Electronics | ||
6 | * Daniel Silverstone <dsilvers@simtec.co.uk> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | #include <linux/kernel.h> | ||
23 | #include <linux/mm.h> | ||
24 | #include <linux/init.h> | ||
25 | #include <linux/debugfs.h> | ||
26 | #include <linux/seq_file.h> | ||
27 | #include <linux/module.h> | ||
28 | #include <linux/io.h> | ||
29 | |||
30 | #include <mach/hardware.h> | ||
31 | #include <asm/mach/irq.h> | ||
32 | |||
33 | #include <mach/regs-gpio.h> | ||
34 | #include <mach/gpio.h> | ||
35 | |||
36 | /* | ||
37 | * Configure a GPIO line for either GPIO function, or its internal | ||
38 | * function (Interrupt, Timer, etc). | ||
39 | */ | ||
40 | static void ks8695_gpio_mode(unsigned int pin, short gpio) | ||
41 | { | ||
42 | unsigned int enable[] = { IOPC_IOEINT0EN, IOPC_IOEINT1EN, IOPC_IOEINT2EN, IOPC_IOEINT3EN, IOPC_IOTIM0EN, IOPC_IOTIM1EN }; | ||
43 | unsigned long x, flags; | ||
44 | |||
45 | if (pin > KS8695_GPIO_5) /* only GPIO 0..5 have internal functions */ | ||
46 | return; | ||
47 | |||
48 | local_irq_save(flags); | ||
49 | |||
50 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC); | ||
51 | if (gpio) /* GPIO: set bit to 0 */ | ||
52 | x &= ~enable[pin]; | ||
53 | else /* Internal function: set bit to 1 */ | ||
54 | x |= enable[pin]; | ||
55 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPC); | ||
56 | |||
57 | local_irq_restore(flags); | ||
58 | } | ||
59 | |||
60 | |||
61 | static unsigned short gpio_irq[] = { KS8695_IRQ_EXTERN0, KS8695_IRQ_EXTERN1, KS8695_IRQ_EXTERN2, KS8695_IRQ_EXTERN3 }; | ||
62 | |||
63 | /* | ||
64 | * Configure GPIO pin as external interrupt source. | ||
65 | */ | ||
66 | int ks8695_gpio_interrupt(unsigned int pin, unsigned int type) | ||
67 | { | ||
68 | unsigned long x, flags; | ||
69 | |||
70 | if (pin > KS8695_GPIO_3) /* only GPIO 0..3 can generate IRQ */ | ||
71 | return -EINVAL; | ||
72 | |||
73 | local_irq_save(flags); | ||
74 | |||
75 | /* set pin as input */ | ||
76 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPM); | ||
77 | x &= ~IOPM(pin); | ||
78 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPM); | ||
79 | |||
80 | local_irq_restore(flags); | ||
81 | |||
82 | /* Set IRQ triggering type */ | ||
83 | irq_set_irq_type(gpio_irq[pin], type); | ||
84 | |||
85 | /* enable interrupt mode */ | ||
86 | ks8695_gpio_mode(pin, 0); | ||
87 | |||
88 | return 0; | ||
89 | } | ||
90 | EXPORT_SYMBOL(ks8695_gpio_interrupt); | ||
91 | |||
92 | |||
93 | |||
94 | /* .... Generic GPIO interface .............................................. */ | ||
95 | |||
96 | /* | ||
97 | * Configure the GPIO line as an input. | ||
98 | */ | ||
99 | static int ks8695_gpio_direction_input(struct gpio_chip *gc, unsigned int pin) | ||
100 | { | ||
101 | unsigned long x, flags; | ||
102 | |||
103 | if (pin > KS8695_GPIO_15) | ||
104 | return -EINVAL; | ||
105 | |||
106 | /* set pin to GPIO mode */ | ||
107 | ks8695_gpio_mode(pin, 1); | ||
108 | |||
109 | local_irq_save(flags); | ||
110 | |||
111 | /* set pin as input */ | ||
112 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPM); | ||
113 | x &= ~IOPM(pin); | ||
114 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPM); | ||
115 | |||
116 | local_irq_restore(flags); | ||
117 | |||
118 | return 0; | ||
119 | } | ||
120 | |||
121 | |||
122 | /* | ||
123 | * Configure the GPIO line as an output, with default state. | ||
124 | */ | ||
125 | static int ks8695_gpio_direction_output(struct gpio_chip *gc, | ||
126 | unsigned int pin, int state) | ||
127 | { | ||
128 | unsigned long x, flags; | ||
129 | |||
130 | if (pin > KS8695_GPIO_15) | ||
131 | return -EINVAL; | ||
132 | |||
133 | /* set pin to GPIO mode */ | ||
134 | ks8695_gpio_mode(pin, 1); | ||
135 | |||
136 | local_irq_save(flags); | ||
137 | |||
138 | /* set line state */ | ||
139 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPD); | ||
140 | if (state) | ||
141 | x |= IOPD(pin); | ||
142 | else | ||
143 | x &= ~IOPD(pin); | ||
144 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPD); | ||
145 | |||
146 | /* set pin as output */ | ||
147 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPM); | ||
148 | x |= IOPM(pin); | ||
149 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPM); | ||
150 | |||
151 | local_irq_restore(flags); | ||
152 | |||
153 | return 0; | ||
154 | } | ||
155 | |||
156 | |||
157 | /* | ||
158 | * Set the state of an output GPIO line. | ||
159 | */ | ||
160 | static void ks8695_gpio_set_value(struct gpio_chip *gc, | ||
161 | unsigned int pin, int state) | ||
162 | { | ||
163 | unsigned long x, flags; | ||
164 | |||
165 | if (pin > KS8695_GPIO_15) | ||
166 | return; | ||
167 | |||
168 | local_irq_save(flags); | ||
169 | |||
170 | /* set output line state */ | ||
171 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPD); | ||
172 | if (state) | ||
173 | x |= IOPD(pin); | ||
174 | else | ||
175 | x &= ~IOPD(pin); | ||
176 | __raw_writel(x, KS8695_GPIO_VA + KS8695_IOPD); | ||
177 | |||
178 | local_irq_restore(flags); | ||
179 | } | ||
180 | |||
181 | |||
182 | /* | ||
183 | * Read the state of a GPIO line. | ||
184 | */ | ||
185 | static int ks8695_gpio_get_value(struct gpio_chip *gc, unsigned int pin) | ||
186 | { | ||
187 | unsigned long x; | ||
188 | |||
189 | if (pin > KS8695_GPIO_15) | ||
190 | return -EINVAL; | ||
191 | |||
192 | x = __raw_readl(KS8695_GPIO_VA + KS8695_IOPD); | ||
193 | return (x & IOPD(pin)) != 0; | ||
194 | } | ||
195 | |||
196 | |||
197 | /* | ||
198 | * Map GPIO line to IRQ number. | ||
199 | */ | ||
200 | static int ks8695_gpio_to_irq(struct gpio_chip *gc, unsigned int pin) | ||
201 | { | ||
202 | if (pin > KS8695_GPIO_3) /* only GPIO 0..3 can generate IRQ */ | ||
203 | return -EINVAL; | ||
204 | |||
205 | return gpio_irq[pin]; | ||
206 | } | ||
207 | |||
208 | /* | ||
209 | * Map IRQ number to GPIO line. | ||
210 | */ | ||
211 | int irq_to_gpio(unsigned int irq) | ||
212 | { | ||
213 | if ((irq < KS8695_IRQ_EXTERN0) || (irq > KS8695_IRQ_EXTERN3)) | ||
214 | return -EINVAL; | ||
215 | |||
216 | return (irq - KS8695_IRQ_EXTERN0); | ||
217 | } | ||
218 | EXPORT_SYMBOL(irq_to_gpio); | ||
219 | |||
220 | /* GPIOLIB interface */ | ||
221 | |||
222 | static struct gpio_chip ks8695_gpio_chip = { | ||
223 | .label = "KS8695", | ||
224 | .direction_input = ks8695_gpio_direction_input, | ||
225 | .direction_output = ks8695_gpio_direction_output, | ||
226 | .get = ks8695_gpio_get_value, | ||
227 | .set = ks8695_gpio_set_value, | ||
228 | .to_irq = ks8695_gpio_to_irq, | ||
229 | .base = 0, | ||
230 | .ngpio = 16, | ||
231 | .can_sleep = 0, | ||
232 | }; | ||
233 | |||
234 | /* Register the GPIOs */ | ||
235 | void ks8695_register_gpios(void) | ||
236 | { | ||
237 | if (gpiochip_add(&ks8695_gpio_chip)) | ||
238 | printk(KERN_ERR "Unable to register core GPIOs\n"); | ||
239 | } | ||
240 | |||
241 | /* .... Debug interface ..................................................... */ | ||
242 | |||
243 | #ifdef CONFIG_DEBUG_FS | ||
244 | |||
245 | static int ks8695_gpio_show(struct seq_file *s, void *unused) | ||
246 | { | ||
247 | unsigned int enable[] = { IOPC_IOEINT0EN, IOPC_IOEINT1EN, IOPC_IOEINT2EN, IOPC_IOEINT3EN, IOPC_IOTIM0EN, IOPC_IOTIM1EN }; | ||
248 | unsigned int intmask[] = { IOPC_IOEINT0TM, IOPC_IOEINT1TM, IOPC_IOEINT2TM, IOPC_IOEINT3TM }; | ||
249 | unsigned long mode, ctrl, data; | ||
250 | int i; | ||
251 | |||
252 | mode = __raw_readl(KS8695_GPIO_VA + KS8695_IOPM); | ||
253 | ctrl = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC); | ||
254 | data = __raw_readl(KS8695_GPIO_VA + KS8695_IOPD); | ||
255 | |||
256 | seq_printf(s, "Pin\tI/O\tFunction\tState\n\n"); | ||
257 | |||
258 | for (i = KS8695_GPIO_0; i <= KS8695_GPIO_15 ; i++) { | ||
259 | seq_printf(s, "%i:\t", i); | ||
260 | |||
261 | seq_printf(s, "%s\t", (mode & IOPM(i)) ? "Output" : "Input"); | ||
262 | |||
263 | if (i <= KS8695_GPIO_3) { | ||
264 | if (ctrl & enable[i]) { | ||
265 | seq_printf(s, "EXT%i ", i); | ||
266 | |||
267 | switch ((ctrl & intmask[i]) >> (4 * i)) { | ||
268 | case IOPC_TM_LOW: | ||
269 | seq_printf(s, "(Low)"); break; | ||
270 | case IOPC_TM_HIGH: | ||
271 | seq_printf(s, "(High)"); break; | ||
272 | case IOPC_TM_RISING: | ||
273 | seq_printf(s, "(Rising)"); break; | ||
274 | case IOPC_TM_FALLING: | ||
275 | seq_printf(s, "(Falling)"); break; | ||
276 | case IOPC_TM_EDGE: | ||
277 | seq_printf(s, "(Edges)"); break; | ||
278 | } | ||
279 | } | ||
280 | else | ||
281 | seq_printf(s, "GPIO\t"); | ||
282 | } | ||
283 | else if (i <= KS8695_GPIO_5) { | ||
284 | if (ctrl & enable[i]) | ||
285 | seq_printf(s, "TOUT%i\t", i - KS8695_GPIO_4); | ||
286 | else | ||
287 | seq_printf(s, "GPIO\t"); | ||
288 | } | ||
289 | else | ||
290 | seq_printf(s, "GPIO\t"); | ||
291 | |||
292 | seq_printf(s, "\t"); | ||
293 | |||
294 | seq_printf(s, "%i\n", (data & IOPD(i)) ? 1 : 0); | ||
295 | } | ||
296 | return 0; | ||
297 | } | ||
298 | |||
299 | static int ks8695_gpio_open(struct inode *inode, struct file *file) | ||
300 | { | ||
301 | return single_open(file, ks8695_gpio_show, NULL); | ||
302 | } | ||
303 | |||
304 | static const struct file_operations ks8695_gpio_operations = { | ||
305 | .open = ks8695_gpio_open, | ||
306 | .read = seq_read, | ||
307 | .llseek = seq_lseek, | ||
308 | .release = single_release, | ||
309 | }; | ||
310 | |||
311 | static int __init ks8695_gpio_debugfs_init(void) | ||
312 | { | ||
313 | /* /sys/kernel/debug/ks8695_gpio */ | ||
314 | (void) debugfs_create_file("ks8695_gpio", S_IFREG | S_IRUGO, NULL, NULL, &ks8695_gpio_operations); | ||
315 | return 0; | ||
316 | } | ||
317 | postcore_initcall(ks8695_gpio_debugfs_init); | ||
318 | |||
319 | #endif | ||
diff --git a/arch/arm/mach-ks8695/include/mach/gpio-ks8695.h b/arch/arm/mach-ks8695/include/mach/gpio-ks8695.h new file mode 100644 index 000000000000..6eb034d60325 --- /dev/null +++ b/arch/arm/mach-ks8695/include/mach/gpio-ks8695.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Andrew Victor | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_KS8659_GPIO_H | ||
10 | #define __MACH_KS8659_GPIO_H | ||
11 | |||
12 | #include <linux/kernel.h> | ||
13 | |||
14 | #define KS8695_GPIO_0 0 | ||
15 | #define KS8695_GPIO_1 1 | ||
16 | #define KS8695_GPIO_2 2 | ||
17 | #define KS8695_GPIO_3 3 | ||
18 | #define KS8695_GPIO_4 4 | ||
19 | #define KS8695_GPIO_5 5 | ||
20 | #define KS8695_GPIO_6 6 | ||
21 | #define KS8695_GPIO_7 7 | ||
22 | #define KS8695_GPIO_8 8 | ||
23 | #define KS8695_GPIO_9 9 | ||
24 | #define KS8695_GPIO_10 10 | ||
25 | #define KS8695_GPIO_11 11 | ||
26 | #define KS8695_GPIO_12 12 | ||
27 | #define KS8695_GPIO_13 13 | ||
28 | #define KS8695_GPIO_14 14 | ||
29 | #define KS8695_GPIO_15 15 | ||
30 | |||
31 | /* | ||
32 | * Configure GPIO pin as external interrupt source. | ||
33 | */ | ||
34 | extern int ks8695_gpio_interrupt(unsigned int pin, unsigned int type); | ||
35 | |||
36 | /* Register the GPIOs */ | ||
37 | extern void ks8695_register_gpios(void); | ||
38 | |||
39 | #endif /* __MACH_KS8659_GPIO_H */ | ||
diff --git a/arch/arm/mach-ks8695/include/mach/gpio.h b/arch/arm/mach-ks8695/include/mach/gpio.h index 86312d476bc6..f5fda36e4512 100644 --- a/arch/arm/mach-ks8695/include/mach/gpio.h +++ b/arch/arm/mach-ks8695/include/mach/gpio.h | |||
@@ -11,47 +11,9 @@ | |||
11 | #ifndef __ASM_ARCH_GPIO_H_ | 11 | #ifndef __ASM_ARCH_GPIO_H_ |
12 | #define __ASM_ARCH_GPIO_H_ | 12 | #define __ASM_ARCH_GPIO_H_ |
13 | 13 | ||
14 | #include <linux/kernel.h> | ||
15 | |||
16 | #define KS8695_GPIO_0 0 | ||
17 | #define KS8695_GPIO_1 1 | ||
18 | #define KS8695_GPIO_2 2 | ||
19 | #define KS8695_GPIO_3 3 | ||
20 | #define KS8695_GPIO_4 4 | ||
21 | #define KS8695_GPIO_5 5 | ||
22 | #define KS8695_GPIO_6 6 | ||
23 | #define KS8695_GPIO_7 7 | ||
24 | #define KS8695_GPIO_8 8 | ||
25 | #define KS8695_GPIO_9 9 | ||
26 | #define KS8695_GPIO_10 10 | ||
27 | #define KS8695_GPIO_11 11 | ||
28 | #define KS8695_GPIO_12 12 | ||
29 | #define KS8695_GPIO_13 13 | ||
30 | #define KS8695_GPIO_14 14 | ||
31 | #define KS8695_GPIO_15 15 | ||
32 | |||
33 | /* | ||
34 | * Configure GPIO pin as external interrupt source. | ||
35 | */ | ||
36 | extern int ks8695_gpio_interrupt(unsigned int pin, unsigned int type); | ||
37 | |||
38 | /* | 14 | /* |
39 | * Map IRQ number to GPIO line. | 15 | * Map IRQ number to GPIO line. |
40 | */ | 16 | */ |
41 | extern int irq_to_gpio(unsigned int irq); | 17 | extern int irq_to_gpio(unsigned int irq); |
42 | 18 | ||
43 | #include <asm-generic/gpio.h> | ||
44 | |||
45 | /* If it turns out that we need to optimise GPIO access for the | ||
46 | * Micrel's GPIOs, then these can be changed to check their argument | ||
47 | * directly as static inlines. However for now it's probably not | ||
48 | * worthwhile. | ||
49 | */ | ||
50 | #define gpio_get_value __gpio_get_value | ||
51 | #define gpio_set_value __gpio_set_value | ||
52 | #define gpio_to_irq __gpio_to_irq | ||
53 | |||
54 | /* Register the GPIOs */ | ||
55 | extern void ks8695_register_gpios(void); | ||
56 | |||
57 | #endif | 19 | #endif |
diff --git a/arch/arm/mach-ks8695/leds.c b/arch/arm/mach-ks8695/leds.c index 184ef74e4bee..d6f6502ac9b5 100644 --- a/arch/arm/mach-ks8695/leds.c +++ b/arch/arm/mach-ks8695/leds.c | |||
@@ -7,14 +7,14 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/gpio.h> | ||
14 | 15 | ||
15 | #include <asm/leds.h> | 16 | #include <asm/leds.h> |
16 | #include <mach/devices.h> | 17 | #include <mach/devices.h> |
17 | #include <mach/gpio.h> | ||
18 | 18 | ||
19 | 19 | ||
20 | static inline void ks8695_led_on(unsigned int led) | 20 | static inline void ks8695_led_on(unsigned int led) |
diff --git a/arch/arm/mach-lpc32xx/Makefile b/arch/arm/mach-lpc32xx/Makefile index a5fc5d0eeaeb..f5db805ab958 100644 --- a/arch/arm/mach-lpc32xx/Makefile +++ b/arch/arm/mach-lpc32xx/Makefile | |||
@@ -3,6 +3,6 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := timer.o irq.o common.o serial.o clock.o | 5 | obj-y := timer.o irq.o common.o serial.o clock.o |
6 | obj-y += gpiolib.o pm.o suspend.o | 6 | obj-y += pm.o suspend.o |
7 | obj-y += phy3250.o | 7 | obj-y += phy3250.o |
8 | 8 | ||
diff --git a/arch/arm/mach-lpc32xx/gpiolib.c b/arch/arm/mach-lpc32xx/gpiolib.c deleted file mode 100644 index 69061ea8997a..000000000000 --- a/arch/arm/mach-lpc32xx/gpiolib.c +++ /dev/null | |||
@@ -1,446 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-lpc32xx/gpiolib.c | ||
3 | * | ||
4 | * Author: Kevin Wells <kevin.wells@nxp.com> | ||
5 | * | ||
6 | * Copyright (C) 2010 NXP Semiconductors | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | */ | ||
18 | |||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/io.h> | ||
22 | #include <linux/errno.h> | ||
23 | #include <linux/gpio.h> | ||
24 | |||
25 | #include <mach/hardware.h> | ||
26 | #include <mach/platform.h> | ||
27 | #include "common.h" | ||
28 | |||
29 | #define LPC32XX_GPIO_P3_INP_STATE _GPREG(0x000) | ||
30 | #define LPC32XX_GPIO_P3_OUTP_SET _GPREG(0x004) | ||
31 | #define LPC32XX_GPIO_P3_OUTP_CLR _GPREG(0x008) | ||
32 | #define LPC32XX_GPIO_P3_OUTP_STATE _GPREG(0x00C) | ||
33 | #define LPC32XX_GPIO_P2_DIR_SET _GPREG(0x010) | ||
34 | #define LPC32XX_GPIO_P2_DIR_CLR _GPREG(0x014) | ||
35 | #define LPC32XX_GPIO_P2_DIR_STATE _GPREG(0x018) | ||
36 | #define LPC32XX_GPIO_P2_INP_STATE _GPREG(0x01C) | ||
37 | #define LPC32XX_GPIO_P2_OUTP_SET _GPREG(0x020) | ||
38 | #define LPC32XX_GPIO_P2_OUTP_CLR _GPREG(0x024) | ||
39 | #define LPC32XX_GPIO_P2_MUX_SET _GPREG(0x028) | ||
40 | #define LPC32XX_GPIO_P2_MUX_CLR _GPREG(0x02C) | ||
41 | #define LPC32XX_GPIO_P2_MUX_STATE _GPREG(0x030) | ||
42 | #define LPC32XX_GPIO_P0_INP_STATE _GPREG(0x040) | ||
43 | #define LPC32XX_GPIO_P0_OUTP_SET _GPREG(0x044) | ||
44 | #define LPC32XX_GPIO_P0_OUTP_CLR _GPREG(0x048) | ||
45 | #define LPC32XX_GPIO_P0_OUTP_STATE _GPREG(0x04C) | ||
46 | #define LPC32XX_GPIO_P0_DIR_SET _GPREG(0x050) | ||
47 | #define LPC32XX_GPIO_P0_DIR_CLR _GPREG(0x054) | ||
48 | #define LPC32XX_GPIO_P0_DIR_STATE _GPREG(0x058) | ||
49 | #define LPC32XX_GPIO_P1_INP_STATE _GPREG(0x060) | ||
50 | #define LPC32XX_GPIO_P1_OUTP_SET _GPREG(0x064) | ||
51 | #define LPC32XX_GPIO_P1_OUTP_CLR _GPREG(0x068) | ||
52 | #define LPC32XX_GPIO_P1_OUTP_STATE _GPREG(0x06C) | ||
53 | #define LPC32XX_GPIO_P1_DIR_SET _GPREG(0x070) | ||
54 | #define LPC32XX_GPIO_P1_DIR_CLR _GPREG(0x074) | ||
55 | #define LPC32XX_GPIO_P1_DIR_STATE _GPREG(0x078) | ||
56 | |||
57 | #define GPIO012_PIN_TO_BIT(x) (1 << (x)) | ||
58 | #define GPIO3_PIN_TO_BIT(x) (1 << ((x) + 25)) | ||
59 | #define GPO3_PIN_TO_BIT(x) (1 << (x)) | ||
60 | #define GPIO012_PIN_IN_SEL(x, y) (((x) >> (y)) & 1) | ||
61 | #define GPIO3_PIN_IN_SHIFT(x) ((x) == 5 ? 24 : 10 + (x)) | ||
62 | #define GPIO3_PIN_IN_SEL(x, y) ((x) >> GPIO3_PIN_IN_SHIFT(y)) | ||
63 | #define GPIO3_PIN5_IN_SEL(x) (((x) >> 24) & 1) | ||
64 | #define GPI3_PIN_IN_SEL(x, y) (((x) >> (y)) & 1) | ||
65 | |||
66 | struct gpio_regs { | ||
67 | void __iomem *inp_state; | ||
68 | void __iomem *outp_set; | ||
69 | void __iomem *outp_clr; | ||
70 | void __iomem *dir_set; | ||
71 | void __iomem *dir_clr; | ||
72 | }; | ||
73 | |||
74 | /* | ||
75 | * GPIO names | ||
76 | */ | ||
77 | static const char *gpio_p0_names[LPC32XX_GPIO_P0_MAX] = { | ||
78 | "p0.0", "p0.1", "p0.2", "p0.3", | ||
79 | "p0.4", "p0.5", "p0.6", "p0.7" | ||
80 | }; | ||
81 | |||
82 | static const char *gpio_p1_names[LPC32XX_GPIO_P1_MAX] = { | ||
83 | "p1.0", "p1.1", "p1.2", "p1.3", | ||
84 | "p1.4", "p1.5", "p1.6", "p1.7", | ||
85 | "p1.8", "p1.9", "p1.10", "p1.11", | ||
86 | "p1.12", "p1.13", "p1.14", "p1.15", | ||
87 | "p1.16", "p1.17", "p1.18", "p1.19", | ||
88 | "p1.20", "p1.21", "p1.22", "p1.23", | ||
89 | }; | ||
90 | |||
91 | static const char *gpio_p2_names[LPC32XX_GPIO_P2_MAX] = { | ||
92 | "p2.0", "p2.1", "p2.2", "p2.3", | ||
93 | "p2.4", "p2.5", "p2.6", "p2.7", | ||
94 | "p2.8", "p2.9", "p2.10", "p2.11", | ||
95 | "p2.12" | ||
96 | }; | ||
97 | |||
98 | static const char *gpio_p3_names[LPC32XX_GPIO_P3_MAX] = { | ||
99 | "gpi000", "gpio01", "gpio02", "gpio03", | ||
100 | "gpio04", "gpio05" | ||
101 | }; | ||
102 | |||
103 | static const char *gpi_p3_names[LPC32XX_GPI_P3_MAX] = { | ||
104 | "gpi00", "gpi01", "gpi02", "gpi03", | ||
105 | "gpi04", "gpi05", "gpi06", "gpi07", | ||
106 | "gpi08", "gpi09", NULL, NULL, | ||
107 | NULL, NULL, NULL, "gpi15", | ||
108 | "gpi16", "gpi17", "gpi18", "gpi19", | ||
109 | "gpi20", "gpi21", "gpi22", "gpi23", | ||
110 | "gpi24", "gpi25", "gpi26", "gpi27" | ||
111 | }; | ||
112 | |||
113 | static const char *gpo_p3_names[LPC32XX_GPO_P3_MAX] = { | ||
114 | "gpo00", "gpo01", "gpo02", "gpo03", | ||
115 | "gpo04", "gpo05", "gpo06", "gpo07", | ||
116 | "gpo08", "gpo09", "gpo10", "gpo11", | ||
117 | "gpo12", "gpo13", "gpo14", "gpo15", | ||
118 | "gpo16", "gpo17", "gpo18", "gpo19", | ||
119 | "gpo20", "gpo21", "gpo22", "gpo23" | ||
120 | }; | ||
121 | |||
122 | static struct gpio_regs gpio_grp_regs_p0 = { | ||
123 | .inp_state = LPC32XX_GPIO_P0_INP_STATE, | ||
124 | .outp_set = LPC32XX_GPIO_P0_OUTP_SET, | ||
125 | .outp_clr = LPC32XX_GPIO_P0_OUTP_CLR, | ||
126 | .dir_set = LPC32XX_GPIO_P0_DIR_SET, | ||
127 | .dir_clr = LPC32XX_GPIO_P0_DIR_CLR, | ||
128 | }; | ||
129 | |||
130 | static struct gpio_regs gpio_grp_regs_p1 = { | ||
131 | .inp_state = LPC32XX_GPIO_P1_INP_STATE, | ||
132 | .outp_set = LPC32XX_GPIO_P1_OUTP_SET, | ||
133 | .outp_clr = LPC32XX_GPIO_P1_OUTP_CLR, | ||
134 | .dir_set = LPC32XX_GPIO_P1_DIR_SET, | ||
135 | .dir_clr = LPC32XX_GPIO_P1_DIR_CLR, | ||
136 | }; | ||
137 | |||
138 | static struct gpio_regs gpio_grp_regs_p2 = { | ||
139 | .inp_state = LPC32XX_GPIO_P2_INP_STATE, | ||
140 | .outp_set = LPC32XX_GPIO_P2_OUTP_SET, | ||
141 | .outp_clr = LPC32XX_GPIO_P2_OUTP_CLR, | ||
142 | .dir_set = LPC32XX_GPIO_P2_DIR_SET, | ||
143 | .dir_clr = LPC32XX_GPIO_P2_DIR_CLR, | ||
144 | }; | ||
145 | |||
146 | static struct gpio_regs gpio_grp_regs_p3 = { | ||
147 | .inp_state = LPC32XX_GPIO_P3_INP_STATE, | ||
148 | .outp_set = LPC32XX_GPIO_P3_OUTP_SET, | ||
149 | .outp_clr = LPC32XX_GPIO_P3_OUTP_CLR, | ||
150 | .dir_set = LPC32XX_GPIO_P2_DIR_SET, | ||
151 | .dir_clr = LPC32XX_GPIO_P2_DIR_CLR, | ||
152 | }; | ||
153 | |||
154 | struct lpc32xx_gpio_chip { | ||
155 | struct gpio_chip chip; | ||
156 | struct gpio_regs *gpio_grp; | ||
157 | }; | ||
158 | |||
159 | static inline struct lpc32xx_gpio_chip *to_lpc32xx_gpio( | ||
160 | struct gpio_chip *gpc) | ||
161 | { | ||
162 | return container_of(gpc, struct lpc32xx_gpio_chip, chip); | ||
163 | } | ||
164 | |||
165 | static void __set_gpio_dir_p012(struct lpc32xx_gpio_chip *group, | ||
166 | unsigned pin, int input) | ||
167 | { | ||
168 | if (input) | ||
169 | __raw_writel(GPIO012_PIN_TO_BIT(pin), | ||
170 | group->gpio_grp->dir_clr); | ||
171 | else | ||
172 | __raw_writel(GPIO012_PIN_TO_BIT(pin), | ||
173 | group->gpio_grp->dir_set); | ||
174 | } | ||
175 | |||
176 | static void __set_gpio_dir_p3(struct lpc32xx_gpio_chip *group, | ||
177 | unsigned pin, int input) | ||
178 | { | ||
179 | u32 u = GPIO3_PIN_TO_BIT(pin); | ||
180 | |||
181 | if (input) | ||
182 | __raw_writel(u, group->gpio_grp->dir_clr); | ||
183 | else | ||
184 | __raw_writel(u, group->gpio_grp->dir_set); | ||
185 | } | ||
186 | |||
187 | static void __set_gpio_level_p012(struct lpc32xx_gpio_chip *group, | ||
188 | unsigned pin, int high) | ||
189 | { | ||
190 | if (high) | ||
191 | __raw_writel(GPIO012_PIN_TO_BIT(pin), | ||
192 | group->gpio_grp->outp_set); | ||
193 | else | ||
194 | __raw_writel(GPIO012_PIN_TO_BIT(pin), | ||
195 | group->gpio_grp->outp_clr); | ||
196 | } | ||
197 | |||
198 | static void __set_gpio_level_p3(struct lpc32xx_gpio_chip *group, | ||
199 | unsigned pin, int high) | ||
200 | { | ||
201 | u32 u = GPIO3_PIN_TO_BIT(pin); | ||
202 | |||
203 | if (high) | ||
204 | __raw_writel(u, group->gpio_grp->outp_set); | ||
205 | else | ||
206 | __raw_writel(u, group->gpio_grp->outp_clr); | ||
207 | } | ||
208 | |||
209 | static void __set_gpo_level_p3(struct lpc32xx_gpio_chip *group, | ||
210 | unsigned pin, int high) | ||
211 | { | ||
212 | if (high) | ||
213 | __raw_writel(GPO3_PIN_TO_BIT(pin), group->gpio_grp->outp_set); | ||
214 | else | ||
215 | __raw_writel(GPO3_PIN_TO_BIT(pin), group->gpio_grp->outp_clr); | ||
216 | } | ||
217 | |||
218 | static int __get_gpio_state_p012(struct lpc32xx_gpio_chip *group, | ||
219 | unsigned pin) | ||
220 | { | ||
221 | return GPIO012_PIN_IN_SEL(__raw_readl(group->gpio_grp->inp_state), | ||
222 | pin); | ||
223 | } | ||
224 | |||
225 | static int __get_gpio_state_p3(struct lpc32xx_gpio_chip *group, | ||
226 | unsigned pin) | ||
227 | { | ||
228 | int state = __raw_readl(group->gpio_grp->inp_state); | ||
229 | |||
230 | /* | ||
231 | * P3 GPIO pin input mapping is not contiguous, GPIOP3-0..4 is mapped | ||
232 | * to bits 10..14, while GPIOP3-5 is mapped to bit 24. | ||
233 | */ | ||
234 | return GPIO3_PIN_IN_SEL(state, pin); | ||
235 | } | ||
236 | |||
237 | static int __get_gpi_state_p3(struct lpc32xx_gpio_chip *group, | ||
238 | unsigned pin) | ||
239 | { | ||
240 | return GPI3_PIN_IN_SEL(__raw_readl(group->gpio_grp->inp_state), pin); | ||
241 | } | ||
242 | |||
243 | /* | ||
244 | * GENERIC_GPIO primitives. | ||
245 | */ | ||
246 | static int lpc32xx_gpio_dir_input_p012(struct gpio_chip *chip, | ||
247 | unsigned pin) | ||
248 | { | ||
249 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
250 | |||
251 | __set_gpio_dir_p012(group, pin, 1); | ||
252 | |||
253 | return 0; | ||
254 | } | ||
255 | |||
256 | static int lpc32xx_gpio_dir_input_p3(struct gpio_chip *chip, | ||
257 | unsigned pin) | ||
258 | { | ||
259 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
260 | |||
261 | __set_gpio_dir_p3(group, pin, 1); | ||
262 | |||
263 | return 0; | ||
264 | } | ||
265 | |||
266 | static int lpc32xx_gpio_dir_in_always(struct gpio_chip *chip, | ||
267 | unsigned pin) | ||
268 | { | ||
269 | return 0; | ||
270 | } | ||
271 | |||
272 | static int lpc32xx_gpio_get_value_p012(struct gpio_chip *chip, unsigned pin) | ||
273 | { | ||
274 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
275 | |||
276 | return __get_gpio_state_p012(group, pin); | ||
277 | } | ||
278 | |||
279 | static int lpc32xx_gpio_get_value_p3(struct gpio_chip *chip, unsigned pin) | ||
280 | { | ||
281 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
282 | |||
283 | return __get_gpio_state_p3(group, pin); | ||
284 | } | ||
285 | |||
286 | static int lpc32xx_gpi_get_value(struct gpio_chip *chip, unsigned pin) | ||
287 | { | ||
288 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
289 | |||
290 | return __get_gpi_state_p3(group, pin); | ||
291 | } | ||
292 | |||
293 | static int lpc32xx_gpio_dir_output_p012(struct gpio_chip *chip, unsigned pin, | ||
294 | int value) | ||
295 | { | ||
296 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
297 | |||
298 | __set_gpio_dir_p012(group, pin, 0); | ||
299 | |||
300 | return 0; | ||
301 | } | ||
302 | |||
303 | static int lpc32xx_gpio_dir_output_p3(struct gpio_chip *chip, unsigned pin, | ||
304 | int value) | ||
305 | { | ||
306 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
307 | |||
308 | __set_gpio_dir_p3(group, pin, 0); | ||
309 | |||
310 | return 0; | ||
311 | } | ||
312 | |||
313 | static int lpc32xx_gpio_dir_out_always(struct gpio_chip *chip, unsigned pin, | ||
314 | int value) | ||
315 | { | ||
316 | return 0; | ||
317 | } | ||
318 | |||
319 | static void lpc32xx_gpio_set_value_p012(struct gpio_chip *chip, unsigned pin, | ||
320 | int value) | ||
321 | { | ||
322 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
323 | |||
324 | __set_gpio_level_p012(group, pin, value); | ||
325 | } | ||
326 | |||
327 | static void lpc32xx_gpio_set_value_p3(struct gpio_chip *chip, unsigned pin, | ||
328 | int value) | ||
329 | { | ||
330 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
331 | |||
332 | __set_gpio_level_p3(group, pin, value); | ||
333 | } | ||
334 | |||
335 | static void lpc32xx_gpo_set_value(struct gpio_chip *chip, unsigned pin, | ||
336 | int value) | ||
337 | { | ||
338 | struct lpc32xx_gpio_chip *group = to_lpc32xx_gpio(chip); | ||
339 | |||
340 | __set_gpo_level_p3(group, pin, value); | ||
341 | } | ||
342 | |||
343 | static int lpc32xx_gpio_request(struct gpio_chip *chip, unsigned pin) | ||
344 | { | ||
345 | if (pin < chip->ngpio) | ||
346 | return 0; | ||
347 | |||
348 | return -EINVAL; | ||
349 | } | ||
350 | |||
351 | static struct lpc32xx_gpio_chip lpc32xx_gpiochip[] = { | ||
352 | { | ||
353 | .chip = { | ||
354 | .label = "gpio_p0", | ||
355 | .direction_input = lpc32xx_gpio_dir_input_p012, | ||
356 | .get = lpc32xx_gpio_get_value_p012, | ||
357 | .direction_output = lpc32xx_gpio_dir_output_p012, | ||
358 | .set = lpc32xx_gpio_set_value_p012, | ||
359 | .request = lpc32xx_gpio_request, | ||
360 | .base = LPC32XX_GPIO_P0_GRP, | ||
361 | .ngpio = LPC32XX_GPIO_P0_MAX, | ||
362 | .names = gpio_p0_names, | ||
363 | .can_sleep = 0, | ||
364 | }, | ||
365 | .gpio_grp = &gpio_grp_regs_p0, | ||
366 | }, | ||
367 | { | ||
368 | .chip = { | ||
369 | .label = "gpio_p1", | ||
370 | .direction_input = lpc32xx_gpio_dir_input_p012, | ||
371 | .get = lpc32xx_gpio_get_value_p012, | ||
372 | .direction_output = lpc32xx_gpio_dir_output_p012, | ||
373 | .set = lpc32xx_gpio_set_value_p012, | ||
374 | .request = lpc32xx_gpio_request, | ||
375 | .base = LPC32XX_GPIO_P1_GRP, | ||
376 | .ngpio = LPC32XX_GPIO_P1_MAX, | ||
377 | .names = gpio_p1_names, | ||
378 | .can_sleep = 0, | ||
379 | }, | ||
380 | .gpio_grp = &gpio_grp_regs_p1, | ||
381 | }, | ||
382 | { | ||
383 | .chip = { | ||
384 | .label = "gpio_p2", | ||
385 | .direction_input = lpc32xx_gpio_dir_input_p012, | ||
386 | .get = lpc32xx_gpio_get_value_p012, | ||
387 | .direction_output = lpc32xx_gpio_dir_output_p012, | ||
388 | .set = lpc32xx_gpio_set_value_p012, | ||
389 | .request = lpc32xx_gpio_request, | ||
390 | .base = LPC32XX_GPIO_P2_GRP, | ||
391 | .ngpio = LPC32XX_GPIO_P2_MAX, | ||
392 | .names = gpio_p2_names, | ||
393 | .can_sleep = 0, | ||
394 | }, | ||
395 | .gpio_grp = &gpio_grp_regs_p2, | ||
396 | }, | ||
397 | { | ||
398 | .chip = { | ||
399 | .label = "gpio_p3", | ||
400 | .direction_input = lpc32xx_gpio_dir_input_p3, | ||
401 | .get = lpc32xx_gpio_get_value_p3, | ||
402 | .direction_output = lpc32xx_gpio_dir_output_p3, | ||
403 | .set = lpc32xx_gpio_set_value_p3, | ||
404 | .request = lpc32xx_gpio_request, | ||
405 | .base = LPC32XX_GPIO_P3_GRP, | ||
406 | .ngpio = LPC32XX_GPIO_P3_MAX, | ||
407 | .names = gpio_p3_names, | ||
408 | .can_sleep = 0, | ||
409 | }, | ||
410 | .gpio_grp = &gpio_grp_regs_p3, | ||
411 | }, | ||
412 | { | ||
413 | .chip = { | ||
414 | .label = "gpi_p3", | ||
415 | .direction_input = lpc32xx_gpio_dir_in_always, | ||
416 | .get = lpc32xx_gpi_get_value, | ||
417 | .request = lpc32xx_gpio_request, | ||
418 | .base = LPC32XX_GPI_P3_GRP, | ||
419 | .ngpio = LPC32XX_GPI_P3_MAX, | ||
420 | .names = gpi_p3_names, | ||
421 | .can_sleep = 0, | ||
422 | }, | ||
423 | .gpio_grp = &gpio_grp_regs_p3, | ||
424 | }, | ||
425 | { | ||
426 | .chip = { | ||
427 | .label = "gpo_p3", | ||
428 | .direction_output = lpc32xx_gpio_dir_out_always, | ||
429 | .set = lpc32xx_gpo_set_value, | ||
430 | .request = lpc32xx_gpio_request, | ||
431 | .base = LPC32XX_GPO_P3_GRP, | ||
432 | .ngpio = LPC32XX_GPO_P3_MAX, | ||
433 | .names = gpo_p3_names, | ||
434 | .can_sleep = 0, | ||
435 | }, | ||
436 | .gpio_grp = &gpio_grp_regs_p3, | ||
437 | }, | ||
438 | }; | ||
439 | |||
440 | void __init lpc32xx_gpio_init(void) | ||
441 | { | ||
442 | int i; | ||
443 | |||
444 | for (i = 0; i < ARRAY_SIZE(lpc32xx_gpiochip); i++) | ||
445 | gpiochip_add(&lpc32xx_gpiochip[i].chip); | ||
446 | } | ||
diff --git a/arch/arm/mach-lpc32xx/include/mach/gpio-lpc32xx.h b/arch/arm/mach-lpc32xx/include/mach/gpio-lpc32xx.h new file mode 100644 index 000000000000..1816e22a3479 --- /dev/null +++ b/arch/arm/mach-lpc32xx/include/mach/gpio-lpc32xx.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * Author: Kevin Wells <kevin.wells@nxp.com> | ||
3 | * | ||
4 | * Copyright (C) 2010 NXP Semiconductors | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | */ | ||
16 | |||
17 | #ifndef __MACH_GPIO_LPC32XX_H | ||
18 | #define __MACH_GPIO_LPC32XX_H | ||
19 | |||
20 | /* | ||
21 | * Note! | ||
22 | * Muxed GP pins need to be setup to the GP state in the board level | ||
23 | * code prior to using this driver. | ||
24 | * GPI pins : 28xP3 group | ||
25 | * GPO pins : 24xP3 group | ||
26 | * GPIO pins: 8xP0 group, 24xP1 group, 13xP2 group, 6xP3 group | ||
27 | */ | ||
28 | |||
29 | #define LPC32XX_GPIO_P0_MAX 8 | ||
30 | #define LPC32XX_GPIO_P1_MAX 24 | ||
31 | #define LPC32XX_GPIO_P2_MAX 13 | ||
32 | #define LPC32XX_GPIO_P3_MAX 6 | ||
33 | #define LPC32XX_GPI_P3_MAX 28 | ||
34 | #define LPC32XX_GPO_P3_MAX 24 | ||
35 | |||
36 | #define LPC32XX_GPIO_P0_GRP 0 | ||
37 | #define LPC32XX_GPIO_P1_GRP (LPC32XX_GPIO_P0_GRP + LPC32XX_GPIO_P0_MAX) | ||
38 | #define LPC32XX_GPIO_P2_GRP (LPC32XX_GPIO_P1_GRP + LPC32XX_GPIO_P1_MAX) | ||
39 | #define LPC32XX_GPIO_P3_GRP (LPC32XX_GPIO_P2_GRP + LPC32XX_GPIO_P2_MAX) | ||
40 | #define LPC32XX_GPI_P3_GRP (LPC32XX_GPIO_P3_GRP + LPC32XX_GPIO_P3_MAX) | ||
41 | #define LPC32XX_GPO_P3_GRP (LPC32XX_GPI_P3_GRP + LPC32XX_GPI_P3_MAX) | ||
42 | |||
43 | /* | ||
44 | * A specific GPIO can be selected with this macro | ||
45 | * ie, GPIO_05 can be selected with LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 5) | ||
46 | * See the LPC32x0 User's guide for GPIO group numbers | ||
47 | */ | ||
48 | #define LPC32XX_GPIO(x, y) ((x) + (y)) | ||
49 | |||
50 | #endif /* __MACH_GPIO_LPC32XX_H */ | ||
diff --git a/arch/arm/mach-lpc32xx/include/mach/gpio.h b/arch/arm/mach-lpc32xx/include/mach/gpio.h index 67d03da1eee9..e69de29bb2d1 100644 --- a/arch/arm/mach-lpc32xx/include/mach/gpio.h +++ b/arch/arm/mach-lpc32xx/include/mach/gpio.h | |||
@@ -1,74 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-lpc32xx/include/mach/gpio.h | ||
3 | * | ||
4 | * Author: Kevin Wells <kevin.wells@nxp.com> | ||
5 | * | ||
6 | * Copyright (C) 2010 NXP Semiconductors | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_GPIO_H | ||
20 | #define __ASM_ARCH_GPIO_H | ||
21 | |||
22 | #include <asm-generic/gpio.h> | ||
23 | |||
24 | /* | ||
25 | * Note! | ||
26 | * Muxed GP pins need to be setup to the GP state in the board level | ||
27 | * code prior to using this driver. | ||
28 | * GPI pins : 28xP3 group | ||
29 | * GPO pins : 24xP3 group | ||
30 | * GPIO pins: 8xP0 group, 24xP1 group, 13xP2 group, 6xP3 group | ||
31 | */ | ||
32 | |||
33 | #define LPC32XX_GPIO_P0_MAX 8 | ||
34 | #define LPC32XX_GPIO_P1_MAX 24 | ||
35 | #define LPC32XX_GPIO_P2_MAX 13 | ||
36 | #define LPC32XX_GPIO_P3_MAX 6 | ||
37 | #define LPC32XX_GPI_P3_MAX 28 | ||
38 | #define LPC32XX_GPO_P3_MAX 24 | ||
39 | |||
40 | #define LPC32XX_GPIO_P0_GRP 0 | ||
41 | #define LPC32XX_GPIO_P1_GRP (LPC32XX_GPIO_P0_GRP + LPC32XX_GPIO_P0_MAX) | ||
42 | #define LPC32XX_GPIO_P2_GRP (LPC32XX_GPIO_P1_GRP + LPC32XX_GPIO_P1_MAX) | ||
43 | #define LPC32XX_GPIO_P3_GRP (LPC32XX_GPIO_P2_GRP + LPC32XX_GPIO_P2_MAX) | ||
44 | #define LPC32XX_GPI_P3_GRP (LPC32XX_GPIO_P3_GRP + LPC32XX_GPIO_P3_MAX) | ||
45 | #define LPC32XX_GPO_P3_GRP (LPC32XX_GPI_P3_GRP + LPC32XX_GPI_P3_MAX) | ||
46 | |||
47 | /* | ||
48 | * A specific GPIO can be selected with this macro | ||
49 | * ie, GPIO_05 can be selected with LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 5) | ||
50 | * See the LPC32x0 User's guide for GPIO group numbers | ||
51 | */ | ||
52 | #define LPC32XX_GPIO(x, y) ((x) + (y)) | ||
53 | |||
54 | static inline int gpio_get_value(unsigned gpio) | ||
55 | { | ||
56 | return __gpio_get_value(gpio); | ||
57 | } | ||
58 | |||
59 | static inline void gpio_set_value(unsigned gpio, int value) | ||
60 | { | ||
61 | __gpio_set_value(gpio, value); | ||
62 | } | ||
63 | |||
64 | static inline int gpio_cansleep(unsigned gpio) | ||
65 | { | ||
66 | return __gpio_cansleep(gpio); | ||
67 | } | ||
68 | |||
69 | static inline int gpio_to_irq(unsigned gpio) | ||
70 | { | ||
71 | return __gpio_to_irq(gpio); | ||
72 | } | ||
73 | |||
74 | #endif | ||
diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c index 7993b096778e..c3a22fd736aa 100644 --- a/arch/arm/mach-lpc32xx/phy3250.c +++ b/arch/arm/mach-lpc32xx/phy3250.c | |||
@@ -37,6 +37,7 @@ | |||
37 | 37 | ||
38 | #include <mach/hardware.h> | 38 | #include <mach/hardware.h> |
39 | #include <mach/platform.h> | 39 | #include <mach/platform.h> |
40 | #include <mach/gpio-lpc32xx.h> | ||
40 | #include "common.h" | 41 | #include "common.h" |
41 | 42 | ||
42 | /* | 43 | /* |
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 06b5fa853c93..833c3a2784aa 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * it under the terms of the GNU General Public License version 2 as | 8 | * it under the terms of the GNU General Public License version 2 as |
9 | * publishhed by the Free Software Foundation. | 9 | * publishhed by the Free Software Foundation. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
@@ -17,13 +17,13 @@ | |||
17 | #include <linux/mtd/partitions.h> | 17 | #include <linux/mtd/partitions.h> |
18 | #include <linux/mtd/nand.h> | 18 | #include <linux/mtd/nand.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/gpio.h> | ||
20 | 21 | ||
21 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
23 | #include <mach/addr-map.h> | 24 | #include <mach/addr-map.h> |
24 | #include <mach/mfp-pxa168.h> | 25 | #include <mach/mfp-pxa168.h> |
25 | #include <mach/pxa168.h> | 26 | #include <mach/pxa168.h> |
26 | #include <mach/gpio.h> | ||
27 | #include <video/pxa168fb.h> | 27 | #include <video/pxa168fb.h> |
28 | #include <linux/input.h> | 28 | #include <linux/input.h> |
29 | #include <plat/pxa27x_keypad.h> | 29 | #include <plat/pxa27x_keypad.h> |
diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c index c79162a50f28..e411252e3d39 100644 --- a/arch/arm/mach-mmp/brownstone.c +++ b/arch/arm/mach-mmp/brownstone.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/gpio.h> | ||
18 | #include <linux/regulator/machine.h> | 17 | #include <linux/regulator/machine.h> |
19 | #include <linux/regulator/max8649.h> | 18 | #include <linux/regulator/max8649.h> |
20 | #include <linux/regulator/fixed.h> | 19 | #include <linux/regulator/fixed.h> |
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c index 98e25d9aaab6..32776f3739f1 100644 --- a/arch/arm/mach-mmp/gplugd.c +++ b/arch/arm/mach-mmp/gplugd.c | |||
@@ -9,11 +9,11 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/gpio.h> | ||
12 | 13 | ||
13 | #include <asm/mach/arch.h> | 14 | #include <asm/mach/arch.h> |
14 | #include <asm/mach-types.h> | 15 | #include <asm/mach-types.h> |
15 | 16 | ||
16 | #include <mach/gpio.h> | ||
17 | #include <mach/pxa168.h> | 17 | #include <mach/pxa168.h> |
18 | #include <mach/mfp-pxa168.h> | 18 | #include <mach/mfp-pxa168.h> |
19 | 19 | ||
diff --git a/arch/arm/mach-mmp/include/mach/gpio-pxa.h b/arch/arm/mach-mmp/include/mach/gpio-pxa.h new file mode 100644 index 000000000000..c017a983eced --- /dev/null +++ b/arch/arm/mach-mmp/include/mach/gpio-pxa.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef __ASM_MACH_GPIO_PXA_H | ||
2 | #define __ASM_MACH_GPIO_PXA_H | ||
3 | |||
4 | #include <mach/addr-map.h> | ||
5 | #include <mach/irqs.h> | ||
6 | |||
7 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) | ||
8 | |||
9 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | ||
10 | #define GPIO_REG(x) (*((volatile u32 *)(GPIO_REGS_VIRT + (x)))) | ||
11 | |||
12 | #define NR_BUILTIN_GPIO IRQ_GPIO_NUM | ||
13 | |||
14 | #define gpio_to_bank(gpio) ((gpio) >> 5) | ||
15 | |||
16 | /* NOTE: these macros are defined here to make optimization of | ||
17 | * gpio_{get,set}_value() to work when 'gpio' is a constant. | ||
18 | * Usage of these macros otherwise is no longer recommended, | ||
19 | * use generic GPIO API whenever possible. | ||
20 | */ | ||
21 | #define GPIO_bit(gpio) (1 << ((gpio) & 0x1f)) | ||
22 | |||
23 | #define GPLR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x00) | ||
24 | #define GPDR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x0c) | ||
25 | #define GPSR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x18) | ||
26 | #define GPCR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x24) | ||
27 | |||
28 | #include <plat/gpio-pxa.h> | ||
29 | |||
30 | #endif /* __ASM_MACH_GPIO_PXA_H */ | ||
diff --git a/arch/arm/mach-mmp/include/mach/gpio.h b/arch/arm/mach-mmp/include/mach/gpio.h index 7bfb827f3fe3..681262359d1c 100644 --- a/arch/arm/mach-mmp/include/mach/gpio.h +++ b/arch/arm/mach-mmp/include/mach/gpio.h | |||
@@ -1,36 +1,13 @@ | |||
1 | #ifndef __ASM_MACH_GPIO_H | 1 | #ifndef __ASM_MACH_GPIO_H |
2 | #define __ASM_MACH_GPIO_H | 2 | #define __ASM_MACH_GPIO_H |
3 | 3 | ||
4 | #include <mach/addr-map.h> | ||
5 | #include <mach/irqs.h> | ||
6 | #include <asm-generic/gpio.h> | 4 | #include <asm-generic/gpio.h> |
7 | 5 | ||
8 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) | ||
9 | |||
10 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | ||
11 | #define GPIO_REG(x) (*((volatile u32 *)(GPIO_REGS_VIRT + (x)))) | ||
12 | |||
13 | #define NR_BUILTIN_GPIO IRQ_GPIO_NUM | ||
14 | |||
15 | #define gpio_to_bank(gpio) ((gpio) >> 5) | ||
16 | #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio)) | 6 | #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio)) |
17 | #define irq_to_gpio(irq) ((irq) - IRQ_GPIO_START) | 7 | #define irq_to_gpio(irq) ((irq) - IRQ_GPIO_START) |
18 | 8 | ||
19 | |||
20 | #define __gpio_is_inverted(gpio) (0) | 9 | #define __gpio_is_inverted(gpio) (0) |
21 | #define __gpio_is_occupied(gpio) (0) | 10 | #define __gpio_is_occupied(gpio) (0) |
22 | 11 | ||
23 | /* NOTE: these macros are defined here to make optimization of | ||
24 | * gpio_{get,set}_value() to work when 'gpio' is a constant. | ||
25 | * Usage of these macros otherwise is no longer recommended, | ||
26 | * use generic GPIO API whenever possible. | ||
27 | */ | ||
28 | #define GPIO_bit(gpio) (1 << ((gpio) & 0x1f)) | ||
29 | |||
30 | #define GPLR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x00) | ||
31 | #define GPDR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x0c) | ||
32 | #define GPSR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x18) | ||
33 | #define GPCR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x24) | ||
34 | |||
35 | #include <plat/gpio.h> | 12 | #include <plat/gpio.h> |
36 | #endif /* __ASM_MACH_GPIO_H */ | 13 | #endif /* __ASM_MACH_GPIO_H */ |
diff --git a/arch/arm/mach-mmp/jasper.c b/arch/arm/mach-mmp/jasper.c index 5d6421d63254..8bfac6612623 100644 --- a/arch/arm/mach-mmp/jasper.c +++ b/arch/arm/mach-mmp/jasper.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/gpio.h> | ||
18 | #include <linux/regulator/machine.h> | 17 | #include <linux/regulator/machine.h> |
19 | #include <linux/regulator/max8649.h> | 18 | #include <linux/regulator/max8649.h> |
20 | #include <linux/mfd/max8925.h> | 19 | #include <linux/mfd/max8925.h> |
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index 079c18861d5c..65d8689e40c9 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | |||
13 | #include <linux/module.h> | 12 | #include <linux/module.h> |
14 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
@@ -25,7 +24,7 @@ | |||
25 | #include <mach/irqs.h> | 24 | #include <mach/irqs.h> |
26 | #include <mach/dma.h> | 25 | #include <mach/dma.h> |
27 | #include <mach/mfp.h> | 26 | #include <mach/mfp.h> |
28 | #include <mach/gpio.h> | 27 | #include <mach/gpio-pxa.h> |
29 | #include <mach/devices.h> | 28 | #include <mach/devices.h> |
30 | #include <mach/mmp2.h> | 29 | #include <mach/mmp2.h> |
31 | 30 | ||
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 0156f535dae7..50c1763911ff 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c | |||
@@ -7,7 +7,6 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | |||
11 | #include <linux/module.h> | 10 | #include <linux/module.h> |
12 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 12 | #include <linux/init.h> |
@@ -21,7 +20,7 @@ | |||
21 | #include <mach/regs-apbc.h> | 20 | #include <mach/regs-apbc.h> |
22 | #include <mach/regs-apmu.h> | 21 | #include <mach/regs-apmu.h> |
23 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
24 | #include <mach/gpio.h> | 23 | #include <mach/gpio-pxa.h> |
25 | #include <mach/dma.h> | 24 | #include <mach/dma.h> |
26 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
27 | #include <mach/mfp.h> | 26 | #include <mach/mfp.h> |
diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 1464607aa60d..4ebbfbba39fc 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c | |||
@@ -7,7 +7,6 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | |||
11 | #include <linux/module.h> | 10 | #include <linux/module.h> |
12 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 12 | #include <linux/init.h> |
@@ -20,7 +19,7 @@ | |||
20 | #include <mach/regs-apmu.h> | 19 | #include <mach/regs-apmu.h> |
21 | #include <mach/cputype.h> | 20 | #include <mach/cputype.h> |
22 | #include <mach/irqs.h> | 21 | #include <mach/irqs.h> |
23 | #include <mach/gpio.h> | 22 | #include <mach/gpio-pxa.h> |
24 | #include <mach/dma.h> | 23 | #include <mach/dma.h> |
25 | #include <mach/mfp.h> | 24 | #include <mach/mfp.h> |
26 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c index c296b75c4453..eb5be879fd8c 100644 --- a/arch/arm/mach-mmp/tavorevb.c +++ b/arch/arm/mach-mmp/tavorevb.c | |||
@@ -7,18 +7,18 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * publishhed by the Free Software Foundation. | 8 | * publishhed by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/smc91x.h> | 14 | #include <linux/smc91x.h> |
15 | #include <linux/gpio.h> | ||
15 | 16 | ||
16 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
17 | #include <asm/mach/arch.h> | 18 | #include <asm/mach/arch.h> |
18 | #include <mach/addr-map.h> | 19 | #include <mach/addr-map.h> |
19 | #include <mach/mfp-pxa910.h> | 20 | #include <mach/mfp-pxa910.h> |
20 | #include <mach/pxa910.h> | 21 | #include <mach/pxa910.h> |
21 | #include <mach/gpio.h> | ||
22 | 22 | ||
23 | #include "common.h" | 23 | #include "common.h" |
24 | 24 | ||
diff --git a/arch/arm/mach-msm/board-msm7x27.c b/arch/arm/mach-msm/board-msm7x27.c index c03f269e2e4b..1a313e10c68a 100644 --- a/arch/arm/mach-msm/board-msm7x27.c +++ b/arch/arm/mach-msm/board-msm7x27.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | * | 14 | * |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include <mach/vreg.h> | 35 | #include <mach/vreg.h> |
36 | #include <mach/mpp.h> | 36 | #include <mach/mpp.h> |
37 | #include <mach/gpio.h> | ||
38 | #include <mach/board.h> | 37 | #include <mach/board.h> |
39 | #include <mach/msm_iomap.h> | 38 | #include <mach/msm_iomap.h> |
40 | 39 | ||
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c index b7a84966b711..92afaf6583ea 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c | |||
@@ -14,7 +14,7 @@ | |||
14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | 14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
15 | * 02110-1301, USA. | 15 | * 02110-1301, USA. |
16 | */ | 16 | */ |
17 | 17 | #include <linux/gpio.h> | |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/memory.h> | 30 | #include <asm/memory.h> |
31 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
32 | 32 | ||
33 | #include <mach/gpio.h> | ||
34 | #include <mach/board.h> | 33 | #include <mach/board.h> |
35 | #include <mach/msm_iomap.h> | 34 | #include <mach/msm_iomap.h> |
36 | #include <mach/dma.h> | 35 | #include <mach/dma.h> |
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c index 6a96911b0ad5..24e9b89738ef 100644 --- a/arch/arm/mach-msm/board-qsd8x50.c +++ b/arch/arm/mach-msm/board-qsd8x50.c | |||
@@ -14,7 +14,7 @@ | |||
14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | 14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
15 | * 02110-1301, USA. | 15 | * 02110-1301, USA. |
16 | */ | 16 | */ |
17 | 17 | #include <linux/gpio.h> | |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
@@ -32,7 +32,6 @@ | |||
32 | #include <mach/board.h> | 32 | #include <mach/board.h> |
33 | #include <mach/irqs.h> | 33 | #include <mach/irqs.h> |
34 | #include <mach/sirc.h> | 34 | #include <mach/sirc.h> |
35 | #include <mach/gpio.h> | ||
36 | #include <mach/vreg.h> | 35 | #include <mach/vreg.h> |
37 | #include <mach/mmc.h> | 36 | #include <mach/mmc.h> |
38 | 37 | ||
diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c index 68f930f07d77..863394c59e86 100644 --- a/arch/arm/mach-msm/board-sapphire.c +++ b/arch/arm/mach-msm/board-sapphire.c | |||
@@ -11,7 +11,7 @@ | |||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | * GNU General Public License for more details. | 12 | * GNU General Public License for more details. |
13 | */ | 13 | */ |
14 | 14 | #include <linux/gpio.h> | |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | 24 | ||
25 | #include <asm/gpio.h> | ||
26 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
27 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
28 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-msm/board-trout-mmc.c b/arch/arm/mach-msm/board-trout-mmc.c index f7a9724788b0..8650342b7493 100644 --- a/arch/arm/mach-msm/board-trout-mmc.c +++ b/arch/arm/mach-msm/board-trout-mmc.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/arch/arm/mach-msm/board-trout-mmc.c | 1 | /* linux/arch/arm/mach-msm/board-trout-mmc.c |
2 | ** Author: Brian Swetland <swetland@google.com> | 2 | ** Author: Brian Swetland <swetland@google.com> |
3 | */ | 3 | */ |
4 | 4 | #include <linux/gpio.h> | |
5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
7 | #include <linux/platform_device.h> | 7 | #include <linux/platform_device.h> |
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/err.h> | 11 | #include <linux/err.h> |
12 | #include <linux/debugfs.h> | 12 | #include <linux/debugfs.h> |
13 | 13 | ||
14 | #include <asm/gpio.h> | ||
15 | #include <asm/io.h> | 14 | #include <asm/io.h> |
16 | 15 | ||
17 | #include <mach/vreg.h> | 16 | #include <mach/vreg.h> |
diff --git a/arch/arm/mach-msm/board-trout-panel.c b/arch/arm/mach-msm/board-trout-panel.c index 729bb49a44ca..25105c1027fe 100644 --- a/arch/arm/mach-msm/board-trout-panel.c +++ b/arch/arm/mach-msm/board-trout-panel.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/arch/arm/mach-msm/board-trout-mddi.c | 1 | /* linux/arch/arm/mach-msm/board-trout-mddi.c |
2 | ** Author: Brian Swetland <swetland@google.com> | 2 | ** Author: Brian Swetland <swetland@google.com> |
3 | */ | 3 | */ |
4 | 4 | #include <linux/gpio.h> | |
5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
7 | #include <linux/platform_device.h> | 7 | #include <linux/platform_device.h> |
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/err.h> | 11 | #include <linux/err.h> |
12 | 12 | ||
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/gpio.h> | ||
15 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
16 | 15 | ||
17 | #include <mach/msm_fb.h> | 16 | #include <mach/msm_fb.h> |
diff --git a/arch/arm/mach-msm/include/mach/gpio.h b/arch/arm/mach-msm/include/mach/gpio.h index 36ad50d3bfaa..40a8c178f10d 100644 --- a/arch/arm/mach-msm/include/mach/gpio.h +++ b/arch/arm/mach-msm/include/mach/gpio.h | |||
@@ -1,26 +1 @@ | |||
1 | /* | /* empty */ | |
2 | * Copyright (C) 2007 Google, Inc. | ||
3 | * Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved. | ||
4 | * Author: Mike Lockwood <lockwood@android.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | #ifndef __ASM_ARCH_MSM_GPIO_H | ||
17 | #define __ASM_ARCH_MSM_GPIO_H | ||
18 | |||
19 | #include <asm-generic/gpio.h> | ||
20 | |||
21 | #define gpio_get_value __gpio_get_value | ||
22 | #define gpio_set_value __gpio_set_value | ||
23 | #define gpio_cansleep __gpio_cansleep | ||
24 | #define gpio_to_irq __gpio_to_irq | ||
25 | |||
26 | #endif /* __ASM_ARCH_MSM_GPIO_H */ | ||
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c index 3e24431bb5ea..e421b701663b 100644 --- a/arch/arm/mach-mv78xx0/irq.c +++ b/arch/arm/mach-mv78xx0/irq.c | |||
@@ -7,12 +7,11 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/pci.h> | 13 | #include <linux/pci.h> |
14 | #include <linux/irq.h> | 14 | #include <linux/irq.h> |
15 | #include <asm/gpio.h> | ||
16 | #include <mach/bridge-regs.h> | 15 | #include <mach/bridge-regs.h> |
17 | #include <plat/irq.h> | 16 | #include <plat/irq.h> |
18 | #include "common.h" | 17 | #include "common.h" |
diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c index 59b7686b9209..cf4e494d44bf 100644 --- a/arch/arm/mach-mv78xx0/mpp.c +++ b/arch/arm/mach-mv78xx0/mpp.c | |||
@@ -7,13 +7,12 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/mbus.h> | 13 | #include <linux/mbus.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <plat/mpp.h> | 15 | #include <plat/mpp.h> |
16 | #include <asm/gpio.h> | ||
17 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
18 | #include "common.h" | 17 | #include "common.h" |
19 | #include "mpp.h" | 18 | #include "mpp.h" |
diff --git a/arch/arm/mach-mxs/include/mach/gpio.h b/arch/arm/mach-mxs/include/mach/gpio.h index 828ccccb6aad..bb11e63261e4 100644 --- a/arch/arm/mach-mxs/include/mach/gpio.h +++ b/arch/arm/mach-mxs/include/mach/gpio.h | |||
@@ -20,16 +20,8 @@ | |||
20 | #ifndef __MACH_MXS_GPIO_H__ | 20 | #ifndef __MACH_MXS_GPIO_H__ |
21 | #define __MACH_MXS_GPIO_H__ | 21 | #define __MACH_MXS_GPIO_H__ |
22 | 22 | ||
23 | #include <asm-generic/gpio.h> | ||
24 | |||
25 | #define MXS_GPIO_NR(bank, nr) ((bank) * 32 + (nr)) | 23 | #define MXS_GPIO_NR(bank, nr) ((bank) * 32 + (nr)) |
26 | 24 | ||
27 | /* use gpiolib dispatchers */ | ||
28 | #define gpio_get_value __gpio_get_value | ||
29 | #define gpio_set_value __gpio_set_value | ||
30 | #define gpio_cansleep __gpio_cansleep | ||
31 | #define gpio_to_irq __gpio_to_irq | ||
32 | |||
33 | #define irq_to_gpio(irq) ((irq) - MXS_GPIO_IRQ_START) | 25 | #define irq_to_gpio(irq) ((irq) - MXS_GPIO_IRQ_START) |
34 | 26 | ||
35 | #endif /* __MACH_MXS_GPIO_H__ */ | 27 | #endif /* __MACH_MXS_GPIO_H__ */ |
diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c index 139930350d93..97d7186484ca 100644 --- a/arch/arm/mach-nomadik/board-nhk8815.c +++ b/arch/arm/mach-nomadik/board-nhk8815.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/mach/irq.h> | 27 | #include <asm/mach/irq.h> |
28 | #include <asm/mach/flash.h> | 28 | #include <asm/mach/flash.h> |
29 | 29 | ||
30 | #include <plat/gpio-nomadik.h> | ||
30 | #include <plat/mtu.h> | 31 | #include <plat/mtu.h> |
31 | 32 | ||
32 | #include <mach/setup.h> | 33 | #include <mach/setup.h> |
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index ac58e3b03b1a..dc67717db6f0 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c | |||
@@ -21,8 +21,8 @@ | |||
21 | #include <linux/device.h> | 21 | #include <linux/device.h> |
22 | #include <linux/amba/bus.h> | 22 | #include <linux/amba/bus.h> |
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | #include <linux/gpio.h> | ||
25 | 24 | ||
25 | #include <plat/gpio-nomadik.h> | ||
26 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
27 | #include <mach/irqs.h> | 27 | #include <mach/irqs.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-nomadik/i2c-8815nhk.c b/arch/arm/mach-nomadik/i2c-8815nhk.c index abfe25a08d6b..0fc2f6f1cc97 100644 --- a/arch/arm/mach-nomadik/i2c-8815nhk.c +++ b/arch/arm/mach-nomadik/i2c-8815nhk.c | |||
@@ -3,8 +3,8 @@ | |||
3 | #include <linux/i2c.h> | 3 | #include <linux/i2c.h> |
4 | #include <linux/i2c-algo-bit.h> | 4 | #include <linux/i2c-algo-bit.h> |
5 | #include <linux/i2c-gpio.h> | 5 | #include <linux/i2c-gpio.h> |
6 | #include <linux/gpio.h> | ||
7 | #include <linux/platform_device.h> | 6 | #include <linux/platform_device.h> |
7 | #include <plat/gpio-nomadik.h> | ||
8 | 8 | ||
9 | /* | 9 | /* |
10 | * There are two busses in the 8815NHK. | 10 | * There are two busses in the 8815NHK. |
diff --git a/arch/arm/mach-nomadik/include/mach/gpio.h b/arch/arm/mach-nomadik/include/mach/gpio.h index 7a81a0420343..efdde0ae0a4f 100644 --- a/arch/arm/mach-nomadik/include/mach/gpio.h +++ b/arch/arm/mach-nomadik/include/mach/gpio.h | |||
@@ -1,6 +1,4 @@ | |||
1 | #ifndef __ASM_ARCH_GPIO_H | 1 | #ifndef __ASM_ARCH_GPIO_H |
2 | #define __ASM_ARCH_GPIO_H | 2 | #define __ASM_ARCH_GPIO_H |
3 | 3 | ||
4 | #include <plat/gpio.h> | ||
5 | |||
6 | #endif /* __ASM_ARCH_GPIO_H */ | 4 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 312ea6b0409d..d86e9af2822b 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -11,7 +11,7 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | #include <linux/gpio.h> | |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/input.h> | 17 | #include <linux/input.h> |
@@ -30,7 +30,6 @@ | |||
30 | 30 | ||
31 | #include <plat/io.h> | 31 | #include <plat/io.h> |
32 | #include <plat/board-ams-delta.h> | 32 | #include <plat/board-ams-delta.h> |
33 | #include <mach/gpio.h> | ||
34 | #include <plat/keypad.h> | 33 | #include <plat/keypad.h> |
35 | #include <plat/mux.h> | 34 | #include <plat/mux.h> |
36 | #include <plat/usb.h> | 35 | #include <plat/usb.h> |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index a6b1bea50371..dd814b33cdd5 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | 29 | ||
30 | #include <plat/tc.h> | 30 | #include <plat/tc.h> |
31 | #include <mach/gpio.h> | ||
32 | #include <plat/mux.h> | 31 | #include <plat/mux.h> |
33 | #include <plat/flash.h> | 32 | #include <plat/flash.h> |
34 | #include <plat/fpga.h> | 33 | #include <plat/fpga.h> |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 04fc356c40fa..8f7d11581482 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -12,7 +12,7 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
23 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
24 | 24 | ||
25 | #include <mach/gpio.h> | ||
26 | #include <plat/mux.h> | 25 | #include <plat/mux.h> |
27 | #include <plat/usb.h> | 26 | #include <plat/usb.h> |
28 | #include <plat/board.h> | 27 | #include <plat/board.h> |
diff --git a/arch/arm/mach-omap1/board-h2-mmc.c b/arch/arm/mach-omap1/board-h2-mmc.c index f2fc43d8382b..da0e37d40823 100644 --- a/arch/arm/mach-omap1/board-h2-mmc.c +++ b/arch/arm/mach-omap1/board-h2-mmc.c | |||
@@ -11,13 +11,12 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | #include <linux/gpio.h> | |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | 16 | ||
17 | #include <linux/i2c/tps65010.h> | 17 | #include <linux/i2c/tps65010.h> |
18 | 18 | ||
19 | #include <plat/mmc.h> | 19 | #include <plat/mmc.h> |
20 | #include <mach/gpio.h> | ||
21 | 20 | ||
22 | #include "board-h2.h" | 21 | #include "board-h2.h" |
23 | 22 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index cb7fb1aa3dca..0796ad7e24b5 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * it under the terms of the GNU General Public License version 2 as | 18 | * it under the terms of the GNU General Public License version 2 as |
19 | * published by the Free Software Foundation. | 19 | * published by the Free Software Foundation. |
20 | */ | 20 | */ |
21 | 21 | #include <linux/gpio.h> | |
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/smc91x.h> | 32 | #include <linux/smc91x.h> |
33 | 33 | ||
34 | #include <mach/hardware.h> | 34 | #include <mach/hardware.h> |
35 | #include <asm/gpio.h> | ||
36 | 35 | ||
37 | #include <asm/mach-types.h> | 36 | #include <asm/mach-types.h> |
38 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-omap1/board-h3-mmc.c b/arch/arm/mach-omap1/board-h3-mmc.c index 2098525e7cc5..f8242aa9b763 100644 --- a/arch/arm/mach-omap1/board-h3-mmc.c +++ b/arch/arm/mach-omap1/board-h3-mmc.c | |||
@@ -11,13 +11,12 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | #include <linux/gpio.h> | |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | 16 | ||
17 | #include <linux/i2c/tps65010.h> | 17 | #include <linux/i2c/tps65010.h> |
18 | 18 | ||
19 | #include <plat/mmc.h> | 19 | #include <plat/mmc.h> |
20 | #include <mach/gpio.h> | ||
21 | 20 | ||
22 | #include "board-h3.h" | 21 | #include "board-h3.h" |
23 | 22 | ||
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 31f34875ffad..fe1814c5e748 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * it under the terms of the GNU General Public License version 2 as | 13 | * it under the terms of the GNU General Public License version 2 as |
14 | * published by the Free Software Foundation. | 14 | * published by the Free Software Foundation. |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/major.h> | 19 | #include <linux/major.h> |
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/setup.h> | 34 | #include <asm/setup.h> |
35 | #include <asm/page.h> | 35 | #include <asm/page.h> |
36 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
37 | #include <asm/gpio.h> | ||
38 | 37 | ||
39 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
40 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 36e06ea7ec65..4af7bfa40e4a 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -23,7 +23,6 @@ | |||
23 | * 02110-1301, USA. | 23 | * 02110-1301, USA. |
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | |||
27 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
28 | #include <linux/init.h> | 27 | #include <linux/init.h> |
29 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 0b1ba462d388..e603e5eb32a8 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -15,7 +15,7 @@ | |||
15 | * it under the terms of the GNU General Public License version 2 as | 15 | * it under the terms of the GNU General Public License version 2 as |
16 | * published by the Free Software Foundation. | 16 | * published by the Free Software Foundation. |
17 | */ | 17 | */ |
18 | 18 | #include <linux/gpio.h> | |
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
@@ -34,7 +34,6 @@ | |||
34 | #include <plat/mux.h> | 34 | #include <plat/mux.h> |
35 | #include <plat/flash.h> | 35 | #include <plat/flash.h> |
36 | #include <plat/fpga.h> | 36 | #include <plat/fpga.h> |
37 | #include <mach/gpio.h> | ||
38 | #include <plat/tc.h> | 37 | #include <plat/tc.h> |
39 | #include <plat/usb.h> | 38 | #include <plat/usb.h> |
40 | #include <plat/keypad.h> | 39 | #include <plat/keypad.h> |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 5469ce247ffe..8420535fe51d 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/mutex.h> | 13 | #include <linux/mutex.h> |
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
28 | 28 | ||
29 | #include <mach/gpio.h> | ||
30 | #include <plat/mux.h> | 29 | #include <plat/mux.h> |
31 | #include <plat/usb.h> | 30 | #include <plat/usb.h> |
32 | #include <plat/board.h> | 31 | #include <plat/board.h> |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index b08a21380772..bf1ebe5b2442 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -25,7 +25,7 @@ | |||
25 | * with this program; if not, write to the Free Software Foundation, Inc., | 25 | * with this program; if not, write to the Free Software Foundation, Inc., |
26 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 26 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
27 | */ | 27 | */ |
28 | 28 | #include <linux/gpio.h> | |
29 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
@@ -42,7 +42,6 @@ | |||
42 | #include <linux/i2c/tps65010.h> | 42 | #include <linux/i2c/tps65010.h> |
43 | 43 | ||
44 | #include <mach/hardware.h> | 44 | #include <mach/hardware.h> |
45 | #include <asm/gpio.h> | ||
46 | 45 | ||
47 | #include <asm/mach-types.h> | 46 | #include <asm/mach-types.h> |
48 | #include <asm/mach/arch.h> | 47 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 459cb6bfed55..45596b5acf09 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -16,7 +16,7 @@ | |||
16 | * it under the terms of the GNU General Public License version 2 as | 16 | * it under the terms of the GNU General Public License version 2 as |
17 | * published by the Free Software Foundation. | 17 | * published by the Free Software Foundation. |
18 | */ | 18 | */ |
19 | 19 | #include <linux/gpio.h> | |
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/input.h> | 22 | #include <linux/input.h> |
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
35 | 35 | ||
36 | #include <mach/gpio.h> | ||
37 | #include <plat/flash.h> | 36 | #include <plat/flash.h> |
38 | #include <plat/mux.h> | 37 | #include <plat/mux.h> |
39 | #include <plat/usb.h> | 38 | #include <plat/usb.h> |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index b214f45f646c..f942221f6e71 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/delay.h> | 14 | #include <linux/delay.h> |
15 | #include <linux/gpio.h> | ||
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
@@ -30,7 +31,6 @@ | |||
30 | #include <asm/mach/map.h> | 31 | #include <asm/mach/map.h> |
31 | 32 | ||
32 | #include <plat/led.h> | 33 | #include <plat/led.h> |
33 | #include <mach/gpio.h> | ||
34 | #include <plat/flash.h> | 34 | #include <plat/flash.h> |
35 | #include <plat/mux.h> | 35 | #include <plat/mux.h> |
36 | #include <plat/usb.h> | 36 | #include <plat/usb.h> |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 9b0ea48d35fd..2b912d46ceec 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -15,6 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/gpio.h> | ||
18 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | 20 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
@@ -32,7 +33,6 @@ | |||
32 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
34 | 35 | ||
35 | #include <mach/gpio.h> | ||
36 | #include <plat/flash.h> | 36 | #include <plat/flash.h> |
37 | #include <plat/mux.h> | 37 | #include <plat/mux.h> |
38 | #include <plat/usb.h> | 38 | #include <plat/usb.h> |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 67acd4142639..7e2efe52cc35 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | 29 | ||
30 | #include <plat/tc.h> | 30 | #include <plat/tc.h> |
31 | #include <mach/gpio.h> | ||
32 | #include <plat/mux.h> | 31 | #include <plat/mux.h> |
33 | #include <plat/fpga.h> | 32 | #include <plat/fpga.h> |
34 | #include <plat/flash.h> | 33 | #include <plat/flash.h> |
diff --git a/arch/arm/mach-omap1/board-sx1-mmc.c b/arch/arm/mach-omap1/board-sx1-mmc.c index e8ddd86e3fda..b59f78850e69 100644 --- a/arch/arm/mach-omap1/board-sx1-mmc.c +++ b/arch/arm/mach-omap1/board-sx1-mmc.c | |||
@@ -12,11 +12,11 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/gpio.h> | ||
15 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
16 | 17 | ||
17 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
18 | #include <plat/mmc.h> | 19 | #include <plat/mmc.h> |
19 | #include <mach/gpio.h> | ||
20 | #include <plat/board-sx1.h> | 20 | #include <plat/board-sx1.h> |
21 | 21 | ||
22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 9c3b7c52d9cf..172a28f9a344 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -14,7 +14,7 @@ | |||
14 | * it under the terms of the GNU General Public License version 2 as | 14 | * it under the terms of the GNU General Public License version 2 as |
15 | * published by the Free Software Foundation. | 15 | * published by the Free Software Foundation. |
16 | */ | 16 | */ |
17 | 17 | #include <linux/gpio.h> | |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/input.h> | 20 | #include <linux/input.h> |
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
34 | 34 | ||
35 | #include <mach/gpio.h> | ||
36 | #include <plat/flash.h> | 35 | #include <plat/flash.h> |
37 | #include <plat/mux.h> | 36 | #include <plat/mux.h> |
38 | #include <plat/dma.h> | 37 | #include <plat/dma.h> |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 036edc0ee9b6..236b7ded0cf8 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -13,6 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/gpio.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
18 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
@@ -33,7 +34,6 @@ | |||
33 | 34 | ||
34 | #include <plat/board-voiceblue.h> | 35 | #include <plat/board-voiceblue.h> |
35 | #include <plat/common.h> | 36 | #include <plat/common.h> |
36 | #include <mach/gpio.h> | ||
37 | #include <plat/flash.h> | 37 | #include <plat/flash.h> |
38 | #include <plat/mux.h> | 38 | #include <plat/mux.h> |
39 | #include <plat/tc.h> | 39 | #include <plat/tc.h> |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 36f26c3fa25e..7c50ecf68123 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/dma-mapping.h> | 12 | #include <linux/dma-mapping.h> |
13 | #include <linux/gpio.h> | ||
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 16 | #include <linux/init.h> |
@@ -24,7 +25,6 @@ | |||
24 | #include <plat/tc.h> | 25 | #include <plat/tc.h> |
25 | #include <plat/board.h> | 26 | #include <plat/board.h> |
26 | #include <plat/mux.h> | 27 | #include <plat/mux.h> |
27 | #include <mach/gpio.h> | ||
28 | #include <plat/mmc.h> | 28 | #include <plat/mmc.h> |
29 | #include <plat/omap7xx.h> | 29 | #include <plat/omap7xx.h> |
30 | #include <plat/mcbsp.h> | 30 | #include <plat/mcbsp.h> |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index cddbf8b089ce..0a17a1a7e00d 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
20 | #include <linux/gpio.h> | ||
20 | #include <linux/init.h> | 21 | #include <linux/init.h> |
21 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
22 | #include <linux/device.h> | 23 | #include <linux/device.h> |
@@ -28,7 +29,6 @@ | |||
28 | #include <asm/mach/irq.h> | 29 | #include <asm/mach/irq.h> |
29 | 30 | ||
30 | #include <plat/fpga.h> | 31 | #include <plat/fpga.h> |
31 | #include <mach/gpio.h> | ||
32 | 32 | ||
33 | static void fpga_mask_irq(struct irq_data *d) | 33 | static void fpga_mask_irq(struct irq_data *d) |
34 | { | 34 | { |
diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c index e2b9c901ab67..e5b104b7fce6 100644 --- a/arch/arm/mach-omap1/irq.c +++ b/arch/arm/mach-omap1/irq.c | |||
@@ -35,7 +35,7 @@ | |||
35 | * with this program; if not, write to the Free Software Foundation, Inc., | 35 | * with this program; if not, write to the Free Software Foundation, Inc., |
36 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 36 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
37 | */ | 37 | */ |
38 | 38 | #include <linux/gpio.h> | |
39 | #include <linux/init.h> | 39 | #include <linux/init.h> |
40 | #include <linux/module.h> | 40 | #include <linux/module.h> |
41 | #include <linux/sched.h> | 41 | #include <linux/sched.h> |
@@ -45,7 +45,6 @@ | |||
45 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
46 | #include <asm/irq.h> | 46 | #include <asm/irq.h> |
47 | #include <asm/mach/irq.h> | 47 | #include <asm/mach/irq.h> |
48 | #include <mach/gpio.h> | ||
49 | #include <plat/cpu.h> | 48 | #include <plat/cpu.h> |
50 | 49 | ||
51 | #define IRQ_BANK(irq) ((irq) >> 5) | 50 | #define IRQ_BANK(irq) ((irq) >> 5) |
diff --git a/arch/arm/mach-omap1/leds-h2p2-debug.c b/arch/arm/mach-omap1/leds-h2p2-debug.c index b4f9be52e1e8..4b818eb9f911 100644 --- a/arch/arm/mach-omap1/leds-h2p2-debug.c +++ b/arch/arm/mach-omap1/leds-h2p2-debug.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * The "surfer" expansion board and H2 sample board also have two-color | 9 | * The "surfer" expansion board and H2 sample board also have two-color |
10 | * green+red LEDs (in parallel), used here for timer and idle indicators. | 10 | * green+red LEDs (in parallel), used here for timer and idle indicators. |
11 | */ | 11 | */ |
12 | #include <linux/gpio.h> | ||
12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
13 | #include <linux/kernel_stat.h> | 14 | #include <linux/kernel_stat.h> |
14 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
@@ -20,7 +21,6 @@ | |||
20 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
21 | 22 | ||
22 | #include <plat/fpga.h> | 23 | #include <plat/fpga.h> |
23 | #include <mach/gpio.h> | ||
24 | 24 | ||
25 | #include "leds.h" | 25 | #include "leds.h" |
26 | 26 | ||
diff --git a/arch/arm/mach-omap1/leds-osk.c b/arch/arm/mach-omap1/leds-osk.c index 499d7ad8697d..da09f4364979 100644 --- a/arch/arm/mach-omap1/leds-osk.c +++ b/arch/arm/mach-omap1/leds-osk.c | |||
@@ -3,14 +3,13 @@ | |||
3 | * | 3 | * |
4 | * LED driver for OSK with optional Mistral QVGA board | 4 | * LED driver for OSK with optional Mistral QVGA board |
5 | */ | 5 | */ |
6 | #include <linux/gpio.h> | ||
6 | #include <linux/init.h> | 7 | #include <linux/init.h> |
7 | 8 | ||
8 | #include <mach/hardware.h> | 9 | #include <mach/hardware.h> |
9 | #include <asm/leds.h> | 10 | #include <asm/leds.h> |
10 | #include <asm/system.h> | 11 | #include <asm/system.h> |
11 | 12 | ||
12 | #include <mach/gpio.h> | ||
13 | |||
14 | #include "leds.h" | 13 | #include "leds.h" |
15 | 14 | ||
16 | 15 | ||
diff --git a/arch/arm/mach-omap1/leds.c b/arch/arm/mach-omap1/leds.c index 22eb11dde9e7..ae6dd93b8ddc 100644 --- a/arch/arm/mach-omap1/leds.c +++ b/arch/arm/mach-omap1/leds.c | |||
@@ -3,13 +3,13 @@ | |||
3 | * | 3 | * |
4 | * OMAP LEDs dispatcher | 4 | * OMAP LEDs dispatcher |
5 | */ | 5 | */ |
6 | #include <linux/gpio.h> | ||
6 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
7 | #include <linux/init.h> | 8 | #include <linux/init.h> |
8 | 9 | ||
9 | #include <asm/leds.h> | 10 | #include <asm/leds.h> |
10 | #include <asm/mach-types.h> | 11 | #include <asm/mach-types.h> |
11 | 12 | ||
12 | #include <mach/gpio.h> | ||
13 | #include <plat/mux.h> | 13 | #include <plat/mux.h> |
14 | 14 | ||
15 | #include "leds.h" | 15 | #include "leds.h" |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index 550ca9d9991d..93ae8f29727e 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <plat/board.h> | 25 | #include <plat/board.h> |
26 | #include <plat/mux.h> | 26 | #include <plat/mux.h> |
27 | #include <mach/gpio.h> | ||
28 | #include <plat/fpga.h> | 27 | #include <plat/fpga.h> |
29 | 28 | ||
30 | #include "pm.h" | 29 | #include "pm.h" |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 54db41a84a9b..bb4af05c7f0a 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -15,7 +15,7 @@ | |||
15 | * it under the terms of the GNU General Public License version 2 as | 15 | * it under the terms of the GNU General Public License version 2 as |
16 | * published by the Free Software Foundation. | 16 | * published by the Free Software Foundation. |
17 | */ | 17 | */ |
18 | 18 | #include <linux/gpio.h> | |
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/device.h> | 21 | #include <linux/device.h> |
@@ -25,7 +25,6 @@ | |||
25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | 27 | ||
28 | #include <mach/gpio.h> | ||
29 | #include <plat/usb.h> | 28 | #include <plat/usb.h> |
30 | #include <plat/board.h> | 29 | #include <plat/board.h> |
31 | #include <plat/common.h> | 30 | #include <plat/common.h> |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 45de2b319ec9..95319e761802 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | 33 | ||
34 | #include <mach/gpio.h> | ||
35 | #include <plat/usb.h> | 34 | #include <plat/usb.h> |
36 | #include <plat/board.h> | 35 | #include <plat/board.h> |
37 | #include <plat/common.h> | 36 | #include <plat/common.h> |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 218764c9377e..ddff45c1688c 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -10,7 +10,7 @@ | |||
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | #include <linux/gpio.h> | |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
35 | 35 | ||
36 | #include <plat/mcspi.h> | 36 | #include <plat/mcspi.h> |
37 | #include <mach/gpio.h> | ||
38 | #include <plat/board.h> | 37 | #include <plat/board.h> |
39 | #include <plat/common.h> | 38 | #include <plat/common.h> |
40 | #include <plat/gpmc.h> | 39 | #include <plat/gpmc.h> |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 1077ad663f93..5391079c8689 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * the Free Software Foundation; either version 2 of the License, or | 8 | * the Free Software Foundation; either version 2 of the License, or |
9 | * (at your option) any later version. | 9 | * (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
@@ -26,7 +26,6 @@ | |||
26 | #include <plat/tc.h> | 26 | #include <plat/tc.h> |
27 | #include <plat/board.h> | 27 | #include <plat/board.h> |
28 | #include <plat/mcbsp.h> | 28 | #include <plat/mcbsp.h> |
29 | #include <mach/gpio.h> | ||
30 | #include <plat/mmc.h> | 29 | #include <plat/mmc.h> |
31 | #include <plat/dma.h> | 30 | #include <plat/dma.h> |
32 | #include <plat/omap_hwmod.h> | 31 | #include <plat/omap_hwmod.h> |
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c index a3e3e9e5e328..6d771cbf06a4 100644 --- a/arch/arm/mach-orion5x/db88f5281-setup.c +++ b/arch/arm/mach-orion5x/db88f5281-setup.c | |||
@@ -9,7 +9,7 @@ | |||
9 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
10 | * warranty of any kind, whether express or implied. | 10 | * warranty of any kind, whether express or implied. |
11 | */ | 11 | */ |
12 | 12 | #include <linux/gpio.h> | |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/mv643xx_eth.h> | 21 | #include <linux/mv643xx_eth.h> |
22 | #include <linux/i2c.h> | 22 | #include <linux/i2c.h> |
23 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
24 | #include <asm/gpio.h> | ||
25 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/pci.h> | 25 | #include <asm/mach/pci.h> |
27 | #include <mach/orion5x.h> | 26 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index c105556a0ee1..6fb4908e998b 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * License, or (at your option) any later version. | 13 | * License, or (at your option) any later version. |
14 | * | 14 | * |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/phy.h> | 30 | #include <linux/phy.h> |
31 | #include <linux/marvell_phy.h> | 31 | #include <linux/marvell_phy.h> |
32 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
33 | #include <asm/gpio.h> | ||
34 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
35 | #include <asm/mach/pci.h> | 34 | #include <asm/mach/pci.h> |
36 | #include <mach/orion5x.h> | 35 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index 43cf8bc9767b..b1b45fff776e 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c | |||
@@ -9,12 +9,11 @@ | |||
9 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
10 | * warranty of any kind, whether express or implied. | 10 | * warranty of any kind, whether express or implied. |
11 | */ | 11 | */ |
12 | 12 | #include <linux/gpio.h> | |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <asm/gpio.h> | ||
18 | #include <mach/bridge-regs.h> | 17 | #include <mach/bridge-regs.h> |
19 | #include <plat/irq.h> | 18 | #include <plat/irq.h> |
20 | #include "common.h" | 19 | #include "common.h" |
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c index 00381249d766..f88f54bb7562 100644 --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c +++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/serial_reg.h> | 21 | #include <linux/serial_reg.h> |
22 | #include <linux/ata_platform.h> | 22 | #include <linux/ata_platform.h> |
23 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
24 | #include <asm/gpio.h> | ||
25 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/pci.h> | 25 | #include <asm/mach/pci.h> |
27 | #include <mach/orion5x.h> | 26 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c index 63ff10c3c464..525eb1286859 100644 --- a/arch/arm/mach-orion5x/mv2120-setup.c +++ b/arch/arm/mach-orion5x/mv2120-setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * published by the Free Software Foundation; either version 2 of the | 7 | * published by the Free Software Foundation; either version 2 of the |
8 | * License, or (at your option) any later version. | 8 | * License, or (at your option) any later version. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
21 | #include <linux/ata_platform.h> | 21 | #include <linux/ata_platform.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/gpio.h> | ||
24 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
25 | #include <mach/orion5x.h> | 24 | #include <mach/orion5x.h> |
26 | #include "common.h" | 25 | #include "common.h" |
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c index 291d22bf44c9..50aae6f571b8 100644 --- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c +++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/ethtool.h> | 18 | #include <linux/ethtool.h> |
19 | #include <net/dsa.h> | 19 | #include <net/dsa.h> |
20 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
21 | #include <asm/gpio.h> | ||
22 | #include <asm/leds.h> | 21 | #include <asm/leds.h> |
23 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/pci.h> | 23 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c index 3f02362e1632..35f106ac593a 100644 --- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c +++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/i2c.h> | 19 | #include <linux/i2c.h> |
20 | #include <net/dsa.h> | 20 | #include <net/dsa.h> |
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <asm/gpio.h> | ||
23 | #include <asm/leds.h> | 22 | #include <asm/leds.h> |
24 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c index 27fd38e658bd..9bb2b8bafbfd 100644 --- a/arch/arm/mach-orion5x/rd88f5182-setup.c +++ b/arch/arm/mach-orion5x/rd88f5182-setup.c | |||
@@ -9,7 +9,7 @@ | |||
9 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
10 | * warranty of any kind, whether express or implied. | 10 | * warranty of any kind, whether express or implied. |
11 | */ | 11 | */ |
12 | 12 | #include <linux/gpio.h> | |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/ata_platform.h> | 20 | #include <linux/ata_platform.h> |
21 | #include <linux/i2c.h> | 21 | #include <linux/i2c.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/gpio.h> | ||
24 | #include <asm/leds.h> | 23 | #include <asm/leds.h> |
25 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/pci.h> | 25 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c index ad2eba9286ad..1d00df9ad464 100644 --- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c +++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/ethtool.h> | 21 | #include <linux/ethtool.h> |
22 | #include <net/dsa.h> | 22 | #include <net/dsa.h> |
23 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
24 | #include <asm/gpio.h> | ||
25 | #include <asm/leds.h> | 24 | #include <asm/leds.h> |
26 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/pci.h> | 26 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c index a34e4fac72b0..c9dd31d34866 100644 --- a/arch/arm/mach-orion5x/terastation_pro2-setup.c +++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
21 | #include <linux/serial_reg.h> | 21 | #include <linux/serial_reg.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/gpio.h> | ||
24 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
26 | #include <mach/orion5x.h> | 25 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c index c9831614e355..764307b8abfc 100644 --- a/arch/arm/mach-orion5x/ts209-setup.c +++ b/arch/arm/mach-orion5x/ts209-setup.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/serial_reg.h> | 23 | #include <linux/serial_reg.h> |
24 | #include <linux/ata_platform.h> | 24 | #include <linux/ata_platform.h> |
25 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
26 | #include <asm/gpio.h> | ||
27 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/pci.h> | 27 | #include <asm/mach/pci.h> |
29 | #include <mach/orion5x.h> | 28 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c index cc33b2222bad..0572dd1c8aaa 100644 --- a/arch/arm/mach-orion5x/ts409-setup.c +++ b/arch/arm/mach-orion5x/ts409-setup.c | |||
@@ -11,7 +11,7 @@ | |||
11 | * as published by the Free Software Foundation; either version | 11 | * as published by the Free Software Foundation; either version |
12 | * 2 of the License, or (at your option) any later version. | 12 | * 2 of the License, or (at your option) any later version. |
13 | */ | 13 | */ |
14 | 14 | #include <linux/gpio.h> | |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
26 | #include <linux/serial_reg.h> | 26 | #include <linux/serial_reg.h> |
27 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
28 | #include <asm/gpio.h> | ||
29 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/pci.h> | 29 | #include <asm/mach/pci.h> |
31 | #include <mach/orion5x.h> | 30 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c index 2653595f901c..cdad50bd4891 100644 --- a/arch/arm/mach-orion5x/wnr854t-setup.c +++ b/arch/arm/mach-orion5x/wnr854t-setup.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * License version 2. This program is licensed "as is" without any | 5 | * License version 2. This program is licensed "as is" without any |
6 | * warranty of any kind, whether express or implied. | 6 | * warranty of any kind, whether express or implied. |
7 | */ | 7 | */ |
8 | 8 | #include <linux/gpio.h> | |
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/ethtool.h> | 17 | #include <linux/ethtool.h> |
18 | #include <net/dsa.h> | 18 | #include <net/dsa.h> |
19 | #include <asm/mach-types.h> | 19 | #include <asm/mach-types.h> |
20 | #include <asm/gpio.h> | ||
21 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
22 | #include <asm/mach/pci.h> | 21 | #include <asm/mach/pci.h> |
23 | #include <mach/orion5x.h> | 22 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c index 251ef1543e53..8f10ffd77ec3 100644 --- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c +++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * License version 2. This program is licensed "as is" without any | 5 | * License version 2. This program is licensed "as is" without any |
6 | * warranty of any kind, whether express or implied. | 6 | * warranty of any kind, whether express or implied. |
7 | */ | 7 | */ |
8 | 8 | #include <linux/gpio.h> | |
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/input.h> | 20 | #include <linux/input.h> |
21 | #include <net/dsa.h> | 21 | #include <net/dsa.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/gpio.h> | ||
24 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
26 | #include <mach/orion5x.h> | 25 | #include <mach/orion5x.h> |
diff --git a/arch/arm/mach-pnx4008/gpio.c b/arch/arm/mach-pnx4008/gpio.c index f219914f5b29..d3e71d3847b4 100644 --- a/arch/arm/mach-pnx4008/gpio.c +++ b/arch/arm/mach-pnx4008/gpio.c | |||
@@ -13,14 +13,13 @@ | |||
13 | * is licensed "as is" without any warranty of any kind, whether express | 13 | * is licensed "as is" without any warranty of any kind, whether express |
14 | * or implied. | 14 | * or implied. |
15 | */ | 15 | */ |
16 | |||
17 | #include <linux/types.h> | 16 | #include <linux/types.h> |
18 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
19 | #include <linux/module.h> | 18 | #include <linux/module.h> |
20 | #include <linux/io.h> | 19 | #include <linux/io.h> |
21 | #include <mach/hardware.h> | 20 | #include <mach/hardware.h> |
22 | #include <mach/platform.h> | 21 | #include <mach/platform.h> |
23 | #include <mach/gpio.h> | 22 | #include <mach/gpio-pnx4008.h> |
24 | 23 | ||
25 | /* register definitions */ | 24 | /* register definitions */ |
26 | #define PIO_VA_BASE IO_ADDRESS(PNX4008_PIO_BASE) | 25 | #define PIO_VA_BASE IO_ADDRESS(PNX4008_PIO_BASE) |
diff --git a/arch/arm/mach-pnx4008/include/mach/gpio.h b/arch/arm/mach-pnx4008/include/mach/gpio-pnx4008.h index 9591467eb9ec..41027dd7cf74 100644 --- a/arch/arm/mach-pnx4008/include/mach/gpio.h +++ b/arch/arm/mach-pnx4008/include/mach/gpio-pnx4008.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-pnx4008/include/mach/gpio.h | 2 | * arch/arm/mach-pnx4008/include/mach/gpio-pnx4008.h |
3 | * | 3 | * |
4 | * PNX4008 GPIO driver - header file | 4 | * PNX4008 GPIO driver - header file |
5 | * | 5 | * |
diff --git a/arch/arm/mach-pnx4008/serial.c b/arch/arm/mach-pnx4008/serial.c index f40961e51914..374c138ac1ac 100644 --- a/arch/arm/mach-pnx4008/serial.c +++ b/arch/arm/mach-pnx4008/serial.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | |||
13 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
14 | #include <linux/types.h> | 13 | #include <linux/types.h> |
15 | #include <linux/io.h> | 14 | #include <linux/io.h> |
@@ -19,8 +18,8 @@ | |||
19 | 18 | ||
20 | #include <linux/serial_core.h> | 19 | #include <linux/serial_core.h> |
21 | #include <linux/serial_reg.h> | 20 | #include <linux/serial_reg.h> |
22 | #include <mach/gpio.h> | ||
23 | 21 | ||
22 | #include <mach/gpio-pnx4008.h> | ||
24 | #include <mach/clock.h> | 23 | #include <mach/clock.h> |
25 | 24 | ||
26 | #define UART_3 0 | 25 | #define UART_3 0 |
diff --git a/arch/arm/mach-pxa/cm-x255.c b/arch/arm/mach-pxa/cm-x255.c index 93f59f877fc6..be751470d37b 100644 --- a/arch/arm/mach-pxa/cm-x255.c +++ b/arch/arm/mach-pxa/cm-x255.c | |||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/gpio.h> | ||
15 | #include <linux/mtd/partitions.h> | 14 | #include <linux/mtd/partitions.h> |
16 | #include <linux/mtd/physmap.h> | 15 | #include <linux/mtd/physmap.h> |
17 | #include <linux/mtd/nand-gpio.h> | 16 | #include <linux/mtd/nand-gpio.h> |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index f5d91efc2965..5432ecb15def 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * initialization stuff for PXA machines which can be overridden later if | 16 | * initialization stuff for PXA machines which can be overridden later if |
17 | * need be. | 17 | * need be. |
18 | */ | 18 | */ |
19 | #include <linux/gpio.h> | ||
19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
@@ -26,7 +27,6 @@ | |||
26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
27 | 28 | ||
28 | #include <mach/reset.h> | 29 | #include <mach/reset.h> |
29 | #include <mach/gpio.h> | ||
30 | #include <mach/smemc.h> | 30 | #include <mach/smemc.h> |
31 | #include <mach/pxa3xx-regs.h> | 31 | #include <mach/pxa3xx-regs.h> |
32 | 32 | ||
diff --git a/arch/arm/mach-pxa/include/mach/gpio-pxa.h b/arch/arm/mach-pxa/include/mach/gpio-pxa.h new file mode 100644 index 000000000000..41b4c93a96c2 --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/gpio-pxa.h | |||
@@ -0,0 +1,133 @@ | |||
1 | /* | ||
2 | * Written by Philipp Zabel <philipp.zabel@gmail.com> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | * | ||
18 | */ | ||
19 | #ifndef __MACH_PXA_GPIO_PXA_H | ||
20 | #define __MACH_PXA_GPIO_PXA_H | ||
21 | |||
22 | #include <mach/irqs.h> | ||
23 | #include <mach/hardware.h> | ||
24 | |||
25 | #define GPIO_REGS_VIRT io_p2v(0x40E00000) | ||
26 | |||
27 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | ||
28 | #define GPIO_REG(x) (*(volatile u32 *)(GPIO_REGS_VIRT + (x))) | ||
29 | |||
30 | /* GPIO Pin Level Registers */ | ||
31 | #define GPLR0 GPIO_REG(BANK_OFF(0) + 0x00) | ||
32 | #define GPLR1 GPIO_REG(BANK_OFF(1) + 0x00) | ||
33 | #define GPLR2 GPIO_REG(BANK_OFF(2) + 0x00) | ||
34 | #define GPLR3 GPIO_REG(BANK_OFF(3) + 0x00) | ||
35 | |||
36 | /* GPIO Pin Direction Registers */ | ||
37 | #define GPDR0 GPIO_REG(BANK_OFF(0) + 0x0c) | ||
38 | #define GPDR1 GPIO_REG(BANK_OFF(1) + 0x0c) | ||
39 | #define GPDR2 GPIO_REG(BANK_OFF(2) + 0x0c) | ||
40 | #define GPDR3 GPIO_REG(BANK_OFF(3) + 0x0c) | ||
41 | |||
42 | /* GPIO Pin Output Set Registers */ | ||
43 | #define GPSR0 GPIO_REG(BANK_OFF(0) + 0x18) | ||
44 | #define GPSR1 GPIO_REG(BANK_OFF(1) + 0x18) | ||
45 | #define GPSR2 GPIO_REG(BANK_OFF(2) + 0x18) | ||
46 | #define GPSR3 GPIO_REG(BANK_OFF(3) + 0x18) | ||
47 | |||
48 | /* GPIO Pin Output Clear Registers */ | ||
49 | #define GPCR0 GPIO_REG(BANK_OFF(0) + 0x24) | ||
50 | #define GPCR1 GPIO_REG(BANK_OFF(1) + 0x24) | ||
51 | #define GPCR2 GPIO_REG(BANK_OFF(2) + 0x24) | ||
52 | #define GPCR3 GPIO_REG(BANK_OFF(3) + 0x24) | ||
53 | |||
54 | /* GPIO Rising Edge Detect Registers */ | ||
55 | #define GRER0 GPIO_REG(BANK_OFF(0) + 0x30) | ||
56 | #define GRER1 GPIO_REG(BANK_OFF(1) + 0x30) | ||
57 | #define GRER2 GPIO_REG(BANK_OFF(2) + 0x30) | ||
58 | #define GRER3 GPIO_REG(BANK_OFF(3) + 0x30) | ||
59 | |||
60 | /* GPIO Falling Edge Detect Registers */ | ||
61 | #define GFER0 GPIO_REG(BANK_OFF(0) + 0x3c) | ||
62 | #define GFER1 GPIO_REG(BANK_OFF(1) + 0x3c) | ||
63 | #define GFER2 GPIO_REG(BANK_OFF(2) + 0x3c) | ||
64 | #define GFER3 GPIO_REG(BANK_OFF(3) + 0x3c) | ||
65 | |||
66 | /* GPIO Edge Detect Status Registers */ | ||
67 | #define GEDR0 GPIO_REG(BANK_OFF(0) + 0x48) | ||
68 | #define GEDR1 GPIO_REG(BANK_OFF(1) + 0x48) | ||
69 | #define GEDR2 GPIO_REG(BANK_OFF(2) + 0x48) | ||
70 | #define GEDR3 GPIO_REG(BANK_OFF(3) + 0x48) | ||
71 | |||
72 | /* GPIO Alternate Function Select Registers */ | ||
73 | #define GAFR0_L GPIO_REG(0x0054) | ||
74 | #define GAFR0_U GPIO_REG(0x0058) | ||
75 | #define GAFR1_L GPIO_REG(0x005C) | ||
76 | #define GAFR1_U GPIO_REG(0x0060) | ||
77 | #define GAFR2_L GPIO_REG(0x0064) | ||
78 | #define GAFR2_U GPIO_REG(0x0068) | ||
79 | #define GAFR3_L GPIO_REG(0x006C) | ||
80 | #define GAFR3_U GPIO_REG(0x0070) | ||
81 | |||
82 | /* More handy macros. The argument is a literal GPIO number. */ | ||
83 | |||
84 | #define GPIO_bit(x) (1 << ((x) & 0x1f)) | ||
85 | |||
86 | #define GPLR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x00) | ||
87 | #define GPDR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x0c) | ||
88 | #define GPSR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x18) | ||
89 | #define GPCR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x24) | ||
90 | #define GRER(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x30) | ||
91 | #define GFER(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x3c) | ||
92 | #define GEDR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x48) | ||
93 | #define GAFR(x) GPIO_REG(0x54 + (((x) & 0x70) >> 2)) | ||
94 | |||
95 | |||
96 | #define NR_BUILTIN_GPIO PXA_GPIO_IRQ_NUM | ||
97 | |||
98 | #define gpio_to_bank(gpio) ((gpio) >> 5) | ||
99 | |||
100 | #ifdef CONFIG_CPU_PXA26x | ||
101 | /* GPIO86/87/88/89 on PXA26x have their direction bits in GPDR2 inverted, | ||
102 | * as well as their Alternate Function value being '1' for GPIO in GAFRx. | ||
103 | */ | ||
104 | static inline int __gpio_is_inverted(unsigned gpio) | ||
105 | { | ||
106 | return cpu_is_pxa25x() && gpio > 85; | ||
107 | } | ||
108 | #else | ||
109 | static inline int __gpio_is_inverted(unsigned gpio) { return 0; } | ||
110 | #endif | ||
111 | |||
112 | /* | ||
113 | * On PXA25x and PXA27x, GAFRx and GPDRx together decide the alternate | ||
114 | * function of a GPIO, and GPDRx cannot be altered once configured. It | ||
115 | * is attributed as "occupied" here (I know this terminology isn't | ||
116 | * accurate, you are welcome to propose a better one :-) | ||
117 | */ | ||
118 | static inline int __gpio_is_occupied(unsigned gpio) | ||
119 | { | ||
120 | if (cpu_is_pxa27x() || cpu_is_pxa25x()) { | ||
121 | int af = (GAFR(gpio) >> ((gpio & 0xf) * 2)) & 0x3; | ||
122 | int dir = GPDR(gpio) & GPIO_bit(gpio); | ||
123 | |||
124 | if (__gpio_is_inverted(gpio)) | ||
125 | return af != 1 || dir == 0; | ||
126 | else | ||
127 | return af != 0 || dir != 0; | ||
128 | } else | ||
129 | return GPDR(gpio) & GPIO_bit(gpio); | ||
130 | } | ||
131 | |||
132 | #include <plat/gpio-pxa.h> | ||
133 | #endif /* __MACH_PXA_GPIO_PXA_H */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/gpio.h b/arch/arm/mach-pxa/include/mach/gpio.h index c4639502efca..004cade7bb13 100644 --- a/arch/arm/mach-pxa/include/mach/gpio.h +++ b/arch/arm/mach-pxa/include/mach/gpio.h | |||
@@ -24,84 +24,10 @@ | |||
24 | #ifndef __ASM_ARCH_PXA_GPIO_H | 24 | #ifndef __ASM_ARCH_PXA_GPIO_H |
25 | #define __ASM_ARCH_PXA_GPIO_H | 25 | #define __ASM_ARCH_PXA_GPIO_H |
26 | 26 | ||
27 | #include <mach/irqs.h> | ||
28 | #include <mach/hardware.h> | ||
29 | #include <asm-generic/gpio.h> | 27 | #include <asm-generic/gpio.h> |
28 | /* The defines for the driver are needed for the accelerated accessors */ | ||
29 | #include "gpio-pxa.h" | ||
30 | 30 | ||
31 | #define GPIO_REGS_VIRT io_p2v(0x40E00000) | ||
32 | |||
33 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | ||
34 | #define GPIO_REG(x) (*(volatile u32 *)(GPIO_REGS_VIRT + (x))) | ||
35 | |||
36 | /* GPIO Pin Level Registers */ | ||
37 | #define GPLR0 GPIO_REG(BANK_OFF(0) + 0x00) | ||
38 | #define GPLR1 GPIO_REG(BANK_OFF(1) + 0x00) | ||
39 | #define GPLR2 GPIO_REG(BANK_OFF(2) + 0x00) | ||
40 | #define GPLR3 GPIO_REG(BANK_OFF(3) + 0x00) | ||
41 | |||
42 | /* GPIO Pin Direction Registers */ | ||
43 | #define GPDR0 GPIO_REG(BANK_OFF(0) + 0x0c) | ||
44 | #define GPDR1 GPIO_REG(BANK_OFF(1) + 0x0c) | ||
45 | #define GPDR2 GPIO_REG(BANK_OFF(2) + 0x0c) | ||
46 | #define GPDR3 GPIO_REG(BANK_OFF(3) + 0x0c) | ||
47 | |||
48 | /* GPIO Pin Output Set Registers */ | ||
49 | #define GPSR0 GPIO_REG(BANK_OFF(0) + 0x18) | ||
50 | #define GPSR1 GPIO_REG(BANK_OFF(1) + 0x18) | ||
51 | #define GPSR2 GPIO_REG(BANK_OFF(2) + 0x18) | ||
52 | #define GPSR3 GPIO_REG(BANK_OFF(3) + 0x18) | ||
53 | |||
54 | /* GPIO Pin Output Clear Registers */ | ||
55 | #define GPCR0 GPIO_REG(BANK_OFF(0) + 0x24) | ||
56 | #define GPCR1 GPIO_REG(BANK_OFF(1) + 0x24) | ||
57 | #define GPCR2 GPIO_REG(BANK_OFF(2) + 0x24) | ||
58 | #define GPCR3 GPIO_REG(BANK_OFF(3) + 0x24) | ||
59 | |||
60 | /* GPIO Rising Edge Detect Registers */ | ||
61 | #define GRER0 GPIO_REG(BANK_OFF(0) + 0x30) | ||
62 | #define GRER1 GPIO_REG(BANK_OFF(1) + 0x30) | ||
63 | #define GRER2 GPIO_REG(BANK_OFF(2) + 0x30) | ||
64 | #define GRER3 GPIO_REG(BANK_OFF(3) + 0x30) | ||
65 | |||
66 | /* GPIO Falling Edge Detect Registers */ | ||
67 | #define GFER0 GPIO_REG(BANK_OFF(0) + 0x3c) | ||
68 | #define GFER1 GPIO_REG(BANK_OFF(1) + 0x3c) | ||
69 | #define GFER2 GPIO_REG(BANK_OFF(2) + 0x3c) | ||
70 | #define GFER3 GPIO_REG(BANK_OFF(3) + 0x3c) | ||
71 | |||
72 | /* GPIO Edge Detect Status Registers */ | ||
73 | #define GEDR0 GPIO_REG(BANK_OFF(0) + 0x48) | ||
74 | #define GEDR1 GPIO_REG(BANK_OFF(1) + 0x48) | ||
75 | #define GEDR2 GPIO_REG(BANK_OFF(2) + 0x48) | ||
76 | #define GEDR3 GPIO_REG(BANK_OFF(3) + 0x48) | ||
77 | |||
78 | /* GPIO Alternate Function Select Registers */ | ||
79 | #define GAFR0_L GPIO_REG(0x0054) | ||
80 | #define GAFR0_U GPIO_REG(0x0058) | ||
81 | #define GAFR1_L GPIO_REG(0x005C) | ||
82 | #define GAFR1_U GPIO_REG(0x0060) | ||
83 | #define GAFR2_L GPIO_REG(0x0064) | ||
84 | #define GAFR2_U GPIO_REG(0x0068) | ||
85 | #define GAFR3_L GPIO_REG(0x006C) | ||
86 | #define GAFR3_U GPIO_REG(0x0070) | ||
87 | |||
88 | /* More handy macros. The argument is a literal GPIO number. */ | ||
89 | |||
90 | #define GPIO_bit(x) (1 << ((x) & 0x1f)) | ||
91 | |||
92 | #define GPLR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x00) | ||
93 | #define GPDR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x0c) | ||
94 | #define GPSR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x18) | ||
95 | #define GPCR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x24) | ||
96 | #define GRER(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x30) | ||
97 | #define GFER(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x3c) | ||
98 | #define GEDR(x) GPIO_REG(BANK_OFF((x) >> 5) + 0x48) | ||
99 | #define GAFR(x) GPIO_REG(0x54 + (((x) & 0x70) >> 2)) | ||
100 | |||
101 | |||
102 | #define NR_BUILTIN_GPIO PXA_GPIO_IRQ_NUM | ||
103 | |||
104 | #define gpio_to_bank(gpio) ((gpio) >> 5) | ||
105 | #define gpio_to_irq(gpio) IRQ_GPIO(gpio) | 31 | #define gpio_to_irq(gpio) IRQ_GPIO(gpio) |
106 | 32 | ||
107 | static inline int irq_to_gpio(unsigned int irq) | 33 | static inline int irq_to_gpio(unsigned int irq) |
@@ -118,37 +44,5 @@ static inline int irq_to_gpio(unsigned int irq) | |||
118 | return -1; | 44 | return -1; |
119 | } | 45 | } |
120 | 46 | ||
121 | #ifdef CONFIG_CPU_PXA26x | ||
122 | /* GPIO86/87/88/89 on PXA26x have their direction bits in GPDR2 inverted, | ||
123 | * as well as their Alternate Function value being '1' for GPIO in GAFRx. | ||
124 | */ | ||
125 | static inline int __gpio_is_inverted(unsigned gpio) | ||
126 | { | ||
127 | return cpu_is_pxa25x() && gpio > 85; | ||
128 | } | ||
129 | #else | ||
130 | static inline int __gpio_is_inverted(unsigned gpio) { return 0; } | ||
131 | #endif | ||
132 | |||
133 | /* | ||
134 | * On PXA25x and PXA27x, GAFRx and GPDRx together decide the alternate | ||
135 | * function of a GPIO, and GPDRx cannot be altered once configured. It | ||
136 | * is attributed as "occupied" here (I know this terminology isn't | ||
137 | * accurate, you are welcome to propose a better one :-) | ||
138 | */ | ||
139 | static inline int __gpio_is_occupied(unsigned gpio) | ||
140 | { | ||
141 | if (cpu_is_pxa27x() || cpu_is_pxa25x()) { | ||
142 | int af = (GAFR(gpio) >> ((gpio & 0xf) * 2)) & 0x3; | ||
143 | int dir = GPDR(gpio) & GPIO_bit(gpio); | ||
144 | |||
145 | if (__gpio_is_inverted(gpio)) | ||
146 | return af != 1 || dir == 0; | ||
147 | else | ||
148 | return af != 0 || dir != 0; | ||
149 | } else | ||
150 | return GPDR(gpio) & GPIO_bit(gpio); | ||
151 | } | ||
152 | |||
153 | #include <plat/gpio.h> | 47 | #include <plat/gpio.h> |
154 | #endif | 48 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/littleton.h b/arch/arm/mach-pxa/include/mach/littleton.h index 2a5726c15e0e..b6238cbd8aea 100644 --- a/arch/arm/mach-pxa/include/mach/littleton.h +++ b/arch/arm/mach-pxa/include/mach/littleton.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef __ASM_ARCH_LITTLETON_H | 1 | #ifndef __ASM_ARCH_LITTLETON_H |
2 | #define __ASM_ARCH_LITTLETON_H | 2 | #define __ASM_ARCH_LITTLETON_H |
3 | 3 | ||
4 | #include <mach/gpio.h> | 4 | #include <mach/gpio-pxa.h> |
5 | 5 | ||
6 | #define LITTLETON_ETH_PHYS 0x30000000 | 6 | #define LITTLETON_ETH_PHYS 0x30000000 |
7 | 7 | ||
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index b09e848eb6c6..d493a230addf 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
@@ -11,7 +11,6 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | |||
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/module.h> | 15 | #include <linux/module.h> |
17 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
@@ -21,7 +20,7 @@ | |||
21 | 20 | ||
22 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
23 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
24 | #include <mach/gpio.h> | 23 | #include <mach/gpio-pxa.h> |
25 | 24 | ||
26 | #include "generic.h" | 25 | #include "generic.h" |
27 | 26 | ||
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index c171d6ebee49..a3acd968b44d 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c | |||
@@ -12,7 +12,7 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/syscore_ops.h> | 18 | #include <linux/syscore_ops.h> |
@@ -39,7 +39,6 @@ | |||
39 | #include <asm/mach/flash.h> | 39 | #include <asm/mach/flash.h> |
40 | 40 | ||
41 | #include <mach/pxa27x.h> | 41 | #include <mach/pxa27x.h> |
42 | #include <mach/gpio.h> | ||
43 | #include <mach/lpd270.h> | 42 | #include <mach/lpd270.h> |
44 | #include <mach/audio.h> | 43 | #include <mach/audio.h> |
45 | #include <mach/pxafb.h> | 44 | #include <mach/pxafb.h> |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index a8c696bfc132..c48ce6da9184 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | #include <linux/gpio.h> | ||
14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
@@ -42,7 +43,6 @@ | |||
42 | #include <asm/hardware/sa1111.h> | 43 | #include <asm/hardware/sa1111.h> |
43 | 44 | ||
44 | #include <mach/pxa25x.h> | 45 | #include <mach/pxa25x.h> |
45 | #include <mach/gpio.h> | ||
46 | #include <mach/audio.h> | 46 | #include <mach/audio.h> |
47 | #include <mach/lubbock.h> | 47 | #include <mach/lubbock.h> |
48 | #include <mach/udc.h> | 48 | #include <mach/udc.h> |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 4622eb78ef25..6bc784bb3696 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -12,7 +12,7 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/syscore_ops.h> | 18 | #include <linux/syscore_ops.h> |
@@ -43,7 +43,6 @@ | |||
43 | #include <asm/mach/flash.h> | 43 | #include <asm/mach/flash.h> |
44 | 44 | ||
45 | #include <mach/pxa27x.h> | 45 | #include <mach/pxa27x.h> |
46 | #include <mach/gpio.h> | ||
47 | #include <mach/mainstone.h> | 46 | #include <mach/mainstone.h> |
48 | #include <mach/audio.h> | 47 | #include <mach/audio.h> |
49 | #include <mach/pxafb.h> | 48 | #include <mach/pxafb.h> |
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c index b27544bcafcb..43a5f6861ca3 100644 --- a/arch/arm/mach-pxa/mfp-pxa2xx.c +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c | |||
@@ -12,15 +12,15 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/syscore_ops.h> | 19 | #include <linux/syscore_ops.h> |
20 | 20 | ||
21 | #include <mach/gpio.h> | ||
22 | #include <mach/pxa2xx-regs.h> | 21 | #include <mach/pxa2xx-regs.h> |
23 | #include <mach/mfp-pxa2xx.h> | 22 | #include <mach/mfp-pxa2xx.h> |
23 | #include <mach/gpio-pxa.h> | ||
24 | 24 | ||
25 | #include "generic.h" | 25 | #include "generic.h" |
26 | 26 | ||
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c index 6d5b7e062124..9a9c539f6c01 100644 --- a/arch/arm/mach-pxa/pcm990-baseboard.c +++ b/arch/arm/mach-pxa/pcm990-baseboard.c | |||
@@ -19,7 +19,7 @@ | |||
19 | * it under the terms of the GNU General Public License version 2 as | 19 | * it under the terms of the GNU General Public License version 2 as |
20 | * published by the Free Software Foundation. | 20 | * published by the Free Software Foundation. |
21 | */ | 21 | */ |
22 | 22 | #include <linux/gpio.h> | |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <media/soc_camera.h> | 29 | #include <media/soc_camera.h> |
30 | 30 | ||
31 | #include <asm/gpio.h> | ||
32 | #include <mach/camera.h> | 31 | #include <mach/camera.h> |
33 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
34 | #include <mach/pxa27x.h> | 33 | #include <mach/pxa27x.h> |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 9c434d21a271..8746e1090b6e 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * initialization stuff for PXA machines which can be overridden later if | 16 | * initialization stuff for PXA machines which can be overridden later if |
17 | * need be. | 17 | * need be. |
18 | */ | 18 | */ |
19 | #include <linux/gpio.h> | ||
19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
@@ -23,12 +24,12 @@ | |||
23 | #include <linux/suspend.h> | 24 | #include <linux/suspend.h> |
24 | #include <linux/syscore_ops.h> | 25 | #include <linux/syscore_ops.h> |
25 | #include <linux/irq.h> | 26 | #include <linux/irq.h> |
27 | #include <linux/gpio.h> | ||
26 | 28 | ||
27 | #include <asm/mach/map.h> | 29 | #include <asm/mach/map.h> |
28 | #include <asm/suspend.h> | 30 | #include <asm/suspend.h> |
29 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
30 | #include <mach/irqs.h> | 32 | #include <mach/irqs.h> |
31 | #include <mach/gpio.h> | ||
32 | #include <mach/pxa25x.h> | 33 | #include <mach/pxa25x.h> |
33 | #include <mach/reset.h> | 34 | #include <mach/reset.h> |
34 | #include <mach/pm.h> | 35 | #include <mach/pm.h> |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 9d2400b5f503..2bb5cf8ba6ec 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | #include <linux/gpio.h> | ||
14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 17 | #include <linux/init.h> |
@@ -20,13 +21,13 @@ | |||
20 | #include <linux/io.h> | 21 | #include <linux/io.h> |
21 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
22 | #include <linux/i2c/pxa-i2c.h> | 23 | #include <linux/i2c/pxa-i2c.h> |
24 | #include <linux/gpio.h> | ||
23 | 25 | ||
24 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
25 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
26 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
27 | #include <asm/suspend.h> | 29 | #include <asm/suspend.h> |
28 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
29 | #include <mach/gpio.h> | ||
30 | #include <mach/pxa27x.h> | 31 | #include <mach/pxa27x.h> |
31 | #include <mach/reset.h> | 32 | #include <mach/reset.h> |
32 | #include <mach/ohci.h> | 33 | #include <mach/ohci.h> |
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index b5cd9e5aba31..f940a1345531 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -12,7 +12,6 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | |||
16 | #include <linux/module.h> | 15 | #include <linux/module.h> |
17 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
@@ -26,7 +25,7 @@ | |||
26 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
27 | #include <asm/suspend.h> | 26 | #include <asm/suspend.h> |
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
29 | #include <mach/gpio.h> | 28 | #include <mach/gpio-pxa.h> |
30 | #include <mach/pxa3xx-regs.h> | 29 | #include <mach/pxa3xx-regs.h> |
31 | #include <mach/reset.h> | 30 | #include <mach/reset.h> |
32 | #include <mach/ohci.h> | 31 | #include <mach/ohci.h> |
diff --git a/arch/arm/mach-pxa/pxa95x.c b/arch/arm/mach-pxa/pxa95x.c index 0ee166b61f81..51371b39d2a3 100644 --- a/arch/arm/mach-pxa/pxa95x.c +++ b/arch/arm/mach-pxa/pxa95x.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | |||
13 | #include <linux/module.h> | 12 | #include <linux/module.h> |
14 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
@@ -21,7 +20,7 @@ | |||
21 | #include <linux/syscore_ops.h> | 20 | #include <linux/syscore_ops.h> |
22 | 21 | ||
23 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
24 | #include <mach/gpio.h> | 23 | #include <mach/gpio-pxa.h> |
25 | #include <mach/pxa3xx-regs.h> | 24 | #include <mach/pxa3xx-regs.h> |
26 | #include <mach/pxa930.h> | 25 | #include <mach/pxa930.h> |
27 | #include <mach/reset.h> | 26 | #include <mach/reset.h> |
diff --git a/arch/arm/mach-pxa/saarb.c b/arch/arm/mach-pxa/saarb.c index ebd6379c4969..eb6a10d85b03 100644 --- a/arch/arm/mach-pxa/saarb.c +++ b/arch/arm/mach-pxa/saarb.c | |||
@@ -9,12 +9,13 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * publishhed by the Free Software Foundation. | 10 | * publishhed by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | #include <linux/gpio.h> | |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/i2c.h> | 15 | #include <linux/i2c.h> |
16 | #include <linux/i2c/pxa-i2c.h> | 16 | #include <linux/i2c/pxa-i2c.h> |
17 | #include <linux/mfd/88pm860x.h> | 17 | #include <linux/mfd/88pm860x.h> |
18 | #include <linux/gpio.h> | ||
18 | 19 | ||
19 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
@@ -23,7 +24,6 @@ | |||
23 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
24 | #include <mach/mfp.h> | 25 | #include <mach/mfp.h> |
25 | #include <mach/mfp-pxa930.h> | 26 | #include <mach/mfp-pxa930.h> |
26 | #include <mach/gpio.h> | ||
27 | 27 | ||
28 | #include "generic.h" | 28 | #include "generic.h" |
29 | 29 | ||
diff --git a/arch/arm/mach-realview/include/mach/gpio.h b/arch/arm/mach-realview/include/mach/gpio.h index 94ff27678a46..40a8c178f10d 100644 --- a/arch/arm/mach-realview/include/mach/gpio.h +++ b/arch/arm/mach-realview/include/mach/gpio.h | |||
@@ -1,6 +1 @@ | |||
1 | #include <asm-generic/gpio.h> | /* empty */ | |
2 | |||
3 | #define gpio_get_value __gpio_get_value | ||
4 | #define gpio_set_value __gpio_set_value | ||
5 | #define gpio_cansleep __gpio_cansleep | ||
6 | #define gpio_to_irq __gpio_to_irq | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/gpio.h b/arch/arm/mach-s3c2410/include/mach/gpio.h index f7f6b07df30e..6fac70f3484e 100644 --- a/arch/arm/mach-s3c2410/include/mach/gpio.h +++ b/arch/arm/mach-s3c2410/include/mach/gpio.h | |||
@@ -11,11 +11,6 @@ | |||
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #define gpio_get_value __gpio_get_value | ||
15 | #define gpio_set_value __gpio_set_value | ||
16 | #define gpio_cansleep __gpio_cansleep | ||
17 | #define gpio_to_irq __gpio_to_irq | ||
18 | |||
19 | /* some boards require extra gpio capacity to support external | 14 | /* some boards require extra gpio capacity to support external |
20 | * devices that need GPIO. | 15 | * devices that need GPIO. |
21 | */ | 16 | */ |
@@ -28,7 +23,6 @@ | |||
28 | #define ARCH_NR_GPIOS (256 + CONFIG_S3C24XX_GPIO_EXTRA) | 23 | #define ARCH_NR_GPIOS (256 + CONFIG_S3C24XX_GPIO_EXTRA) |
29 | #endif | 24 | #endif |
30 | 25 | ||
31 | #include <asm-generic/gpio.h> | ||
32 | #include <mach/gpio-nrs.h> | 26 | #include <mach/gpio-nrs.h> |
33 | #include <mach/gpio-fns.h> | 27 | #include <mach/gpio-fns.h> |
34 | 28 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/h1940-latch.h b/arch/arm/mach-s3c2410/include/mach/h1940-latch.h index 97e42bfce81e..fc897d3a056c 100644 --- a/arch/arm/mach-s3c2410/include/mach/h1940-latch.h +++ b/arch/arm/mach-s3c2410/include/mach/h1940-latch.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #ifndef __ASM_ARCH_H1940_LATCH_H | 14 | #ifndef __ASM_ARCH_H1940_LATCH_H |
15 | #define __ASM_ARCH_H1940_LATCH_H | 15 | #define __ASM_ARCH_H1940_LATCH_H |
16 | 16 | ||
17 | #include <mach/gpio.h> | 17 | #include <asm/gpio.h> |
18 | 18 | ||
19 | #define H1940_LATCH_GPIO(x) (S3C_GPIO_END + (x)) | 19 | #define H1940_LATCH_GPIO(x) (S3C_GPIO_END + (x)) |
20 | 20 | ||
diff --git a/arch/arm/mach-s3c64xx/include/mach/gpio.h b/arch/arm/mach-s3c64xx/include/mach/gpio.h index 0d46e994048a..6e34c2f6e670 100644 --- a/arch/arm/mach-s3c64xx/include/mach/gpio.h +++ b/arch/arm/mach-s3c64xx/include/mach/gpio.h | |||
@@ -12,11 +12,6 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #define gpio_get_value __gpio_get_value | ||
16 | #define gpio_set_value __gpio_set_value | ||
17 | #define gpio_cansleep __gpio_cansleep | ||
18 | #define gpio_to_irq __gpio_to_irq | ||
19 | |||
20 | /* GPIO bank sizes */ | 15 | /* GPIO bank sizes */ |
21 | #define S3C64XX_GPIO_A_NR (8) | 16 | #define S3C64XX_GPIO_A_NR (8) |
22 | #define S3C64XX_GPIO_B_NR (7) | 17 | #define S3C64XX_GPIO_B_NR (7) |
@@ -96,5 +91,3 @@ enum s3c_gpio_number { | |||
96 | #define BOARD_NR_GPIOS 16 | 91 | #define BOARD_NR_GPIOS 16 |
97 | 92 | ||
98 | #define ARCH_NR_GPIOS (GPIO_BOARD_START + BOARD_NR_GPIOS) | 93 | #define ARCH_NR_GPIOS (GPIO_BOARD_START + BOARD_NR_GPIOS) |
99 | |||
100 | #include <asm-generic/gpio.h> | ||
diff --git a/arch/arm/mach-s5p64x0/include/mach/gpio.h b/arch/arm/mach-s5p64x0/include/mach/gpio.h index adb5f298ead8..06cd3c9b16ac 100644 --- a/arch/arm/mach-s5p64x0/include/mach/gpio.h +++ b/arch/arm/mach-s5p64x0/include/mach/gpio.h | |||
@@ -13,11 +13,6 @@ | |||
13 | #ifndef __ASM_ARCH_GPIO_H | 13 | #ifndef __ASM_ARCH_GPIO_H |
14 | #define __ASM_ARCH_GPIO_H __FILE__ | 14 | #define __ASM_ARCH_GPIO_H __FILE__ |
15 | 15 | ||
16 | #define gpio_get_value __gpio_get_value | ||
17 | #define gpio_set_value __gpio_set_value | ||
18 | #define gpio_cansleep __gpio_cansleep | ||
19 | #define gpio_to_irq __gpio_to_irq | ||
20 | |||
21 | /* GPIO bank sizes */ | 16 | /* GPIO bank sizes */ |
22 | 17 | ||
23 | #define S5P6440_GPIO_A_NR (6) | 18 | #define S5P6440_GPIO_A_NR (6) |
@@ -134,6 +129,4 @@ enum s5p6450_gpio_number { | |||
134 | 129 | ||
135 | #define ARCH_NR_GPIOS (S5P64X0_GPIO_END + CONFIG_SAMSUNG_GPIO_EXTRA) | 130 | #define ARCH_NR_GPIOS (S5P64X0_GPIO_END + CONFIG_SAMSUNG_GPIO_EXTRA) |
136 | 131 | ||
137 | #include <asm-generic/gpio.h> | ||
138 | |||
139 | #endif /* __ASM_ARCH_GPIO_H */ | 132 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-s5pc100/include/mach/gpio.h b/arch/arm/mach-s5pc100/include/mach/gpio.h index 29a8a12d9b4f..5e1a924b595f 100644 --- a/arch/arm/mach-s5pc100/include/mach/gpio.h +++ b/arch/arm/mach-s5pc100/include/mach/gpio.h | |||
@@ -15,11 +15,6 @@ | |||
15 | #ifndef __ASM_ARCH_GPIO_H | 15 | #ifndef __ASM_ARCH_GPIO_H |
16 | #define __ASM_ARCH_GPIO_H __FILE__ | 16 | #define __ASM_ARCH_GPIO_H __FILE__ |
17 | 17 | ||
18 | #define gpio_get_value __gpio_get_value | ||
19 | #define gpio_set_value __gpio_set_value | ||
20 | #define gpio_cansleep __gpio_cansleep | ||
21 | #define gpio_to_irq __gpio_to_irq | ||
22 | |||
23 | /* GPIO bank sizes */ | 18 | /* GPIO bank sizes */ |
24 | #define S5PC100_GPIO_A0_NR (8) | 19 | #define S5PC100_GPIO_A0_NR (8) |
25 | #define S5PC100_GPIO_A1_NR (5) | 20 | #define S5PC100_GPIO_A1_NR (5) |
@@ -146,6 +141,4 @@ enum s5p_gpio_number { | |||
146 | /* define the number of gpios we need to the one after the MP04() range */ | 141 | /* define the number of gpios we need to the one after the MP04() range */ |
147 | #define ARCH_NR_GPIOS (S5PC100_GPIO_END + 1) | 142 | #define ARCH_NR_GPIOS (S5PC100_GPIO_END + 1) |
148 | 143 | ||
149 | #include <asm-generic/gpio.h> | ||
150 | |||
151 | #endif /* __ASM_ARCH_GPIO_H */ | 144 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-s5pv210/include/mach/gpio.h b/arch/arm/mach-s5pv210/include/mach/gpio.h index a5a1e331f8ed..6c8b903c02e4 100644 --- a/arch/arm/mach-s5pv210/include/mach/gpio.h +++ b/arch/arm/mach-s5pv210/include/mach/gpio.h | |||
@@ -13,11 +13,6 @@ | |||
13 | #ifndef __ASM_ARCH_GPIO_H | 13 | #ifndef __ASM_ARCH_GPIO_H |
14 | #define __ASM_ARCH_GPIO_H __FILE__ | 14 | #define __ASM_ARCH_GPIO_H __FILE__ |
15 | 15 | ||
16 | #define gpio_get_value __gpio_get_value | ||
17 | #define gpio_set_value __gpio_set_value | ||
18 | #define gpio_cansleep __gpio_cansleep | ||
19 | #define gpio_to_irq __gpio_to_irq | ||
20 | |||
21 | /* Practically, GPIO banks up to MP03 are the configurable gpio banks */ | 16 | /* Practically, GPIO banks up to MP03 are the configurable gpio banks */ |
22 | 17 | ||
23 | /* GPIO bank sizes */ | 18 | /* GPIO bank sizes */ |
@@ -142,6 +137,4 @@ enum s5p_gpio_number { | |||
142 | #define ARCH_NR_GPIOS (S5PV210_MP05(S5PV210_GPIO_MP05_NR) + \ | 137 | #define ARCH_NR_GPIOS (S5PV210_MP05(S5PV210_GPIO_MP05_NR) + \ |
143 | CONFIG_SAMSUNG_GPIO_EXTRA + 1) | 138 | CONFIG_SAMSUNG_GPIO_EXTRA + 1) |
144 | 139 | ||
145 | #include <asm-generic/gpio.h> | ||
146 | |||
147 | #endif /* __ASM_ARCH_GPIO_H */ | 140 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile index 41252d22e659..73a5c6431792 100644 --- a/arch/arm/mach-sa1100/Makefile +++ b/arch/arm/mach-sa1100/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | # Common support | 5 | # Common support |
6 | obj-y := clock.o generic.o gpio.o irq.o dma.o time.o #nmi-oopser.o | 6 | obj-y := clock.o generic.o irq.o dma.o time.o #nmi-oopser.o |
7 | obj-m := | 7 | obj-m := |
8 | obj-n := | 8 | obj-n := |
9 | obj- := | 9 | obj- := |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index e21f3470eece..5fa5ae1f39e1 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | #include <linux/gpio.h> | ||
12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
@@ -24,7 +25,6 @@ | |||
24 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
25 | #include <asm/mach/flash.h> | 26 | #include <asm/mach/flash.h> |
26 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
27 | #include <asm/gpio.h> | ||
28 | 28 | ||
29 | #include "generic.h" | 29 | #include "generic.h" |
30 | 30 | ||
diff --git a/arch/arm/mach-sa1100/gpio.c b/arch/arm/mach-sa1100/gpio.c deleted file mode 100644 index 0d3829a8c2c1..000000000000 --- a/arch/arm/mach-sa1100/gpio.c +++ /dev/null | |||
@@ -1,65 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-sa1100/gpio.c | ||
3 | * | ||
4 | * Generic SA-1100 GPIO handling | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #include <linux/init.h> | ||
12 | #include <linux/module.h> | ||
13 | |||
14 | #include <asm/gpio.h> | ||
15 | #include <mach/hardware.h> | ||
16 | #include "generic.h" | ||
17 | |||
18 | static int sa1100_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
19 | { | ||
20 | return GPLR & GPIO_GPIO(offset); | ||
21 | } | ||
22 | |||
23 | static void sa1100_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | ||
24 | { | ||
25 | if (value) | ||
26 | GPSR = GPIO_GPIO(offset); | ||
27 | else | ||
28 | GPCR = GPIO_GPIO(offset); | ||
29 | } | ||
30 | |||
31 | static int sa1100_direction_input(struct gpio_chip *chip, unsigned offset) | ||
32 | { | ||
33 | unsigned long flags; | ||
34 | |||
35 | local_irq_save(flags); | ||
36 | GPDR &= ~GPIO_GPIO(offset); | ||
37 | local_irq_restore(flags); | ||
38 | return 0; | ||
39 | } | ||
40 | |||
41 | static int sa1100_direction_output(struct gpio_chip *chip, unsigned offset, int value) | ||
42 | { | ||
43 | unsigned long flags; | ||
44 | |||
45 | local_irq_save(flags); | ||
46 | sa1100_gpio_set(chip, offset, value); | ||
47 | GPDR |= GPIO_GPIO(offset); | ||
48 | local_irq_restore(flags); | ||
49 | return 0; | ||
50 | } | ||
51 | |||
52 | static struct gpio_chip sa1100_gpio_chip = { | ||
53 | .label = "gpio", | ||
54 | .direction_input = sa1100_direction_input, | ||
55 | .direction_output = sa1100_direction_output, | ||
56 | .set = sa1100_gpio_set, | ||
57 | .get = sa1100_gpio_get, | ||
58 | .base = 0, | ||
59 | .ngpio = GPIO_MAX + 1, | ||
60 | }; | ||
61 | |||
62 | void __init sa1100_init_gpio(void) | ||
63 | { | ||
64 | gpiochip_add(&sa1100_gpio_chip); | ||
65 | } | ||
diff --git a/arch/arm/mach-sa1100/include/mach/gpio.h b/arch/arm/mach-sa1100/include/mach/gpio.h index 7befc104e9a9..703631887c94 100644 --- a/arch/arm/mach-sa1100/include/mach/gpio.h +++ b/arch/arm/mach-sa1100/include/mach/gpio.h | |||
@@ -28,6 +28,8 @@ | |||
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm-generic/gpio.h> | 29 | #include <asm-generic/gpio.h> |
30 | 30 | ||
31 | #define __ARM_GPIOLIB_COMPLEX | ||
32 | |||
31 | static inline int gpio_get_value(unsigned gpio) | 33 | static inline int gpio_get_value(unsigned gpio) |
32 | { | 34 | { |
33 | if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX)) | 35 | if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX)) |
@@ -51,7 +53,5 @@ static inline void gpio_set_value(unsigned gpio, int value) | |||
51 | 53 | ||
52 | #define gpio_to_irq(gpio) ((gpio < 11) ? (IRQ_GPIO0 + gpio) : \ | 54 | #define gpio_to_irq(gpio) ((gpio < 11) ? (IRQ_GPIO0 + gpio) : \ |
53 | (IRQ_GPIO11 - 11 + gpio)) | 55 | (IRQ_GPIO11 - 11 + gpio)) |
54 | #define irq_to_gpio(irq) ((irq < IRQ_GPIO11_27) ? (irq - IRQ_GPIO0) : \ | ||
55 | (irq - IRQ_GPIO11 + 11)) | ||
56 | 56 | ||
57 | #endif | 57 | #endif |
diff --git a/arch/arm/mach-shmobile/include/mach/gpio.h b/arch/arm/mach-shmobile/include/mach/gpio.h index 2b1bb9e43dda..7bf0890e16ba 100644 --- a/arch/arm/mach-shmobile/include/mach/gpio.h +++ b/arch/arm/mach-shmobile/include/mach/gpio.h | |||
@@ -18,31 +18,15 @@ | |||
18 | 18 | ||
19 | #ifdef CONFIG_GPIOLIB | 19 | #ifdef CONFIG_GPIOLIB |
20 | 20 | ||
21 | static inline int gpio_get_value(unsigned gpio) | ||
22 | { | ||
23 | return __gpio_get_value(gpio); | ||
24 | } | ||
25 | |||
26 | static inline void gpio_set_value(unsigned gpio, int value) | ||
27 | { | ||
28 | __gpio_set_value(gpio, value); | ||
29 | } | ||
30 | |||
31 | static inline int gpio_cansleep(unsigned gpio) | ||
32 | { | ||
33 | return __gpio_cansleep(gpio); | ||
34 | } | ||
35 | |||
36 | static inline int gpio_to_irq(unsigned gpio) | ||
37 | { | ||
38 | return __gpio_to_irq(gpio); | ||
39 | } | ||
40 | |||
41 | static inline int irq_to_gpio(unsigned int irq) | 21 | static inline int irq_to_gpio(unsigned int irq) |
42 | { | 22 | { |
43 | return -ENOSYS; | 23 | return -ENOSYS; |
44 | } | 24 | } |
45 | 25 | ||
26 | #else | ||
27 | |||
28 | #define __ARM_GPIOLIB_COMPLEX | ||
29 | |||
46 | #endif /* CONFIG_GPIOLIB */ | 30 | #endif /* CONFIG_GPIOLIB */ |
47 | 31 | ||
48 | #endif /* __ASM_ARCH_GPIO_H */ | 32 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-tegra/board-harmony-pcie.c b/arch/arm/mach-tegra/board-harmony-pcie.c index 9c27b95b8d86..6db7d699ef1c 100644 --- a/arch/arm/mach-tegra/board-harmony-pcie.c +++ b/arch/arm/mach-tegra/board-harmony-pcie.c | |||
@@ -24,12 +24,10 @@ | |||
24 | 24 | ||
25 | #include <mach/pinmux.h> | 25 | #include <mach/pinmux.h> |
26 | #include "board.h" | 26 | #include "board.h" |
27 | #include "board-harmony.h" | ||
27 | 28 | ||
28 | #ifdef CONFIG_TEGRA_PCI | 29 | #ifdef CONFIG_TEGRA_PCI |
29 | 30 | ||
30 | /* GPIO 3 of the PMIC */ | ||
31 | #define EN_VDD_1V05_GPIO (TEGRA_NR_GPIOS + 2) | ||
32 | |||
33 | static int __init harmony_pcie_init(void) | 31 | static int __init harmony_pcie_init(void) |
34 | { | 32 | { |
35 | struct regulator *regulator = NULL; | 33 | struct regulator *regulator = NULL; |
@@ -38,11 +36,11 @@ static int __init harmony_pcie_init(void) | |||
38 | if (!machine_is_harmony()) | 36 | if (!machine_is_harmony()) |
39 | return 0; | 37 | return 0; |
40 | 38 | ||
41 | err = gpio_request(EN_VDD_1V05_GPIO, "EN_VDD_1V05"); | 39 | err = gpio_request(TEGRA_GPIO_EN_VDD_1V05_GPIO, "EN_VDD_1V05"); |
42 | if (err) | 40 | if (err) |
43 | return err; | 41 | return err; |
44 | 42 | ||
45 | gpio_direction_output(EN_VDD_1V05_GPIO, 1); | 43 | gpio_direction_output(TEGRA_GPIO_EN_VDD_1V05_GPIO, 1); |
46 | 44 | ||
47 | regulator = regulator_get(NULL, "pex_clk"); | 45 | regulator = regulator_get(NULL, "pex_clk"); |
48 | if (IS_ERR_OR_NULL(regulator)) | 46 | if (IS_ERR_OR_NULL(regulator)) |
@@ -68,7 +66,7 @@ err_pcie: | |||
68 | regulator_disable(regulator); | 66 | regulator_disable(regulator); |
69 | regulator_put(regulator); | 67 | regulator_put(regulator); |
70 | err_reg: | 68 | err_reg: |
71 | gpio_free(EN_VDD_1V05_GPIO); | 69 | gpio_free(TEGRA_GPIO_EN_VDD_1V05_GPIO); |
72 | 70 | ||
73 | return err; | 71 | return err; |
74 | } | 72 | } |
diff --git a/arch/arm/mach-tegra/board-harmony.h b/arch/arm/mach-tegra/board-harmony.h index d85142edaf6b..139d96c93843 100644 --- a/arch/arm/mach-tegra/board-harmony.h +++ b/arch/arm/mach-tegra/board-harmony.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #ifndef _MACH_TEGRA_BOARD_HARMONY_H | 17 | #ifndef _MACH_TEGRA_BOARD_HARMONY_H |
18 | #define _MACH_TEGRA_BOARD_HARMONY_H | 18 | #define _MACH_TEGRA_BOARD_HARMONY_H |
19 | 19 | ||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
20 | #define HARMONY_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_)) | 22 | #define HARMONY_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_)) |
21 | #define HARMONY_GPIO_WM8903(_x_) (HARMONY_GPIO_TPS6586X(4) + (_x_)) | 23 | #define HARMONY_GPIO_WM8903(_x_) (HARMONY_GPIO_TPS6586X(4) + (_x_)) |
22 | 24 | ||
@@ -31,6 +33,7 @@ | |||
31 | #define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2 | 33 | #define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2 |
32 | #define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 | 34 | #define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 |
33 | #define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 | 35 | #define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 |
36 | #define TEGRA_GPIO_EN_VDD_1V05_GPIO HARMONY_GPIO_TPS6586X(2) | ||
34 | 37 | ||
35 | void harmony_pinmux_init(void); | 38 | void harmony_pinmux_init(void); |
36 | int harmony_regulator_init(void); | 39 | int harmony_regulator_init(void); |
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c index d161590c99c2..ac809b6e3def 100644 --- a/arch/arm/mach-tegra/board-paz00.c +++ b/arch/arm/mach-tegra/board-paz00.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/pda_power.h> | 26 | #include <linux/pda_power.h> |
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | #include <linux/i2c.h> | 28 | #include <linux/i2c.h> |
29 | #include <linux/gpio.h> | ||
29 | #include <linux/rfkill-gpio.h> | 30 | #include <linux/rfkill-gpio.h> |
30 | 31 | ||
31 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
@@ -36,7 +37,6 @@ | |||
36 | #include <mach/iomap.h> | 37 | #include <mach/iomap.h> |
37 | #include <mach/irqs.h> | 38 | #include <mach/irqs.h> |
38 | #include <mach/sdhci.h> | 39 | #include <mach/sdhci.h> |
39 | #include <mach/gpio.h> | ||
40 | 40 | ||
41 | #include "board.h" | 41 | #include "board.h" |
42 | #include "board-paz00.h" | 42 | #include "board-paz00.h" |
diff --git a/arch/arm/mach-tegra/board-paz00.h b/arch/arm/mach-tegra/board-paz00.h index 86057c3fb9a0..8aff06eb58c3 100644 --- a/arch/arm/mach-tegra/board-paz00.h +++ b/arch/arm/mach-tegra/board-paz00.h | |||
@@ -17,18 +17,20 @@ | |||
17 | #ifndef _MACH_TEGRA_BOARD_PAZ00_H | 17 | #ifndef _MACH_TEGRA_BOARD_PAZ00_H |
18 | #define _MACH_TEGRA_BOARD_PAZ00_H | 18 | #define _MACH_TEGRA_BOARD_PAZ00_H |
19 | 19 | ||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
20 | /* SDCARD */ | 22 | /* SDCARD */ |
21 | #define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5 | 23 | #define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5 |
22 | #define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1 | 24 | #define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1 |
23 | #define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3 | 25 | #define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3 |
24 | 26 | ||
25 | /* ULPI */ | 27 | /* ULPI */ |
26 | #define TEGRA_ULPI_RST TEGRA_GPIO_PV0 | 28 | #define TEGRA_ULPI_RST TEGRA_GPIO_PV0 |
27 | 29 | ||
28 | /* WIFI */ | 30 | /* WIFI */ |
29 | #define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5 | 31 | #define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5 |
30 | #define TEGRA_WIFI_RST TEGRA_GPIO_PD1 | 32 | #define TEGRA_WIFI_RST TEGRA_GPIO_PD1 |
31 | #define TEGRA_WIFI_LED TEGRA_GPIO_PD0 | 33 | #define TEGRA_WIFI_LED TEGRA_GPIO_PD0 |
32 | 34 | ||
33 | void paz00_pinmux_init(void); | 35 | void paz00_pinmux_init(void); |
34 | 36 | ||
diff --git a/arch/arm/mach-tegra/board-seaboard.h b/arch/arm/mach-tegra/board-seaboard.h index d06c3342e2c4..4c45d4ca3c49 100644 --- a/arch/arm/mach-tegra/board-seaboard.h +++ b/arch/arm/mach-tegra/board-seaboard.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #ifndef _MACH_TEGRA_BOARD_SEABOARD_H | 17 | #ifndef _MACH_TEGRA_BOARD_SEABOARD_H |
18 | #define _MACH_TEGRA_BOARD_SEABOARD_H | 18 | #define _MACH_TEGRA_BOARD_SEABOARD_H |
19 | 19 | ||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
20 | #define SEABOARD_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_)) | 22 | #define SEABOARD_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_)) |
21 | #define SEABOARD_GPIO_WM8903(_x_) (SEABOARD_GPIO_TPS6586X(4) + (_x_)) | 23 | #define SEABOARD_GPIO_WM8903(_x_) (SEABOARD_GPIO_TPS6586X(4) + (_x_)) |
22 | 24 | ||
diff --git a/arch/arm/mach-tegra/board-trimslice-pinmux.c b/arch/arm/mach-tegra/board-trimslice-pinmux.c index 47c596cdbf32..bcb1916e68b9 100644 --- a/arch/arm/mach-tegra/board-trimslice-pinmux.c +++ b/arch/arm/mach-tegra/board-trimslice-pinmux.c | |||
@@ -13,12 +13,11 @@ | |||
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | * | 14 | * |
15 | */ | 15 | */ |
16 | 16 | #include <linux/gpio.h> | |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | 19 | ||
20 | #include <mach/pinmux.h> | 20 | #include <mach/pinmux.h> |
21 | #include <mach/gpio.h> | ||
22 | 21 | ||
23 | #include "gpio-names.h" | 22 | #include "gpio-names.h" |
24 | #include "board-trimslice.h" | 23 | #include "board-trimslice.h" |
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c index 91875b975563..c3aff9fdffd3 100644 --- a/arch/arm/mach-tegra/board-trimslice.c +++ b/arch/arm/mach-tegra/board-trimslice.c | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include <mach/iomap.h> | 33 | #include <mach/iomap.h> |
34 | #include <mach/sdhci.h> | 34 | #include <mach/sdhci.h> |
35 | #include <mach/gpio.h> | ||
36 | 35 | ||
37 | #include "board.h" | 36 | #include "board.h" |
38 | #include "clock.h" | 37 | #include "clock.h" |
diff --git a/arch/arm/mach-tegra/board-trimslice.h b/arch/arm/mach-tegra/board-trimslice.h index 7a7dee86b4da..50f128d87779 100644 --- a/arch/arm/mach-tegra/board-trimslice.h +++ b/arch/arm/mach-tegra/board-trimslice.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H | 17 | #ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H |
18 | #define _MACH_TEGRA_BOARD_TRIMSLICE_H | 18 | #define _MACH_TEGRA_BOARD_TRIMSLICE_H |
19 | 19 | ||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
20 | #define TRIMSLICE_GPIO_SD4_CD TEGRA_GPIO_PP1 /* mmc4 cd */ | 22 | #define TRIMSLICE_GPIO_SD4_CD TEGRA_GPIO_PP1 /* mmc4 cd */ |
21 | #define TRIMSLICE_GPIO_SD4_WP TEGRA_GPIO_PP2 /* mmc4 wp */ | 23 | #define TRIMSLICE_GPIO_SD4_WP TEGRA_GPIO_PP2 /* mmc4 wp */ |
22 | 24 | ||
diff --git a/arch/arm/mach-tegra/include/mach/gpio-tegra.h b/arch/arm/mach-tegra/include/mach/gpio-tegra.h new file mode 100644 index 000000000000..87d37fdf5084 --- /dev/null +++ b/arch/arm/mach-tegra/include/mach/gpio-tegra.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/include/mach/gpio.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * | ||
6 | * Author: | ||
7 | * Erik Gilling <konkers@google.com> | ||
8 | * | ||
9 | * This software is licensed under the terms of the GNU General Public | ||
10 | * License version 2, as published by the Free Software Foundation, and | ||
11 | * may be copied, distributed, and modified under those terms. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | */ | ||
19 | |||
20 | #ifndef __MACH_TEGRA_GPIO_TEGRA_H | ||
21 | #define __MACH_TEGRA_GPIO_TEGRA_H | ||
22 | |||
23 | #include <linux/types.h> | ||
24 | #include <mach/irqs.h> | ||
25 | |||
26 | #define TEGRA_NR_GPIOS INT_GPIO_NR | ||
27 | |||
28 | #define TEGRA_GPIO_TO_IRQ(gpio) (INT_GPIO_BASE + (gpio)) | ||
29 | |||
30 | struct tegra_gpio_table { | ||
31 | int gpio; /* GPIO number */ | ||
32 | bool enable; /* Enable for GPIO at init? */ | ||
33 | }; | ||
34 | |||
35 | void tegra_gpio_config(struct tegra_gpio_table *table, int num); | ||
36 | void tegra_gpio_enable(int gpio); | ||
37 | void tegra_gpio_disable(int gpio); | ||
38 | |||
39 | #endif | ||
diff --git a/arch/arm/mach-tegra/include/mach/gpio.h b/arch/arm/mach-tegra/include/mach/gpio.h index 196f114dc241..e69de29bb2d1 100644 --- a/arch/arm/mach-tegra/include/mach/gpio.h +++ b/arch/arm/mach-tegra/include/mach/gpio.h | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/include/mach/gpio.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * | ||
6 | * Author: | ||
7 | * Erik Gilling <konkers@google.com> | ||
8 | * | ||
9 | * This software is licensed under the terms of the GNU General Public | ||
10 | * License version 2, as published by the Free Software Foundation, and | ||
11 | * may be copied, distributed, and modified under those terms. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | */ | ||
19 | |||
20 | #ifndef __MACH_TEGRA_GPIO_H | ||
21 | #define __MACH_TEGRA_GPIO_H | ||
22 | |||
23 | #include <linux/init.h> | ||
24 | #include <mach/irqs.h> | ||
25 | |||
26 | #define TEGRA_NR_GPIOS INT_GPIO_NR | ||
27 | |||
28 | #include <asm-generic/gpio.h> | ||
29 | |||
30 | #define gpio_get_value __gpio_get_value | ||
31 | #define gpio_set_value __gpio_set_value | ||
32 | #define gpio_cansleep __gpio_cansleep | ||
33 | |||
34 | #define TEGRA_GPIO_TO_IRQ(gpio) (INT_GPIO_BASE + (gpio)) | ||
35 | #define TEGRA_IRQ_TO_GPIO(irq) ((irq) - INT_GPIO_BASE) | ||
36 | |||
37 | static inline int gpio_to_irq(unsigned int gpio) | ||
38 | { | ||
39 | if (gpio < TEGRA_NR_GPIOS) | ||
40 | return INT_GPIO_BASE + gpio; | ||
41 | return -EINVAL; | ||
42 | } | ||
43 | |||
44 | static inline int irq_to_gpio(unsigned int irq) | ||
45 | { | ||
46 | if ((irq >= INT_GPIO_BASE) && (irq < INT_GPIO_BASE + INT_GPIO_NR)) | ||
47 | return irq - INT_GPIO_BASE; | ||
48 | return -EINVAL; | ||
49 | } | ||
50 | |||
51 | struct tegra_gpio_table { | ||
52 | int gpio; /* GPIO number */ | ||
53 | bool enable; /* Enable for GPIO at init? */ | ||
54 | }; | ||
55 | |||
56 | void tegra_gpio_config(struct tegra_gpio_table *table, int num); | ||
57 | void tegra_gpio_enable(int gpio); | ||
58 | void tegra_gpio_disable(int gpio); | ||
59 | |||
60 | #endif | ||
diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c index 88081bb3ec52..37576a721aeb 100644 --- a/arch/arm/mach-tegra/usb_phy.c +++ b/arch/arm/mach-tegra/usb_phy.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/usb/otg.h> | 28 | #include <linux/usb/otg.h> |
29 | #include <linux/usb/ulpi.h> | 29 | #include <linux/usb/ulpi.h> |
30 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
31 | #include <mach/gpio-tegra.h> | ||
31 | #include <mach/usb_phy.h> | 32 | #include <mach/usb_phy.h> |
32 | #include <mach/iomap.h> | 33 | #include <mach/iomap.h> |
33 | 34 | ||
diff --git a/arch/arm/mach-u300/Kconfig b/arch/arm/mach-u300/Kconfig index 32a7b0f7e9f7..7b5c229dc7ea 100644 --- a/arch/arm/mach-u300/Kconfig +++ b/arch/arm/mach-u300/Kconfig | |||
@@ -6,6 +6,7 @@ comment "ST-Ericsson Mobile Platform Products" | |||
6 | 6 | ||
7 | config MACH_U300 | 7 | config MACH_U300 |
8 | bool "U300" | 8 | bool "U300" |
9 | select GPIO_U300 | ||
9 | 10 | ||
10 | comment "ST-Ericsson U300/U330/U335/U365 Feature Selections" | 11 | comment "ST-Ericsson U300/U330/U335/U365 Feature Selections" |
11 | 12 | ||
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 399c89f14dfb..fd435f44098b 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
38 | #include <mach/syscon.h> | 38 | #include <mach/syscon.h> |
39 | #include <mach/dma_channels.h> | 39 | #include <mach/dma_channels.h> |
40 | #include <mach/gpio-u300.h> | ||
40 | 41 | ||
41 | #include "clock.h" | 42 | #include "clock.h" |
42 | #include "mmc.h" | 43 | #include "mmc.h" |
@@ -239,7 +240,7 @@ static struct resource gpio_resources[] = { | |||
239 | .end = IRQ_U300_GPIO_PORT2, | 240 | .end = IRQ_U300_GPIO_PORT2, |
240 | .flags = IORESOURCE_IRQ, | 241 | .flags = IORESOURCE_IRQ, |
241 | }, | 242 | }, |
242 | #ifdef U300_COH901571_3 | 243 | #if defined(CONFIG_MACH_U300_BS365) || defined(CONFIG_MACH_U300_BS335) |
243 | { | 244 | { |
244 | .name = "gpio3", | 245 | .name = "gpio3", |
245 | .start = IRQ_U300_GPIO_PORT3, | 246 | .start = IRQ_U300_GPIO_PORT3, |
@@ -252,6 +253,7 @@ static struct resource gpio_resources[] = { | |||
252 | .end = IRQ_U300_GPIO_PORT4, | 253 | .end = IRQ_U300_GPIO_PORT4, |
253 | .flags = IORESOURCE_IRQ, | 254 | .flags = IORESOURCE_IRQ, |
254 | }, | 255 | }, |
256 | #endif | ||
255 | #ifdef CONFIG_MACH_U300_BS335 | 257 | #ifdef CONFIG_MACH_U300_BS335 |
256 | { | 258 | { |
257 | .name = "gpio5", | 259 | .name = "gpio5", |
@@ -266,7 +268,6 @@ static struct resource gpio_resources[] = { | |||
266 | .flags = IORESOURCE_IRQ, | 268 | .flags = IORESOURCE_IRQ, |
267 | }, | 269 | }, |
268 | #endif /* CONFIG_MACH_U300_BS335 */ | 270 | #endif /* CONFIG_MACH_U300_BS335 */ |
269 | #endif /* U300_COH901571_3 */ | ||
270 | }; | 271 | }; |
271 | 272 | ||
272 | static struct resource keypad_resources[] = { | 273 | static struct resource keypad_resources[] = { |
@@ -1556,11 +1557,35 @@ static struct platform_device i2c1_device = { | |||
1556 | .resource = i2c1_resources, | 1557 | .resource = i2c1_resources, |
1557 | }; | 1558 | }; |
1558 | 1559 | ||
1560 | /* | ||
1561 | * The different variants have a few different versions of the | ||
1562 | * GPIO block, with different number of ports. | ||
1563 | */ | ||
1564 | static struct u300_gpio_platform u300_gpio_plat = { | ||
1565 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | ||
1566 | .variant = U300_GPIO_COH901335, | ||
1567 | .ports = 3, | ||
1568 | #endif | ||
1569 | #ifdef CONFIG_MACH_U300_BS335 | ||
1570 | .variant = U300_GPIO_COH901571_3_BS335, | ||
1571 | .ports = 7, | ||
1572 | #endif | ||
1573 | #ifdef CONFIG_MACH_U300_BS365 | ||
1574 | .variant = U300_GPIO_COH901571_3_BS365, | ||
1575 | .ports = 5, | ||
1576 | #endif | ||
1577 | .gpio_base = 0, | ||
1578 | .gpio_irq_base = IRQ_U300_GPIO_BASE, | ||
1579 | }; | ||
1580 | |||
1559 | static struct platform_device gpio_device = { | 1581 | static struct platform_device gpio_device = { |
1560 | .name = "u300-gpio", | 1582 | .name = "u300-gpio", |
1561 | .id = -1, | 1583 | .id = -1, |
1562 | .num_resources = ARRAY_SIZE(gpio_resources), | 1584 | .num_resources = ARRAY_SIZE(gpio_resources), |
1563 | .resource = gpio_resources, | 1585 | .resource = gpio_resources, |
1586 | .dev = { | ||
1587 | .platform_data = &u300_gpio_plat, | ||
1588 | }, | ||
1564 | }; | 1589 | }; |
1565 | 1590 | ||
1566 | static struct platform_device keypad_device = { | 1591 | static struct platform_device keypad_device = { |
@@ -1666,7 +1691,7 @@ void __init u300_init_irq(void) | |||
1666 | BUG_ON(IS_ERR(clk)); | 1691 | BUG_ON(IS_ERR(clk)); |
1667 | clk_enable(clk); | 1692 | clk_enable(clk); |
1668 | 1693 | ||
1669 | for (i = 0; i < NR_IRQS; i++) | 1694 | for (i = 0; i < U300_VIC_IRQS_END; i++) |
1670 | set_bit(i, (unsigned long *) &mask[0]); | 1695 | set_bit(i, (unsigned long *) &mask[0]); |
1671 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], mask[0]); | 1696 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], mask[0]); |
1672 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], mask[1]); | 1697 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], mask[1]); |
diff --git a/arch/arm/mach-u300/include/mach/gpio-u300.h b/arch/arm/mach-u300/include/mach/gpio-u300.h new file mode 100644 index 000000000000..0c2b2021951a --- /dev/null +++ b/arch/arm/mach-u300/include/mach/gpio-u300.h | |||
@@ -0,0 +1,150 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007-2011 ST-Ericsson AB | ||
3 | * License terms: GNU General Public License (GPL) version 2 | ||
4 | * GPIO block resgister definitions and inline macros for | ||
5 | * U300 GPIO COH 901 335 or COH 901 571/3 | ||
6 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_U300_GPIO_U300_H | ||
10 | #define __MACH_U300_GPIO_U300_H | ||
11 | |||
12 | /* | ||
13 | * Individual pin assignments for the B26/S26. Notice that the | ||
14 | * actual usage of these pins depends on the PAD MUX settings, that | ||
15 | * is why the same number can potentially appear several times. | ||
16 | * In the reference design each pin is only used for one purpose. | ||
17 | * These were determined by inspecting the B26/S26 schematic: | ||
18 | * 2/1911-ROA 128 1603 | ||
19 | */ | ||
20 | #ifdef CONFIG_MACH_U300_BS2X | ||
21 | #define U300_GPIO_PIN_UART_RX 0 | ||
22 | #define U300_GPIO_PIN_UART_TX 1 | ||
23 | #define U300_GPIO_PIN_GPIO02 2 /* Unrouted */ | ||
24 | #define U300_GPIO_PIN_GPIO03 3 /* Unrouted */ | ||
25 | #define U300_GPIO_PIN_CAM_SLEEP 4 | ||
26 | #define U300_GPIO_PIN_CAM_REG_EN 5 | ||
27 | #define U300_GPIO_PIN_GPIO06 6 /* Unrouted */ | ||
28 | #define U300_GPIO_PIN_GPIO07 7 /* Unrouted */ | ||
29 | |||
30 | #define U300_GPIO_PIN_GPIO08 8 /* Service point SP2321 */ | ||
31 | #define U300_GPIO_PIN_GPIO09 9 /* Service point SP2322 */ | ||
32 | #define U300_GPIO_PIN_PHFSENSE 10 /* Headphone jack sensing */ | ||
33 | #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */ | ||
34 | #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */ | ||
35 | #define U300_GPIO_PIN_FLIPSENSE 13 /* Mechanical flip sensing */ | ||
36 | #define U300_GPIO_PIN_GPIO14 14 /* DSP JTAG Port RTCK */ | ||
37 | #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */ | ||
38 | |||
39 | #define U300_GPIO_PIN_GPIO16 16 /* Unrouted */ | ||
40 | #define U300_GPIO_PIN_GPIO17 17 /* Unrouted */ | ||
41 | #define U300_GPIO_PIN_GPIO18 18 /* Unrouted */ | ||
42 | #define U300_GPIO_PIN_GPIO19 19 /* Unrouted */ | ||
43 | #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */ | ||
44 | #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */ | ||
45 | #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */ | ||
46 | #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */ | ||
47 | #endif | ||
48 | |||
49 | /* | ||
50 | * Individual pin assignments for the B330/S330 and B365/S365. | ||
51 | * Notice that the actual usage of these pins depends on the | ||
52 | * PAD MUX settings, that is why the same number can potentially | ||
53 | * appear several times. In the reference design each pin is only | ||
54 | * used for one purpose. These were determined by inspecting the | ||
55 | * S365 schematic. | ||
56 | */ | ||
57 | #if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \ | ||
58 | defined(CONFIG_MACH_U300_BS335) | ||
59 | #define U300_GPIO_PIN_UART_RX 0 | ||
60 | #define U300_GPIO_PIN_UART_TX 1 | ||
61 | #define U300_GPIO_PIN_UART_CTS 2 | ||
62 | #define U300_GPIO_PIN_UART_RTS 3 | ||
63 | #define U300_GPIO_PIN_CAM_MAIN_STANDBY 4 /* Camera MAIN standby */ | ||
64 | #define U300_GPIO_PIN_GPIO05 5 /* Unrouted */ | ||
65 | #define U300_GPIO_PIN_MS_CD 6 /* Memory Stick Card insertion */ | ||
66 | #define U300_GPIO_PIN_GPIO07 7 /* Test point TP2430 */ | ||
67 | |||
68 | #define U300_GPIO_PIN_GPIO08 8 /* Test point TP2437 */ | ||
69 | #define U300_GPIO_PIN_GPIO09 9 /* Test point TP2431 */ | ||
70 | #define U300_GPIO_PIN_GPIO10 10 /* Test point TP2432 */ | ||
71 | #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */ | ||
72 | #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */ | ||
73 | #define U300_GPIO_PIN_CAM_SUB_STANDBY 13 /* Camera SUB standby */ | ||
74 | #define U300_GPIO_PIN_GPIO14 14 /* Test point TP2436 */ | ||
75 | #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */ | ||
76 | |||
77 | #define U300_GPIO_PIN_GPIO16 16 /* Test point TP2438 */ | ||
78 | #define U300_GPIO_PIN_PHFSENSE 17 /* Headphone jack sensing */ | ||
79 | #define U300_GPIO_PIN_GPIO18 18 /* Test point TP2439 */ | ||
80 | #define U300_GPIO_PIN_GPIO19 19 /* Routed somewhere */ | ||
81 | #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */ | ||
82 | #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */ | ||
83 | #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */ | ||
84 | #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */ | ||
85 | |||
86 | #define U300_GPIO_PIN_GPIO24 24 /* Unrouted */ | ||
87 | #define U300_GPIO_PIN_GPIO25 25 /* Unrouted */ | ||
88 | #define U300_GPIO_PIN_GPIO26 26 /* Unrouted */ | ||
89 | #define U300_GPIO_PIN_GPIO27 27 /* Unrouted */ | ||
90 | #define U300_GPIO_PIN_GPIO28 28 /* Unrouted */ | ||
91 | #define U300_GPIO_PIN_GPIO29 29 /* Unrouted */ | ||
92 | #define U300_GPIO_PIN_GPIO30 30 /* Unrouted */ | ||
93 | #define U300_GPIO_PIN_GPIO31 31 /* Unrouted */ | ||
94 | |||
95 | #define U300_GPIO_PIN_GPIO32 32 /* Unrouted */ | ||
96 | #define U300_GPIO_PIN_GPIO33 33 /* Unrouted */ | ||
97 | #define U300_GPIO_PIN_GPIO34 34 /* Unrouted */ | ||
98 | #define U300_GPIO_PIN_GPIO35 35 /* Unrouted */ | ||
99 | #define U300_GPIO_PIN_GPIO36 36 /* Unrouted */ | ||
100 | #define U300_GPIO_PIN_GPIO37 37 /* Unrouted */ | ||
101 | #define U300_GPIO_PIN_GPIO38 38 /* Unrouted */ | ||
102 | #define U300_GPIO_PIN_GPIO39 39 /* Unrouted */ | ||
103 | |||
104 | #ifdef CONFIG_MACH_U300_BS335 | ||
105 | |||
106 | #define U300_GPIO_PIN_GPIO40 40 /* Unrouted */ | ||
107 | #define U300_GPIO_PIN_GPIO41 41 /* Unrouted */ | ||
108 | #define U300_GPIO_PIN_GPIO42 42 /* Unrouted */ | ||
109 | #define U300_GPIO_PIN_GPIO43 43 /* Unrouted */ | ||
110 | #define U300_GPIO_PIN_GPIO44 44 /* Unrouted */ | ||
111 | #define U300_GPIO_PIN_GPIO45 45 /* Unrouted */ | ||
112 | #define U300_GPIO_PIN_GPIO46 46 /* Unrouted */ | ||
113 | #define U300_GPIO_PIN_GPIO47 47 /* Unrouted */ | ||
114 | |||
115 | #define U300_GPIO_PIN_GPIO48 48 /* Unrouted */ | ||
116 | #define U300_GPIO_PIN_GPIO49 49 /* Unrouted */ | ||
117 | #define U300_GPIO_PIN_GPIO50 50 /* Unrouted */ | ||
118 | #define U300_GPIO_PIN_GPIO51 51 /* Unrouted */ | ||
119 | #define U300_GPIO_PIN_GPIO52 52 /* Unrouted */ | ||
120 | #define U300_GPIO_PIN_GPIO53 53 /* Unrouted */ | ||
121 | #define U300_GPIO_PIN_GPIO54 54 /* Unrouted */ | ||
122 | #define U300_GPIO_PIN_GPIO55 55 /* Unrouted */ | ||
123 | #endif | ||
124 | |||
125 | #endif | ||
126 | |||
127 | /** | ||
128 | * enum u300_gpio_variant - the type of U300 GPIO employed | ||
129 | */ | ||
130 | enum u300_gpio_variant { | ||
131 | U300_GPIO_COH901335, | ||
132 | U300_GPIO_COH901571_3_BS335, | ||
133 | U300_GPIO_COH901571_3_BS365, | ||
134 | }; | ||
135 | |||
136 | /** | ||
137 | * struct u300_gpio_platform - U300 GPIO platform data | ||
138 | * @variant: IP block variant | ||
139 | * @ports: number of GPIO block ports | ||
140 | * @gpio_base: first GPIO number for this block (use a free range) | ||
141 | * @gpio_irq_base: first GPIO IRQ number for this block (use a free range) | ||
142 | */ | ||
143 | struct u300_gpio_platform { | ||
144 | enum u300_gpio_variant variant; | ||
145 | u8 ports; | ||
146 | int gpio_base; | ||
147 | int gpio_irq_base; | ||
148 | }; | ||
149 | |||
150 | #endif /* __MACH_U300_GPIO_U300_H */ | ||
diff --git a/arch/arm/mach-u300/include/mach/gpio.h b/arch/arm/mach-u300/include/mach/gpio.h index d5a71abcbaea..e69de29bb2d1 100644 --- a/arch/arm/mach-u300/include/mach/gpio.h +++ b/arch/arm/mach-u300/include/mach/gpio.h | |||
@@ -1,294 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * arch/arm/mach-u300/include/mach/gpio.h | ||
4 | * | ||
5 | * | ||
6 | * Copyright (C) 2007-2009 ST-Ericsson AB | ||
7 | * License terms: GNU General Public License (GPL) version 2 | ||
8 | * GPIO block resgister definitions and inline macros for | ||
9 | * U300 GPIO COH 901 335 or COH 901 571/3 | ||
10 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
11 | */ | ||
12 | |||
13 | #ifndef __MACH_U300_GPIO_H | ||
14 | #define __MACH_U300_GPIO_H | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/io.h> | ||
18 | #include <mach/hardware.h> | ||
19 | #include <asm/irq.h> | ||
20 | |||
21 | /* Switch type depending on platform/chip variant */ | ||
22 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | ||
23 | #define U300_COH901335 | ||
24 | #endif | ||
25 | #if defined(CONFIG_MACH_U300_BS365) || defined(CONFIG_MACH_U300_BS335) | ||
26 | #define U300_COH901571_3 | ||
27 | #endif | ||
28 | |||
29 | /* Get base address for regs here */ | ||
30 | #include "u300-regs.h" | ||
31 | /* IRQ numbers */ | ||
32 | #include "irqs.h" | ||
33 | |||
34 | /* | ||
35 | * This is the GPIO block definitions. GPIO (General Purpose I/O) can be | ||
36 | * used for anything, and often is. The event/enable etc figures are for | ||
37 | * the lowermost pin (pin 0 on each port), shift this left to match your | ||
38 | * pin if you're gonna use these values. | ||
39 | */ | ||
40 | #ifdef U300_COH901335 | ||
41 | #define U300_GPIO_PORTX_SPACING (0x1C) | ||
42 | /* Port X Pin Data Register 32bit, this is both input and output (R/W) */ | ||
43 | #define U300_GPIO_PXPDIR (0x00) | ||
44 | #define U300_GPIO_PXPDOR (0x00) | ||
45 | /* Port X Pin Config Register 32bit (R/W) */ | ||
46 | #define U300_GPIO_PXPCR (0x04) | ||
47 | #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL) | ||
48 | #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL) | ||
49 | #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL) | ||
50 | #define U300_GPIO_PXPCR_PIN_MODE_INPUT (0x00000000UL) | ||
51 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL) | ||
52 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL) | ||
53 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL) | ||
54 | /* Port X Interrupt Event Register 32bit (R/W) */ | ||
55 | #define U300_GPIO_PXIEV (0x08) | ||
56 | #define U300_GPIO_PXIEV_ALL_IRQ_EVENT_MASK (0x000000FFUL) | ||
57 | #define U300_GPIO_PXIEV_IRQ_EVENT (0x00000001UL) | ||
58 | /* Port X Interrupt Enable Register 32bit (R/W) */ | ||
59 | #define U300_GPIO_PXIEN (0x0C) | ||
60 | #define U300_GPIO_PXIEN_ALL_IRQ_ENABLE_MASK (0x000000FFUL) | ||
61 | #define U300_GPIO_PXIEN_IRQ_ENABLE (0x00000001UL) | ||
62 | /* Port X Interrupt Force Register 32bit (R/W) */ | ||
63 | #define U300_GPIO_PXIFR (0x10) | ||
64 | #define U300_GPIO_PXIFR_ALL_IRQ_FORCE_MASK (0x000000FFUL) | ||
65 | #define U300_GPIO_PXIFR_IRQ_FORCE (0x00000001UL) | ||
66 | /* Port X Interrupt Config Register 32bit (R/W) */ | ||
67 | #define U300_GPIO_PXICR (0x14) | ||
68 | #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL) | ||
69 | #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL) | ||
70 | #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL) | ||
71 | #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL) | ||
72 | /* Port X Pull-up Enable Register 32bit (R/W) */ | ||
73 | #define U300_GPIO_PXPER (0x18) | ||
74 | #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL) | ||
75 | #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL) | ||
76 | /* Control Register 32bit (R/W) */ | ||
77 | #define U300_GPIO_CR (0x54) | ||
78 | #define U300_GPIO_CR_BLOCK_CLOCK_ENABLE (0x00000001UL) | ||
79 | /* three ports of 8 bits each = GPIO pins 0..23 */ | ||
80 | #define U300_GPIO_NUM_PORTS 3 | ||
81 | #define U300_GPIO_PINS_PER_PORT 8 | ||
82 | #define U300_GPIO_MAX (U300_GPIO_PINS_PER_PORT * U300_GPIO_NUM_PORTS - 1) | ||
83 | #endif | ||
84 | |||
85 | #ifdef U300_COH901571_3 | ||
86 | /* | ||
87 | * Control Register 32bit (R/W) | ||
88 | * bit 15-9 (mask 0x0000FE00) contains the number of cores. 8*cores | ||
89 | * gives the number of GPIO pins. | ||
90 | * bit 8-2 (mask 0x000001FC) contains the core version ID. | ||
91 | */ | ||
92 | #define U300_GPIO_CR (0x00) | ||
93 | #define U300_GPIO_CR_SYNC_SEL_ENABLE (0x00000002UL) | ||
94 | #define U300_GPIO_CR_BLOCK_CLKRQ_ENABLE (0x00000001UL) | ||
95 | #define U300_GPIO_PORTX_SPACING (0x30) | ||
96 | /* Port X Pin Data INPUT Register 32bit (R/W) */ | ||
97 | #define U300_GPIO_PXPDIR (0x04) | ||
98 | /* Port X Pin Data OUTPUT Register 32bit (R/W) */ | ||
99 | #define U300_GPIO_PXPDOR (0x08) | ||
100 | /* Port X Pin Config Register 32bit (R/W) */ | ||
101 | #define U300_GPIO_PXPCR (0x0C) | ||
102 | #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL) | ||
103 | #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL) | ||
104 | #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL) | ||
105 | #define U300_GPIO_PXPCR_PIN_MODE_INPUT (0x00000000UL) | ||
106 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL) | ||
107 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL) | ||
108 | #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL) | ||
109 | /* Port X Pull-up Enable Register 32bit (R/W) */ | ||
110 | #define U300_GPIO_PXPER (0x10) | ||
111 | #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL) | ||
112 | #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL) | ||
113 | /* Port X Interrupt Event Register 32bit (R/W) */ | ||
114 | #define U300_GPIO_PXIEV (0x14) | ||
115 | #define U300_GPIO_PXIEV_ALL_IRQ_EVENT_MASK (0x000000FFUL) | ||
116 | #define U300_GPIO_PXIEV_IRQ_EVENT (0x00000001UL) | ||
117 | /* Port X Interrupt Enable Register 32bit (R/W) */ | ||
118 | #define U300_GPIO_PXIEN (0x18) | ||
119 | #define U300_GPIO_PXIEN_ALL_IRQ_ENABLE_MASK (0x000000FFUL) | ||
120 | #define U300_GPIO_PXIEN_IRQ_ENABLE (0x00000001UL) | ||
121 | /* Port X Interrupt Force Register 32bit (R/W) */ | ||
122 | #define U300_GPIO_PXIFR (0x1C) | ||
123 | #define U300_GPIO_PXIFR_ALL_IRQ_FORCE_MASK (0x000000FFUL) | ||
124 | #define U300_GPIO_PXIFR_IRQ_FORCE (0x00000001UL) | ||
125 | /* Port X Interrupt Config Register 32bit (R/W) */ | ||
126 | #define U300_GPIO_PXICR (0x20) | ||
127 | #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL) | ||
128 | #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL) | ||
129 | #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL) | ||
130 | #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL) | ||
131 | #ifdef CONFIG_MACH_U300_BS335 | ||
132 | /* seven ports of 8 bits each = GPIO pins 0..55 */ | ||
133 | #define U300_GPIO_NUM_PORTS 7 | ||
134 | #else | ||
135 | /* five ports of 8 bits each = GPIO pins 0..39 */ | ||
136 | #define U300_GPIO_NUM_PORTS 5 | ||
137 | #endif | ||
138 | #define U300_GPIO_PINS_PER_PORT 8 | ||
139 | #define U300_GPIO_MAX (U300_GPIO_PINS_PER_PORT * U300_GPIO_NUM_PORTS - 1) | ||
140 | #endif | ||
141 | |||
142 | /* | ||
143 | * Individual pin assignments for the B26/S26. Notice that the | ||
144 | * actual usage of these pins depends on the PAD MUX settings, that | ||
145 | * is why the same number can potentially appear several times. | ||
146 | * In the reference design each pin is only used for one purpose. | ||
147 | * These were determined by inspecting the B26/S26 schematic: | ||
148 | * 2/1911-ROA 128 1603 | ||
149 | */ | ||
150 | #ifdef CONFIG_MACH_U300_BS2X | ||
151 | #define U300_GPIO_PIN_UART_RX 0 | ||
152 | #define U300_GPIO_PIN_UART_TX 1 | ||
153 | #define U300_GPIO_PIN_GPIO02 2 /* Unrouted */ | ||
154 | #define U300_GPIO_PIN_GPIO03 3 /* Unrouted */ | ||
155 | #define U300_GPIO_PIN_CAM_SLEEP 4 | ||
156 | #define U300_GPIO_PIN_CAM_REG_EN 5 | ||
157 | #define U300_GPIO_PIN_GPIO06 6 /* Unrouted */ | ||
158 | #define U300_GPIO_PIN_GPIO07 7 /* Unrouted */ | ||
159 | |||
160 | #define U300_GPIO_PIN_GPIO08 8 /* Service point SP2321 */ | ||
161 | #define U300_GPIO_PIN_GPIO09 9 /* Service point SP2322 */ | ||
162 | #define U300_GPIO_PIN_PHFSENSE 10 /* Headphone jack sensing */ | ||
163 | #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */ | ||
164 | #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */ | ||
165 | #define U300_GPIO_PIN_FLIPSENSE 13 /* Mechanical flip sensing */ | ||
166 | #define U300_GPIO_PIN_GPIO14 14 /* DSP JTAG Port RTCK */ | ||
167 | #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */ | ||
168 | |||
169 | #define U300_GPIO_PIN_GPIO16 16 /* Unrouted */ | ||
170 | #define U300_GPIO_PIN_GPIO17 17 /* Unrouted */ | ||
171 | #define U300_GPIO_PIN_GPIO18 18 /* Unrouted */ | ||
172 | #define U300_GPIO_PIN_GPIO19 19 /* Unrouted */ | ||
173 | #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */ | ||
174 | #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */ | ||
175 | #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */ | ||
176 | #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */ | ||
177 | #endif | ||
178 | |||
179 | /* | ||
180 | * Individual pin assignments for the B330/S330 and B365/S365. | ||
181 | * Notice that the actual usage of these pins depends on the | ||
182 | * PAD MUX settings, that is why the same number can potentially | ||
183 | * appear several times. In the reference design each pin is only | ||
184 | * used for one purpose. These were determined by inspecting the | ||
185 | * S365 schematic. | ||
186 | */ | ||
187 | #if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \ | ||
188 | defined(CONFIG_MACH_U300_BS335) | ||
189 | #define U300_GPIO_PIN_UART_RX 0 | ||
190 | #define U300_GPIO_PIN_UART_TX 1 | ||
191 | #define U300_GPIO_PIN_UART_CTS 2 | ||
192 | #define U300_GPIO_PIN_UART_RTS 3 | ||
193 | #define U300_GPIO_PIN_CAM_MAIN_STANDBY 4 /* Camera MAIN standby */ | ||
194 | #define U300_GPIO_PIN_GPIO05 5 /* Unrouted */ | ||
195 | #define U300_GPIO_PIN_MS_CD 6 /* Memory Stick Card insertion */ | ||
196 | #define U300_GPIO_PIN_GPIO07 7 /* Test point TP2430 */ | ||
197 | |||
198 | #define U300_GPIO_PIN_GPIO08 8 /* Test point TP2437 */ | ||
199 | #define U300_GPIO_PIN_GPIO09 9 /* Test point TP2431 */ | ||
200 | #define U300_GPIO_PIN_GPIO10 10 /* Test point TP2432 */ | ||
201 | #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */ | ||
202 | #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */ | ||
203 | #define U300_GPIO_PIN_CAM_SUB_STANDBY 13 /* Camera SUB standby */ | ||
204 | #define U300_GPIO_PIN_GPIO14 14 /* Test point TP2436 */ | ||
205 | #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */ | ||
206 | |||
207 | #define U300_GPIO_PIN_GPIO16 16 /* Test point TP2438 */ | ||
208 | #define U300_GPIO_PIN_PHFSENSE 17 /* Headphone jack sensing */ | ||
209 | #define U300_GPIO_PIN_GPIO18 18 /* Test point TP2439 */ | ||
210 | #define U300_GPIO_PIN_GPIO19 19 /* Routed somewhere */ | ||
211 | #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */ | ||
212 | #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */ | ||
213 | #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */ | ||
214 | #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */ | ||
215 | |||
216 | #define U300_GPIO_PIN_GPIO24 24 /* Unrouted */ | ||
217 | #define U300_GPIO_PIN_GPIO25 25 /* Unrouted */ | ||
218 | #define U300_GPIO_PIN_GPIO26 26 /* Unrouted */ | ||
219 | #define U300_GPIO_PIN_GPIO27 27 /* Unrouted */ | ||
220 | #define U300_GPIO_PIN_GPIO28 28 /* Unrouted */ | ||
221 | #define U300_GPIO_PIN_GPIO29 29 /* Unrouted */ | ||
222 | #define U300_GPIO_PIN_GPIO30 30 /* Unrouted */ | ||
223 | #define U300_GPIO_PIN_GPIO31 31 /* Unrouted */ | ||
224 | |||
225 | #define U300_GPIO_PIN_GPIO32 32 /* Unrouted */ | ||
226 | #define U300_GPIO_PIN_GPIO33 33 /* Unrouted */ | ||
227 | #define U300_GPIO_PIN_GPIO34 34 /* Unrouted */ | ||
228 | #define U300_GPIO_PIN_GPIO35 35 /* Unrouted */ | ||
229 | #define U300_GPIO_PIN_GPIO36 36 /* Unrouted */ | ||
230 | #define U300_GPIO_PIN_GPIO37 37 /* Unrouted */ | ||
231 | #define U300_GPIO_PIN_GPIO38 38 /* Unrouted */ | ||
232 | #define U300_GPIO_PIN_GPIO39 39 /* Unrouted */ | ||
233 | |||
234 | #ifdef CONFIG_MACH_U300_BS335 | ||
235 | |||
236 | #define U300_GPIO_PIN_GPIO40 40 /* Unrouted */ | ||
237 | #define U300_GPIO_PIN_GPIO41 41 /* Unrouted */ | ||
238 | #define U300_GPIO_PIN_GPIO42 42 /* Unrouted */ | ||
239 | #define U300_GPIO_PIN_GPIO43 43 /* Unrouted */ | ||
240 | #define U300_GPIO_PIN_GPIO44 44 /* Unrouted */ | ||
241 | #define U300_GPIO_PIN_GPIO45 45 /* Unrouted */ | ||
242 | #define U300_GPIO_PIN_GPIO46 46 /* Unrouted */ | ||
243 | #define U300_GPIO_PIN_GPIO47 47 /* Unrouted */ | ||
244 | |||
245 | #define U300_GPIO_PIN_GPIO48 48 /* Unrouted */ | ||
246 | #define U300_GPIO_PIN_GPIO49 49 /* Unrouted */ | ||
247 | #define U300_GPIO_PIN_GPIO50 50 /* Unrouted */ | ||
248 | #define U300_GPIO_PIN_GPIO51 51 /* Unrouted */ | ||
249 | #define U300_GPIO_PIN_GPIO52 52 /* Unrouted */ | ||
250 | #define U300_GPIO_PIN_GPIO53 53 /* Unrouted */ | ||
251 | #define U300_GPIO_PIN_GPIO54 54 /* Unrouted */ | ||
252 | #define U300_GPIO_PIN_GPIO55 55 /* Unrouted */ | ||
253 | #endif | ||
254 | |||
255 | #endif | ||
256 | |||
257 | /* translates a pin number to a port number */ | ||
258 | #define PIN_TO_PORT(val) (val >> 3) | ||
259 | |||
260 | /* These can be found in arch/arm/mach-u300/gpio.c */ | ||
261 | extern int gpio_is_valid(int number); | ||
262 | extern int gpio_request(unsigned gpio, const char *label); | ||
263 | extern void gpio_free(unsigned gpio); | ||
264 | extern int gpio_direction_input(unsigned gpio); | ||
265 | extern int gpio_direction_output(unsigned gpio, int value); | ||
266 | extern int gpio_register_callback(unsigned gpio, | ||
267 | int (*func)(void *arg), | ||
268 | void *); | ||
269 | extern int gpio_unregister_callback(unsigned gpio); | ||
270 | extern void enable_irq_on_gpio_pin(unsigned gpio, int edge); | ||
271 | extern void disable_irq_on_gpio_pin(unsigned gpio); | ||
272 | extern void gpio_pullup(unsigned gpio, int value); | ||
273 | extern int gpio_get_value(unsigned gpio); | ||
274 | extern void gpio_set_value(unsigned gpio, int value); | ||
275 | |||
276 | #define gpio_get_value_cansleep gpio_get_value | ||
277 | #define gpio_set_value_cansleep gpio_set_value | ||
278 | |||
279 | /* wrappers to sleep-enable the previous two functions */ | ||
280 | static inline unsigned gpio_to_irq(unsigned gpio) | ||
281 | { | ||
282 | return PIN_TO_PORT(gpio) + IRQ_U300_GPIO_PORT0; | ||
283 | } | ||
284 | |||
285 | static inline unsigned irq_to_gpio(unsigned irq) | ||
286 | { | ||
287 | /* | ||
288 | * FIXME: This is no 1-1 mapping at all, it points to the | ||
289 | * whole block of 8 pins. | ||
290 | */ | ||
291 | return (irq - IRQ_U300_GPIO_PORT0) << 3; | ||
292 | } | ||
293 | |||
294 | #endif | ||
diff --git a/arch/arm/mach-u300/include/mach/irqs.h b/arch/arm/mach-u300/include/mach/irqs.h index 09b1b28fa8fd..d270fea32926 100644 --- a/arch/arm/mach-u300/include/mach/irqs.h +++ b/arch/arm/mach-u300/include/mach/irqs.h | |||
@@ -72,7 +72,7 @@ | |||
72 | 72 | ||
73 | /* DB3150 and DB3200 have only 45 IRQs */ | 73 | /* DB3150 and DB3200 have only 45 IRQs */ |
74 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) | 74 | #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330) |
75 | #define U300_NR_IRQS 45 | 75 | #define U300_VIC_IRQS_END 45 |
76 | #endif | 76 | #endif |
77 | 77 | ||
78 | /* The DB3350-specific interrupt lines */ | 78 | /* The DB3350-specific interrupt lines */ |
@@ -88,7 +88,7 @@ | |||
88 | #define IRQ_U300_GPIO_PORT4 53 | 88 | #define IRQ_U300_GPIO_PORT4 53 |
89 | #define IRQ_U300_GPIO_PORT5 54 | 89 | #define IRQ_U300_GPIO_PORT5 54 |
90 | #define IRQ_U300_GPIO_PORT6 55 | 90 | #define IRQ_U300_GPIO_PORT6 55 |
91 | #define U300_NR_IRQS 56 | 91 | #define U300_VIC_IRQS_END 56 |
92 | #endif | 92 | #endif |
93 | 93 | ||
94 | /* The DB3210-specific interrupt lines */ | 94 | /* The DB3210-specific interrupt lines */ |
@@ -106,16 +106,25 @@ | |||
106 | #define IRQ_U300_NFIF 45 | 106 | #define IRQ_U300_NFIF 45 |
107 | #define IRQ_U300_NFIF2 46 | 107 | #define IRQ_U300_NFIF2 46 |
108 | #define IRQ_U300_SYSCON_PLL_LOCK 47 | 108 | #define IRQ_U300_SYSCON_PLL_LOCK 47 |
109 | #define U300_NR_IRQS 48 | 109 | #define U300_VIC_IRQS_END 48 |
110 | #endif | 110 | #endif |
111 | 111 | ||
112 | #ifdef CONFIG_AB3550_CORE | 112 | /* Maximum 8*7 GPIO lines */ |
113 | #define IRQ_AB3550_BASE (U300_NR_IRQS) | 113 | #ifdef CONFIG_GPIO_U300 |
114 | #define IRQ_AB3550_END (IRQ_AB3550_BASE + 37) | 114 | #define IRQ_U300_GPIO_BASE (U300_VIC_IRQS_END) |
115 | #define IRQ_U300_GPIO_END (IRQ_U300_GPIO_BASE + 56) | ||
116 | #else | ||
117 | #define IRQ_U300_GPIO_END (U300_VIC_IRQS_END) | ||
118 | #endif | ||
115 | 119 | ||
116 | #define NR_IRQS (IRQ_AB3550_END + 1) | 120 | /* Optional AB3550 mixsig chip */ |
121 | #ifdef CONFIG_AB3550_CORE | ||
122 | #define IRQ_AB3550_BASE (IRQ_U300_GPIO_END) | ||
123 | #define IRQ_AB3550_END (IRQ_AB3550_BASE + 38) | ||
117 | #else | 124 | #else |
118 | #define NR_IRQS U300_NR_IRQS | 125 | #define IRQ_AB3550_END (IRQ_U300_GPIO_END) |
119 | #endif | 126 | #endif |
120 | 127 | ||
128 | #define NR_IRQS (IRQ_AB3550_END) | ||
129 | |||
121 | #endif | 130 | #endif |
diff --git a/arch/arm/mach-u300/mmc.c b/arch/arm/mach-u300/mmc.c index 677ccef5cd32..d9a5c92db74a 100644 --- a/arch/arm/mach-u300/mmc.c +++ b/arch/arm/mach-u300/mmc.c | |||
@@ -13,12 +13,12 @@ | |||
13 | #include <linux/device.h> | 13 | #include <linux/device.h> |
14 | #include <linux/amba/bus.h> | 14 | #include <linux/amba/bus.h> |
15 | #include <linux/mmc/host.h> | 15 | #include <linux/mmc/host.h> |
16 | #include <linux/gpio.h> | ||
17 | #include <linux/dmaengine.h> | 16 | #include <linux/dmaengine.h> |
18 | #include <linux/amba/mmci.h> | 17 | #include <linux/amba/mmci.h> |
19 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
20 | #include <mach/coh901318.h> | 19 | #include <mach/coh901318.h> |
21 | #include <mach/dma_channels.h> | 20 | #include <mach/dma_channels.h> |
21 | #include <mach/gpio-u300.h> | ||
22 | 22 | ||
23 | #include "mmc.h" | 23 | #include "mmc.h" |
24 | #include "padmux.h" | 24 | #include "padmux.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index f26fd76f72b4..15b23e4bd488 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c | |||
@@ -6,10 +6,10 @@ | |||
6 | 6 | ||
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/gpio.h> | ||
10 | 9 | ||
11 | #include <asm/mach-types.h> | 10 | #include <asm/mach-types.h> |
12 | #include <plat/pincfg.h> | 11 | #include <plat/pincfg.h> |
12 | #include <plat/gpio-nomadik.h> | ||
13 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
14 | 14 | ||
15 | #include "pins-db8500.h" | 15 | #include "pins-db8500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index 8ce46c0fdfd5..feb5744d98b7 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Board data for the U8500 UIB, also known as the New UIB | 4 | * Board data for the U8500 UIB, also known as the New UIB |
5 | * License terms: GNU General Public License (GPL), version 2 | 5 | * License terms: GNU General Public License (GPL), version 2 |
6 | */ | 6 | */ |
7 | 7 | #include <linux/gpio.h> | |
8 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
9 | #include <linux/init.h> | 9 | #include <linux/init.h> |
10 | #include <linux/i2c.h> | 10 | #include <linux/i2c.h> |
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/mfd/tc3589x.h> | 13 | #include <linux/mfd/tc3589x.h> |
14 | #include <linux/input/matrix_keypad.h> | 14 | #include <linux/input/matrix_keypad.h> |
15 | 15 | ||
16 | #include <mach/gpio.h> | ||
17 | #include <mach/irqs.h> | 16 | #include <mach/irqs.h> |
18 | 17 | ||
19 | #include "board-mop500.h" | 18 | #include "board-mop500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index cd54abaccd96..537ab63c1dc9 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <plat/i2c.h> | 37 | #include <plat/i2c.h> |
38 | #include <plat/ste_dma40.h> | 38 | #include <plat/ste_dma40.h> |
39 | #include <plat/pincfg.h> | 39 | #include <plat/pincfg.h> |
40 | #include <plat/gpio-nomadik.h> | ||
40 | 41 | ||
41 | #include <mach/hardware.h> | 42 | #include <mach/hardware.h> |
42 | #include <mach/setup.h> | 43 | #include <mach/setup.h> |
diff --git a/arch/arm/mach-ux500/board-u5500-sdi.c b/arch/arm/mach-ux500/board-u5500-sdi.c index 739fb4c5b160..63c3f8058ffc 100644 --- a/arch/arm/mach-ux500/board-u5500-sdi.c +++ b/arch/arm/mach-ux500/board-u5500-sdi.c | |||
@@ -7,9 +7,9 @@ | |||
7 | 7 | ||
8 | #include <linux/amba/mmci.h> | 8 | #include <linux/amba/mmci.h> |
9 | #include <linux/mmc/host.h> | 9 | #include <linux/mmc/host.h> |
10 | #include <linux/gpio.h> | ||
11 | 10 | ||
12 | #include <plat/pincfg.h> | 11 | #include <plat/pincfg.h> |
12 | #include <plat/gpio-nomadik.h> | ||
13 | #include <mach/db5500-regs.h> | 13 | #include <mach/db5500-regs.h> |
14 | #include <plat/ste_dma40.h> | 14 | #include <plat/ste_dma40.h> |
15 | 15 | ||
diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c index e58f0f562426..2d9e191bd30a 100644 --- a/arch/arm/mach-ux500/board-u5500.c +++ b/arch/arm/mach-ux500/board-u5500.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/platform_device.h> | 9 | #include <linux/platform_device.h> |
10 | #include <linux/amba/bus.h> | 10 | #include <linux/amba/bus.h> |
11 | #include <linux/gpio.h> | ||
12 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
13 | #include <linux/i2c.h> | 12 | #include <linux/i2c.h> |
14 | 13 | ||
@@ -17,6 +16,7 @@ | |||
17 | 16 | ||
18 | #include <plat/pincfg.h> | 17 | #include <plat/pincfg.h> |
19 | #include <plat/i2c.h> | 18 | #include <plat/i2c.h> |
19 | #include <plat/gpio-nomadik.h> | ||
20 | 20 | ||
21 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
22 | #include <mach/devices.h> | 22 | #include <mach/devices.h> |
diff --git a/arch/arm/mach-ux500/cpu-db5500.c b/arch/arm/mach-ux500/cpu-db5500.c index 22705d246fc7..9de1af008094 100644 --- a/arch/arm/mach-ux500/cpu-db5500.c +++ b/arch/arm/mach-ux500/cpu-db5500.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | #include <asm/pmu.h> | 14 | #include <asm/pmu.h> |
15 | 15 | ||
16 | #include <plat/gpio.h> | 16 | #include <plat/gpio-nomadik.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | #include <mach/devices.h> | 19 | #include <mach/devices.h> |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 4598b06c8c55..13e8890a8b8a 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -14,12 +14,12 @@ | |||
14 | #include <linux/amba/bus.h> | 14 | #include <linux/amba/bus.h> |
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/gpio.h> | ||
18 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
19 | #include <linux/io.h> | 18 | #include <linux/io.h> |
20 | 19 | ||
21 | #include <asm/mach/map.h> | 20 | #include <asm/mach/map.h> |
22 | #include <asm/pmu.h> | 21 | #include <asm/pmu.h> |
22 | #include <plat/gpio-nomadik.h> | ||
23 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
24 | #include <mach/setup.h> | 24 | #include <mach/setup.h> |
25 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c index 13a4ce046ae5..c563e5418d80 100644 --- a/arch/arm/mach-ux500/devices-common.c +++ b/arch/arm/mach-ux500/devices-common.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/amba/bus.h> | 14 | #include <linux/amba/bus.h> |
15 | 15 | ||
16 | #include <plat/gpio.h> | 16 | #include <plat/gpio-nomadik.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | 19 | ||
diff --git a/arch/arm/mach-ux500/include/mach/gpio.h b/arch/arm/mach-ux500/include/mach/gpio.h index 3c4cd31ad9f7..7389df911b1a 100644 --- a/arch/arm/mach-ux500/include/mach/gpio.h +++ b/arch/arm/mach-ux500/include/mach/gpio.h | |||
@@ -7,6 +7,4 @@ | |||
7 | */ | 7 | */ |
8 | #define ARCH_NR_GPIOS 350 | 8 | #define ARCH_NR_GPIOS 350 |
9 | 9 | ||
10 | #include <plat/gpio.h> | ||
11 | |||
12 | #endif /* __ASM_ARCH_GPIO_H */ | 10 | #endif /* __ASM_ARCH_GPIO_H */ |
diff --git a/arch/arm/mach-versatile/include/mach/gpio.h b/arch/arm/mach-versatile/include/mach/gpio.h index 94ff27678a46..40a8c178f10d 100644 --- a/arch/arm/mach-versatile/include/mach/gpio.h +++ b/arch/arm/mach-versatile/include/mach/gpio.h | |||
@@ -1,6 +1 @@ | |||
1 | #include <asm-generic/gpio.h> | /* empty */ | |
2 | |||
3 | #define gpio_get_value __gpio_get_value | ||
4 | #define gpio_set_value __gpio_set_value | ||
5 | #define gpio_cansleep __gpio_cansleep | ||
6 | #define gpio_to_irq __gpio_to_irq | ||
diff --git a/arch/arm/mach-vt8500/include/mach/gpio.h b/arch/arm/mach-vt8500/include/mach/gpio.h index 94ff27678a46..40a8c178f10d 100644 --- a/arch/arm/mach-vt8500/include/mach/gpio.h +++ b/arch/arm/mach-vt8500/include/mach/gpio.h | |||
@@ -1,6 +1 @@ | |||
1 | #include <asm-generic/gpio.h> | /* empty */ | |
2 | |||
3 | #define gpio_get_value __gpio_get_value | ||
4 | #define gpio_set_value __gpio_set_value | ||
5 | #define gpio_cansleep __gpio_cansleep | ||
6 | #define gpio_to_irq __gpio_to_irq | ||
diff --git a/arch/arm/mach-w90x900/include/mach/gpio.h b/arch/arm/mach-w90x900/include/mach/gpio.h index 034da3e390c9..5385a4203277 100644 --- a/arch/arm/mach-w90x900/include/mach/gpio.h +++ b/arch/arm/mach-w90x900/include/mach/gpio.h | |||
@@ -15,16 +15,12 @@ | |||
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <asm/irq.h> | 17 | #include <asm/irq.h> |
18 | #include <asm-generic/gpio.h> | ||
19 | |||
20 | #define gpio_get_value __gpio_get_value | ||
21 | #define gpio_set_value __gpio_set_value | ||
22 | #define gpio_cansleep __gpio_cansleep | ||
23 | 18 | ||
24 | static inline int gpio_to_irq(unsigned gpio) | 19 | static inline int gpio_to_irq(unsigned gpio) |
25 | { | 20 | { |
26 | return gpio; | 21 | return gpio; |
27 | } | 22 | } |
23 | #define gpio_to_irq gpio_to_irq | ||
28 | 24 | ||
29 | static inline int irq_to_gpio(unsigned irq) | 25 | static inline int irq_to_gpio(unsigned irq) |
30 | { | 26 | { |
diff --git a/arch/arm/plat-mxc/include/mach/gpio.h b/arch/arm/plat-mxc/include/mach/gpio.h index 31c820c1b796..3e1ffc8b8f0c 100644 --- a/arch/arm/plat-mxc/include/mach/gpio.h +++ b/arch/arm/plat-mxc/include/mach/gpio.h | |||
@@ -21,18 +21,12 @@ | |||
21 | 21 | ||
22 | #include <linux/spinlock.h> | 22 | #include <linux/spinlock.h> |
23 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
24 | #include <asm-generic/gpio.h> | ||
25 | 24 | ||
26 | 25 | ||
27 | /* There's a off-by-one betweem the gpio bank number and the gpiochip */ | 26 | /* There's a off-by-one betweem the gpio bank number and the gpiochip */ |
28 | /* range e.g. GPIO_1_5 is gpio 5 under linux */ | 27 | /* range e.g. GPIO_1_5 is gpio 5 under linux */ |
29 | #define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr)) | 28 | #define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr)) |
30 | 29 | ||
31 | /* use gpiolib dispatchers */ | ||
32 | #define gpio_get_value __gpio_get_value | ||
33 | #define gpio_set_value __gpio_set_value | ||
34 | #define gpio_cansleep __gpio_cansleep | ||
35 | |||
36 | #define gpio_to_irq(gpio) (MXC_GPIO_IRQ_START + (gpio)) | 30 | #define gpio_to_irq(gpio) (MXC_GPIO_IRQ_START + (gpio)) |
37 | #define irq_to_gpio(irq) ((irq) - MXC_GPIO_IRQ_START) | 31 | #define irq_to_gpio(irq) ((irq) - MXC_GPIO_IRQ_START) |
38 | 32 | ||
diff --git a/arch/arm/plat-nomadik/include/plat/gpio.h b/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h index d5d7e651269c..3ba4d8f8073b 100644 --- a/arch/arm/plat-nomadik/include/plat/gpio.h +++ b/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h | |||
@@ -9,20 +9,9 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | #ifndef __ASM_PLAT_GPIO_H | ||
13 | #define __ASM_PLAT_GPIO_H | ||
14 | 12 | ||
15 | #include <asm-generic/gpio.h> | 13 | #ifndef __PLAT_NOMADIK_GPIO |
16 | 14 | #define __PLAT_NOMADIK_GPIO | |
17 | /* | ||
18 | * These currently cause a function call to happen, they may be optimized | ||
19 | * if needed by adding cpu-specific defines to identify blocks | ||
20 | * (see mach-pxa/include/mach/gpio.h as an example using GPLR etc) | ||
21 | */ | ||
22 | #define gpio_get_value __gpio_get_value | ||
23 | #define gpio_set_value __gpio_set_value | ||
24 | #define gpio_cansleep __gpio_cansleep | ||
25 | #define gpio_to_irq __gpio_to_irq | ||
26 | 15 | ||
27 | /* | 16 | /* |
28 | * "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving | 17 | * "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving |
@@ -93,4 +82,4 @@ struct nmk_gpio_platform_data { | |||
93 | bool supports_sleepmode; | 82 | bool supports_sleepmode; |
94 | }; | 83 | }; |
95 | 84 | ||
96 | #endif /* __ASM_PLAT_GPIO_H */ | 85 | #endif /* __PLAT_NOMADIK_GPIO */ |
diff --git a/arch/arm/plat-omap/debug-devices.c b/arch/arm/plat-omap/debug-devices.c index 923c9621096b..caa1f7b6cc21 100644 --- a/arch/arm/plat-omap/debug-devices.c +++ b/arch/arm/plat-omap/debug-devices.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * it under the terms of the GNU General Public License version 2 as | 8 | * it under the terms of the GNU General Public License version 2 as |
9 | * published by the Free Software Foundation. | 9 | * published by the Free Software Foundation. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
@@ -18,7 +18,6 @@ | |||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | 19 | ||
20 | #include <plat/board.h> | 20 | #include <plat/board.h> |
21 | #include <mach/gpio.h> | ||
22 | 21 | ||
23 | 22 | ||
24 | /* Many OMAP development platforms reuse the same "debug board"; these | 23 | /* Many OMAP development platforms reuse the same "debug board"; these |
diff --git a/arch/arm/plat-omap/debug-leds.c b/arch/arm/plat-omap/debug-leds.c index fc05b1022602..61a1ec2a6af4 100644 --- a/arch/arm/plat-omap/debug-leds.c +++ b/arch/arm/plat-omap/debug-leds.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | #include <linux/gpio.h> | |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/leds.h> | 13 | #include <linux/leds.h> |
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/mach-types.h> | 19 | #include <asm/mach-types.h> |
20 | 20 | ||
21 | #include <plat/fpga.h> | 21 | #include <plat/fpga.h> |
22 | #include <mach/gpio.h> | ||
23 | 22 | ||
24 | 23 | ||
25 | /* Many OMAP development platforms reuse the same "debug board"; these | 24 | /* Many OMAP development platforms reuse the same "debug board"; these |
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index ea28f98d5d6a..64c3bd4aa54e 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -8,7 +8,7 @@ | |||
8 | * the Free Software Foundation; either version 2 of the License, or | 8 | * the Free Software Foundation; either version 2 of the License, or |
9 | * (at your option) any later version. | 9 | * (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | #include <linux/gpio.h> | |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
@@ -24,7 +24,6 @@ | |||
24 | #include <plat/tc.h> | 24 | #include <plat/tc.h> |
25 | #include <plat/board.h> | 25 | #include <plat/board.h> |
26 | #include <plat/mmc.h> | 26 | #include <plat/mmc.h> |
27 | #include <mach/gpio.h> | ||
28 | #include <plat/menelaus.h> | 27 | #include <plat/menelaus.h> |
29 | #include <plat/mcbsp.h> | 28 | #include <plat/mcbsp.h> |
30 | #include <plat/omap44xx.h> | 29 | #include <plat/omap44xx.h> |
diff --git a/arch/arm/plat-omap/include/plat/gpio.h b/arch/arm/plat-omap/include/plat/gpio.h index 91e8de3db085..9e86ee0aed0a 100644 --- a/arch/arm/plat-omap/include/plat/gpio.h +++ b/arch/arm/plat-omap/include/plat/gpio.h | |||
@@ -222,26 +222,6 @@ extern void omap_gpio_restore_context(void); | |||
222 | #include <linux/errno.h> | 222 | #include <linux/errno.h> |
223 | #include <asm-generic/gpio.h> | 223 | #include <asm-generic/gpio.h> |
224 | 224 | ||
225 | static inline int gpio_get_value(unsigned gpio) | ||
226 | { | ||
227 | return __gpio_get_value(gpio); | ||
228 | } | ||
229 | |||
230 | static inline void gpio_set_value(unsigned gpio, int value) | ||
231 | { | ||
232 | __gpio_set_value(gpio, value); | ||
233 | } | ||
234 | |||
235 | static inline int gpio_cansleep(unsigned gpio) | ||
236 | { | ||
237 | return __gpio_cansleep(gpio); | ||
238 | } | ||
239 | |||
240 | static inline int gpio_to_irq(unsigned gpio) | ||
241 | { | ||
242 | return __gpio_to_irq(gpio); | ||
243 | } | ||
244 | |||
245 | static inline int irq_to_gpio(unsigned irq) | 225 | static inline int irq_to_gpio(unsigned irq) |
246 | { | 226 | { |
247 | int tmp; | 227 | int tmp; |
diff --git a/arch/arm/plat-orion/include/plat/gpio.h b/arch/arm/plat-orion/include/plat/gpio.h index 3075b9fdde83..3abf30428bee 100644 --- a/arch/arm/plat-orion/include/plat/gpio.h +++ b/arch/arm/plat-orion/include/plat/gpio.h | |||
@@ -12,15 +12,7 @@ | |||
12 | #define __PLAT_GPIO_H | 12 | #define __PLAT_GPIO_H |
13 | 13 | ||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <asm-generic/gpio.h> | 15 | #include <linux/types.h> |
16 | |||
17 | /* | ||
18 | * GENERIC_GPIO primitives. | ||
19 | */ | ||
20 | #define gpio_get_value __gpio_get_value | ||
21 | #define gpio_set_value __gpio_set_value | ||
22 | #define gpio_cansleep __gpio_cansleep | ||
23 | #define gpio_to_irq __gpio_to_irq | ||
24 | 16 | ||
25 | /* | 17 | /* |
26 | * Orion-specific GPIO API extensions. | 18 | * Orion-specific GPIO API extensions. |
diff --git a/arch/arm/plat-pxa/Makefile b/arch/arm/plat-pxa/Makefile index 3aca5ba0f876..f302d048392d 100644 --- a/arch/arm/plat-pxa/Makefile +++ b/arch/arm/plat-pxa/Makefile | |||
@@ -4,7 +4,6 @@ | |||
4 | 4 | ||
5 | obj-y := dma.o | 5 | obj-y := dma.o |
6 | 6 | ||
7 | obj-$(CONFIG_GENERIC_GPIO) += gpio.o | ||
8 | obj-$(CONFIG_PXA3xx) += mfp.o | 7 | obj-$(CONFIG_PXA3xx) += mfp.o |
9 | obj-$(CONFIG_PXA95x) += mfp.o | 8 | obj-$(CONFIG_PXA95x) += mfp.o |
10 | obj-$(CONFIG_ARCH_MMP) += mfp.o | 9 | obj-$(CONFIG_ARCH_MMP) += mfp.o |
diff --git a/arch/arm/plat-pxa/gpio.c b/arch/arm/plat-pxa/gpio.c deleted file mode 100644 index a11dc3670505..000000000000 --- a/arch/arm/plat-pxa/gpio.c +++ /dev/null | |||
@@ -1,338 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/plat-pxa/gpio.c | ||
3 | * | ||
4 | * Generic PXA GPIO handling | ||
5 | * | ||
6 | * Author: Nicolas Pitre | ||
7 | * Created: Jun 15, 2001 | ||
8 | * Copyright: MontaVista Software Inc. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include <linux/init.h> | ||
16 | #include <linux/irq.h> | ||
17 | #include <linux/io.h> | ||
18 | #include <linux/syscore_ops.h> | ||
19 | #include <linux/slab.h> | ||
20 | |||
21 | #include <mach/gpio.h> | ||
22 | |||
23 | int pxa_last_gpio; | ||
24 | |||
25 | struct pxa_gpio_chip { | ||
26 | struct gpio_chip chip; | ||
27 | void __iomem *regbase; | ||
28 | char label[10]; | ||
29 | |||
30 | unsigned long irq_mask; | ||
31 | unsigned long irq_edge_rise; | ||
32 | unsigned long irq_edge_fall; | ||
33 | |||
34 | #ifdef CONFIG_PM | ||
35 | unsigned long saved_gplr; | ||
36 | unsigned long saved_gpdr; | ||
37 | unsigned long saved_grer; | ||
38 | unsigned long saved_gfer; | ||
39 | #endif | ||
40 | }; | ||
41 | |||
42 | static DEFINE_SPINLOCK(gpio_lock); | ||
43 | static struct pxa_gpio_chip *pxa_gpio_chips; | ||
44 | |||
45 | #define for_each_gpio_chip(i, c) \ | ||
46 | for (i = 0, c = &pxa_gpio_chips[0]; i <= pxa_last_gpio; i += 32, c++) | ||
47 | |||
48 | static inline void __iomem *gpio_chip_base(struct gpio_chip *c) | ||
49 | { | ||
50 | return container_of(c, struct pxa_gpio_chip, chip)->regbase; | ||
51 | } | ||
52 | |||
53 | static inline struct pxa_gpio_chip *gpio_to_pxachip(unsigned gpio) | ||
54 | { | ||
55 | return &pxa_gpio_chips[gpio_to_bank(gpio)]; | ||
56 | } | ||
57 | |||
58 | static int pxa_gpio_direction_input(struct gpio_chip *chip, unsigned offset) | ||
59 | { | ||
60 | void __iomem *base = gpio_chip_base(chip); | ||
61 | uint32_t value, mask = 1 << offset; | ||
62 | unsigned long flags; | ||
63 | |||
64 | spin_lock_irqsave(&gpio_lock, flags); | ||
65 | |||
66 | value = __raw_readl(base + GPDR_OFFSET); | ||
67 | if (__gpio_is_inverted(chip->base + offset)) | ||
68 | value |= mask; | ||
69 | else | ||
70 | value &= ~mask; | ||
71 | __raw_writel(value, base + GPDR_OFFSET); | ||
72 | |||
73 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
74 | return 0; | ||
75 | } | ||
76 | |||
77 | static int pxa_gpio_direction_output(struct gpio_chip *chip, | ||
78 | unsigned offset, int value) | ||
79 | { | ||
80 | void __iomem *base = gpio_chip_base(chip); | ||
81 | uint32_t tmp, mask = 1 << offset; | ||
82 | unsigned long flags; | ||
83 | |||
84 | __raw_writel(mask, base + (value ? GPSR_OFFSET : GPCR_OFFSET)); | ||
85 | |||
86 | spin_lock_irqsave(&gpio_lock, flags); | ||
87 | |||
88 | tmp = __raw_readl(base + GPDR_OFFSET); | ||
89 | if (__gpio_is_inverted(chip->base + offset)) | ||
90 | tmp &= ~mask; | ||
91 | else | ||
92 | tmp |= mask; | ||
93 | __raw_writel(tmp, base + GPDR_OFFSET); | ||
94 | |||
95 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
96 | return 0; | ||
97 | } | ||
98 | |||
99 | static int pxa_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
100 | { | ||
101 | return __raw_readl(gpio_chip_base(chip) + GPLR_OFFSET) & (1 << offset); | ||
102 | } | ||
103 | |||
104 | static void pxa_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | ||
105 | { | ||
106 | __raw_writel(1 << offset, gpio_chip_base(chip) + | ||
107 | (value ? GPSR_OFFSET : GPCR_OFFSET)); | ||
108 | } | ||
109 | |||
110 | static int __init pxa_init_gpio_chip(int gpio_end) | ||
111 | { | ||
112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; | ||
113 | struct pxa_gpio_chip *chips; | ||
114 | |||
115 | chips = kzalloc(nbanks * sizeof(struct pxa_gpio_chip), GFP_KERNEL); | ||
116 | if (chips == NULL) { | ||
117 | pr_err("%s: failed to allocate GPIO chips\n", __func__); | ||
118 | return -ENOMEM; | ||
119 | } | ||
120 | |||
121 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { | ||
122 | struct gpio_chip *c = &chips[i].chip; | ||
123 | |||
124 | sprintf(chips[i].label, "gpio-%d", i); | ||
125 | chips[i].regbase = (void __iomem *)GPIO_BANK(i); | ||
126 | |||
127 | c->base = gpio; | ||
128 | c->label = chips[i].label; | ||
129 | |||
130 | c->direction_input = pxa_gpio_direction_input; | ||
131 | c->direction_output = pxa_gpio_direction_output; | ||
132 | c->get = pxa_gpio_get; | ||
133 | c->set = pxa_gpio_set; | ||
134 | |||
135 | /* number of GPIOs on last bank may be less than 32 */ | ||
136 | c->ngpio = (gpio + 31 > gpio_end) ? (gpio_end - gpio + 1) : 32; | ||
137 | gpiochip_add(c); | ||
138 | } | ||
139 | pxa_gpio_chips = chips; | ||
140 | return 0; | ||
141 | } | ||
142 | |||
143 | /* Update only those GRERx and GFERx edge detection register bits if those | ||
144 | * bits are set in c->irq_mask | ||
145 | */ | ||
146 | static inline void update_edge_detect(struct pxa_gpio_chip *c) | ||
147 | { | ||
148 | uint32_t grer, gfer; | ||
149 | |||
150 | grer = __raw_readl(c->regbase + GRER_OFFSET) & ~c->irq_mask; | ||
151 | gfer = __raw_readl(c->regbase + GFER_OFFSET) & ~c->irq_mask; | ||
152 | grer |= c->irq_edge_rise & c->irq_mask; | ||
153 | gfer |= c->irq_edge_fall & c->irq_mask; | ||
154 | __raw_writel(grer, c->regbase + GRER_OFFSET); | ||
155 | __raw_writel(gfer, c->regbase + GFER_OFFSET); | ||
156 | } | ||
157 | |||
158 | static int pxa_gpio_irq_type(struct irq_data *d, unsigned int type) | ||
159 | { | ||
160 | struct pxa_gpio_chip *c; | ||
161 | int gpio = irq_to_gpio(d->irq); | ||
162 | unsigned long gpdr, mask = GPIO_bit(gpio); | ||
163 | |||
164 | c = gpio_to_pxachip(gpio); | ||
165 | |||
166 | if (type == IRQ_TYPE_PROBE) { | ||
167 | /* Don't mess with enabled GPIOs using preconfigured edges or | ||
168 | * GPIOs set to alternate function or to output during probe | ||
169 | */ | ||
170 | if ((c->irq_edge_rise | c->irq_edge_fall) & GPIO_bit(gpio)) | ||
171 | return 0; | ||
172 | |||
173 | if (__gpio_is_occupied(gpio)) | ||
174 | return 0; | ||
175 | |||
176 | type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING; | ||
177 | } | ||
178 | |||
179 | gpdr = __raw_readl(c->regbase + GPDR_OFFSET); | ||
180 | |||
181 | if (__gpio_is_inverted(gpio)) | ||
182 | __raw_writel(gpdr | mask, c->regbase + GPDR_OFFSET); | ||
183 | else | ||
184 | __raw_writel(gpdr & ~mask, c->regbase + GPDR_OFFSET); | ||
185 | |||
186 | if (type & IRQ_TYPE_EDGE_RISING) | ||
187 | c->irq_edge_rise |= mask; | ||
188 | else | ||
189 | c->irq_edge_rise &= ~mask; | ||
190 | |||
191 | if (type & IRQ_TYPE_EDGE_FALLING) | ||
192 | c->irq_edge_fall |= mask; | ||
193 | else | ||
194 | c->irq_edge_fall &= ~mask; | ||
195 | |||
196 | update_edge_detect(c); | ||
197 | |||
198 | pr_debug("%s: IRQ%d (GPIO%d) - edge%s%s\n", __func__, d->irq, gpio, | ||
199 | ((type & IRQ_TYPE_EDGE_RISING) ? " rising" : ""), | ||
200 | ((type & IRQ_TYPE_EDGE_FALLING) ? " falling" : "")); | ||
201 | return 0; | ||
202 | } | ||
203 | |||
204 | static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc) | ||
205 | { | ||
206 | struct pxa_gpio_chip *c; | ||
207 | int loop, gpio, gpio_base, n; | ||
208 | unsigned long gedr; | ||
209 | |||
210 | do { | ||
211 | loop = 0; | ||
212 | for_each_gpio_chip(gpio, c) { | ||
213 | gpio_base = c->chip.base; | ||
214 | |||
215 | gedr = __raw_readl(c->regbase + GEDR_OFFSET); | ||
216 | gedr = gedr & c->irq_mask; | ||
217 | __raw_writel(gedr, c->regbase + GEDR_OFFSET); | ||
218 | |||
219 | n = find_first_bit(&gedr, BITS_PER_LONG); | ||
220 | while (n < BITS_PER_LONG) { | ||
221 | loop = 1; | ||
222 | |||
223 | generic_handle_irq(gpio_to_irq(gpio_base + n)); | ||
224 | n = find_next_bit(&gedr, BITS_PER_LONG, n + 1); | ||
225 | } | ||
226 | } | ||
227 | } while (loop); | ||
228 | } | ||
229 | |||
230 | static void pxa_ack_muxed_gpio(struct irq_data *d) | ||
231 | { | ||
232 | int gpio = irq_to_gpio(d->irq); | ||
233 | struct pxa_gpio_chip *c = gpio_to_pxachip(gpio); | ||
234 | |||
235 | __raw_writel(GPIO_bit(gpio), c->regbase + GEDR_OFFSET); | ||
236 | } | ||
237 | |||
238 | static void pxa_mask_muxed_gpio(struct irq_data *d) | ||
239 | { | ||
240 | int gpio = irq_to_gpio(d->irq); | ||
241 | struct pxa_gpio_chip *c = gpio_to_pxachip(gpio); | ||
242 | uint32_t grer, gfer; | ||
243 | |||
244 | c->irq_mask &= ~GPIO_bit(gpio); | ||
245 | |||
246 | grer = __raw_readl(c->regbase + GRER_OFFSET) & ~GPIO_bit(gpio); | ||
247 | gfer = __raw_readl(c->regbase + GFER_OFFSET) & ~GPIO_bit(gpio); | ||
248 | __raw_writel(grer, c->regbase + GRER_OFFSET); | ||
249 | __raw_writel(gfer, c->regbase + GFER_OFFSET); | ||
250 | } | ||
251 | |||
252 | static void pxa_unmask_muxed_gpio(struct irq_data *d) | ||
253 | { | ||
254 | int gpio = irq_to_gpio(d->irq); | ||
255 | struct pxa_gpio_chip *c = gpio_to_pxachip(gpio); | ||
256 | |||
257 | c->irq_mask |= GPIO_bit(gpio); | ||
258 | update_edge_detect(c); | ||
259 | } | ||
260 | |||
261 | static struct irq_chip pxa_muxed_gpio_chip = { | ||
262 | .name = "GPIO", | ||
263 | .irq_ack = pxa_ack_muxed_gpio, | ||
264 | .irq_mask = pxa_mask_muxed_gpio, | ||
265 | .irq_unmask = pxa_unmask_muxed_gpio, | ||
266 | .irq_set_type = pxa_gpio_irq_type, | ||
267 | }; | ||
268 | |||
269 | void __init pxa_init_gpio(int mux_irq, int start, int end, set_wake_t fn) | ||
270 | { | ||
271 | struct pxa_gpio_chip *c; | ||
272 | int gpio, irq; | ||
273 | |||
274 | pxa_last_gpio = end; | ||
275 | |||
276 | /* Initialize GPIO chips */ | ||
277 | pxa_init_gpio_chip(end); | ||
278 | |||
279 | /* clear all GPIO edge detects */ | ||
280 | for_each_gpio_chip(gpio, c) { | ||
281 | __raw_writel(0, c->regbase + GFER_OFFSET); | ||
282 | __raw_writel(0, c->regbase + GRER_OFFSET); | ||
283 | __raw_writel(~0,c->regbase + GEDR_OFFSET); | ||
284 | } | ||
285 | |||
286 | for (irq = gpio_to_irq(start); irq <= gpio_to_irq(end); irq++) { | ||
287 | irq_set_chip_and_handler(irq, &pxa_muxed_gpio_chip, | ||
288 | handle_edge_irq); | ||
289 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
290 | } | ||
291 | |||
292 | /* Install handler for GPIO>=2 edge detect interrupts */ | ||
293 | irq_set_chained_handler(mux_irq, pxa_gpio_demux_handler); | ||
294 | pxa_muxed_gpio_chip.irq_set_wake = fn; | ||
295 | } | ||
296 | |||
297 | #ifdef CONFIG_PM | ||
298 | static int pxa_gpio_suspend(void) | ||
299 | { | ||
300 | struct pxa_gpio_chip *c; | ||
301 | int gpio; | ||
302 | |||
303 | for_each_gpio_chip(gpio, c) { | ||
304 | c->saved_gplr = __raw_readl(c->regbase + GPLR_OFFSET); | ||
305 | c->saved_gpdr = __raw_readl(c->regbase + GPDR_OFFSET); | ||
306 | c->saved_grer = __raw_readl(c->regbase + GRER_OFFSET); | ||
307 | c->saved_gfer = __raw_readl(c->regbase + GFER_OFFSET); | ||
308 | |||
309 | /* Clear GPIO transition detect bits */ | ||
310 | __raw_writel(0xffffffff, c->regbase + GEDR_OFFSET); | ||
311 | } | ||
312 | return 0; | ||
313 | } | ||
314 | |||
315 | static void pxa_gpio_resume(void) | ||
316 | { | ||
317 | struct pxa_gpio_chip *c; | ||
318 | int gpio; | ||
319 | |||
320 | for_each_gpio_chip(gpio, c) { | ||
321 | /* restore level with set/clear */ | ||
322 | __raw_writel( c->saved_gplr, c->regbase + GPSR_OFFSET); | ||
323 | __raw_writel(~c->saved_gplr, c->regbase + GPCR_OFFSET); | ||
324 | |||
325 | __raw_writel(c->saved_grer, c->regbase + GRER_OFFSET); | ||
326 | __raw_writel(c->saved_gfer, c->regbase + GFER_OFFSET); | ||
327 | __raw_writel(c->saved_gpdr, c->regbase + GPDR_OFFSET); | ||
328 | } | ||
329 | } | ||
330 | #else | ||
331 | #define pxa_gpio_suspend NULL | ||
332 | #define pxa_gpio_resume NULL | ||
333 | #endif | ||
334 | |||
335 | struct syscore_ops pxa_gpio_syscore_ops = { | ||
336 | .suspend = pxa_gpio_suspend, | ||
337 | .resume = pxa_gpio_resume, | ||
338 | }; | ||
diff --git a/arch/arm/plat-pxa/include/plat/gpio-pxa.h b/arch/arm/plat-pxa/include/plat/gpio-pxa.h new file mode 100644 index 000000000000..b6390beff323 --- /dev/null +++ b/arch/arm/plat-pxa/include/plat/gpio-pxa.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef __PLAT_PXA_GPIO_H | ||
2 | #define __PLAT_PXA_GPIO_H | ||
3 | |||
4 | struct irq_data; | ||
5 | |||
6 | /* | ||
7 | * We handle the GPIOs by banks, each bank covers up to 32 GPIOs with | ||
8 | * one set of registers. The register offsets are organized below: | ||
9 | * | ||
10 | * GPLR GPDR GPSR GPCR GRER GFER GEDR | ||
11 | * BANK 0 - 0x0000 0x000C 0x0018 0x0024 0x0030 0x003C 0x0048 | ||
12 | * BANK 1 - 0x0004 0x0010 0x001C 0x0028 0x0034 0x0040 0x004C | ||
13 | * BANK 2 - 0x0008 0x0014 0x0020 0x002C 0x0038 0x0044 0x0050 | ||
14 | * | ||
15 | * BANK 3 - 0x0100 0x010C 0x0118 0x0124 0x0130 0x013C 0x0148 | ||
16 | * BANK 4 - 0x0104 0x0110 0x011C 0x0128 0x0134 0x0140 0x014C | ||
17 | * BANK 5 - 0x0108 0x0114 0x0120 0x012C 0x0138 0x0144 0x0150 | ||
18 | * | ||
19 | * NOTE: | ||
20 | * BANK 3 is only available on PXA27x and later processors. | ||
21 | * BANK 4 and 5 are only available on PXA935 | ||
22 | */ | ||
23 | |||
24 | #define GPIO_BANK(n) (GPIO_REGS_VIRT + BANK_OFF(n)) | ||
25 | |||
26 | #define GPLR_OFFSET 0x00 | ||
27 | #define GPDR_OFFSET 0x0C | ||
28 | #define GPSR_OFFSET 0x18 | ||
29 | #define GPCR_OFFSET 0x24 | ||
30 | #define GRER_OFFSET 0x30 | ||
31 | #define GFER_OFFSET 0x3C | ||
32 | #define GEDR_OFFSET 0x48 | ||
33 | |||
34 | /* NOTE: some PXAs have fewer on-chip GPIOs (like PXA255, with 85). | ||
35 | * Those cases currently cause holes in the GPIO number space, the | ||
36 | * actual number of the last GPIO is recorded by 'pxa_last_gpio'. | ||
37 | */ | ||
38 | extern int pxa_last_gpio; | ||
39 | |||
40 | typedef int (*set_wake_t)(struct irq_data *d, unsigned int on); | ||
41 | |||
42 | extern void pxa_init_gpio(int mux_irq, int start, int end, set_wake_t fn); | ||
43 | |||
44 | #endif /* __PLAT_PXA_GPIO_H */ | ||
diff --git a/arch/arm/plat-pxa/include/plat/gpio.h b/arch/arm/plat-pxa/include/plat/gpio.h index 1ddd2b97a729..258f77210b02 100644 --- a/arch/arm/plat-pxa/include/plat/gpio.h +++ b/arch/arm/plat-pxa/include/plat/gpio.h | |||
@@ -1,35 +1,10 @@ | |||
1 | #ifndef __PLAT_GPIO_H | 1 | #ifndef __PLAT_GPIO_H |
2 | #define __PLAT_GPIO_H | 2 | #define __PLAT_GPIO_H |
3 | 3 | ||
4 | struct irq_data; | 4 | #define __ARM_GPIOLIB_COMPLEX |
5 | 5 | ||
6 | /* | 6 | /* The individual machine provides register offsets and NR_BUILTIN_GPIO */ |
7 | * We handle the GPIOs by banks, each bank covers up to 32 GPIOs with | 7 | #include <mach/gpio-pxa.h> |
8 | * one set of registers. The register offsets are organized below: | ||
9 | * | ||
10 | * GPLR GPDR GPSR GPCR GRER GFER GEDR | ||
11 | * BANK 0 - 0x0000 0x000C 0x0018 0x0024 0x0030 0x003C 0x0048 | ||
12 | * BANK 1 - 0x0004 0x0010 0x001C 0x0028 0x0034 0x0040 0x004C | ||
13 | * BANK 2 - 0x0008 0x0014 0x0020 0x002C 0x0038 0x0044 0x0050 | ||
14 | * | ||
15 | * BANK 3 - 0x0100 0x010C 0x0118 0x0124 0x0130 0x013C 0x0148 | ||
16 | * BANK 4 - 0x0104 0x0110 0x011C 0x0128 0x0134 0x0140 0x014C | ||
17 | * BANK 5 - 0x0108 0x0114 0x0120 0x012C 0x0138 0x0144 0x0150 | ||
18 | * | ||
19 | * NOTE: | ||
20 | * BANK 3 is only available on PXA27x and later processors. | ||
21 | * BANK 4 and 5 are only available on PXA935 | ||
22 | */ | ||
23 | |||
24 | #define GPIO_BANK(n) (GPIO_REGS_VIRT + BANK_OFF(n)) | ||
25 | |||
26 | #define GPLR_OFFSET 0x00 | ||
27 | #define GPDR_OFFSET 0x0C | ||
28 | #define GPSR_OFFSET 0x18 | ||
29 | #define GPCR_OFFSET 0x24 | ||
30 | #define GRER_OFFSET 0x30 | ||
31 | #define GFER_OFFSET 0x3C | ||
32 | #define GEDR_OFFSET 0x48 | ||
33 | 8 | ||
34 | static inline int gpio_get_value(unsigned gpio) | 9 | static inline int gpio_get_value(unsigned gpio) |
35 | { | 10 | { |
@@ -52,13 +27,4 @@ static inline void gpio_set_value(unsigned gpio, int value) | |||
52 | 27 | ||
53 | #define gpio_cansleep __gpio_cansleep | 28 | #define gpio_cansleep __gpio_cansleep |
54 | 29 | ||
55 | /* NOTE: some PXAs have fewer on-chip GPIOs (like PXA255, with 85). | ||
56 | * Those cases currently cause holes in the GPIO number space, the | ||
57 | * actual number of the last GPIO is recorded by 'pxa_last_gpio'. | ||
58 | */ | ||
59 | extern int pxa_last_gpio; | ||
60 | |||
61 | typedef int (*set_wake_t)(struct irq_data *d, unsigned int on); | ||
62 | |||
63 | extern void pxa_init_gpio(int mux_irq, int start, int end, set_wake_t fn); | ||
64 | #endif /* __PLAT_GPIO_H */ | 30 | #endif /* __PLAT_GPIO_H */ |
diff --git a/arch/arm/plat-spear/include/plat/gpio.h b/arch/arm/plat-spear/include/plat/gpio.h index b857c91257dd..40a8c178f10d 100644 --- a/arch/arm/plat-spear/include/plat/gpio.h +++ b/arch/arm/plat-spear/include/plat/gpio.h | |||
@@ -1,24 +1 @@ | |||
1 | /* | /* empty */ | |
2 | * arch/arm/plat-spear/include/plat/gpio.h | ||
3 | * | ||
4 | * GPIO macros for SPEAr platform | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __PLAT_GPIO_H | ||
15 | #define __PLAT_GPIO_H | ||
16 | |||
17 | #include <asm-generic/gpio.h> | ||
18 | |||
19 | #define gpio_get_value __gpio_get_value | ||
20 | #define gpio_set_value __gpio_set_value | ||
21 | #define gpio_cansleep __gpio_cansleep | ||
22 | #define gpio_to_irq __gpio_to_irq | ||
23 | |||
24 | #endif /* __PLAT_GPIO_H */ | ||