diff options
author | sfking@fdwdc.com <sfking@fdwdc.com> | 2009-06-19 21:11:01 -0400 |
---|---|---|
committer | Greg Ungerer <gerg@uclinux.org> | 2009-09-09 22:01:22 -0400 |
commit | bc25b057fa0a0e4754b7e2524c509874649d11ae (patch) | |
tree | 40770e923309ff514def91e8e9adcd6d71c4f81b | |
parent | af39bb8b07af83b579c90c09ba3943123cdb4132 (diff) |
generic GPIO support for the Freescale Coldfire 5206.
Add support for the 5206.
Signed-off-by: Steven King <sfking@fdwdc.com>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
-rw-r--r-- | arch/m68k/include/asm/m5206sim.h | 10 | ||||
-rw-r--r-- | arch/m68knommu/platform/5206/Makefile | 2 | ||||
-rw-r--r-- | arch/m68knommu/platform/5206/gpio.c | 49 |
3 files changed, 58 insertions, 3 deletions
diff --git a/arch/m68k/include/asm/m5206sim.h b/arch/m68k/include/asm/m5206sim.h index 7e3594dea88b..7be8a2d3e659 100644 --- a/arch/m68k/include/asm/m5206sim.h +++ b/arch/m68k/include/asm/m5206sim.h | |||
@@ -85,10 +85,16 @@ | |||
85 | #define MCFSIM_PAR 0xcb /* Pin Assignment reg (r/w) */ | 85 | #define MCFSIM_PAR 0xcb /* Pin Assignment reg (r/w) */ |
86 | #endif | 86 | #endif |
87 | 87 | ||
88 | #define MCFSIM_PADDR 0x1c5 /* Parallel Direction (r/w) */ | 88 | #define MCFSIM_PADDR (MCF_MBAR + 0x1c5) /* Parallel Direction (r/w) */ |
89 | #define MCFSIM_PADAT 0x1c9 /* Parallel Port Value (r/w) */ | 89 | #define MCFSIM_PADAT (MCF_MBAR + 0x1c9) /* Parallel Port Value (r/w) */ |
90 | 90 | ||
91 | /* | 91 | /* |
92 | * Generic GPIO | ||
93 | */ | ||
94 | #define MCFGPIO_PIN_MAX 8 | ||
95 | #define MCFGPIO_IRQ_VECBASE -1 | ||
96 | #define MCFGPIO_IRQ_MAX -1 | ||
97 | /* | ||
92 | * Some symbol defines for the Parallel Port Pin Assignment Register | 98 | * Some symbol defines for the Parallel Port Pin Assignment Register |
93 | */ | 99 | */ |
94 | #ifdef CONFIG_M5206e | 100 | #ifdef CONFIG_M5206e |
diff --git a/arch/m68knommu/platform/5206/Makefile b/arch/m68knommu/platform/5206/Makefile index a439d9ab3f27..113c33390064 100644 --- a/arch/m68knommu/platform/5206/Makefile +++ b/arch/m68knommu/platform/5206/Makefile | |||
@@ -14,5 +14,5 @@ | |||
14 | 14 | ||
15 | asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 | 15 | asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 |
16 | 16 | ||
17 | obj-y := config.o | 17 | obj-y := config.o gpio.o |
18 | 18 | ||
diff --git a/arch/m68knommu/platform/5206/gpio.c b/arch/m68knommu/platform/5206/gpio.c new file mode 100644 index 000000000000..60f779ce1651 --- /dev/null +++ b/arch/m68knommu/platform/5206/gpio.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Coldfire generic GPIO support | ||
3 | * | ||
4 | * (C) Copyright 2009, Steven King <sfking@fdwdc.com> | ||
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; version 2 of the License. | ||
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 | #include <linux/kernel.h> | ||
17 | #include <linux/init.h> | ||
18 | |||
19 | #include <asm/coldfire.h> | ||
20 | #include <asm/mcfsim.h> | ||
21 | #include <asm/mcfgpio.h> | ||
22 | |||
23 | static struct mcf_gpio_chip mcf_gpio_chips[] = { | ||
24 | { | ||
25 | .gpio_chip = { | ||
26 | .label = "PP", | ||
27 | .request = mcf_gpio_request, | ||
28 | .free = mcf_gpio_free, | ||
29 | .direction_input = mcf_gpio_direction_input, | ||
30 | .direction_output = mcf_gpio_direction_output, | ||
31 | .get = mcf_gpio_get_value, | ||
32 | .set = mcf_gpio_set_value, | ||
33 | .ngpio = 8, | ||
34 | }, | ||
35 | .pddr = MCFSIM_PADDR, | ||
36 | .podr = MCFSIM_PADAT, | ||
37 | .ppdr = MCFSIM_PADAT, | ||
38 | }, | ||
39 | }; | ||
40 | |||
41 | static int __init mcf_gpio_init(void) | ||
42 | { | ||
43 | unsigned i = 0; | ||
44 | while (i < ARRAY_SIZE(mcf_gpio_chips)) | ||
45 | (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]); | ||
46 | return 0; | ||
47 | } | ||
48 | |||
49 | core_initcall(mcf_gpio_init); | ||