diff options
author | sfking@fdwdc.com <sfking@fdwdc.com> | 2009-06-19 21:11:07 -0400 |
---|---|---|
committer | Greg Ungerer <gerg@uclinux.org> | 2009-09-09 22:01:23 -0400 |
commit | 316f2c483c32e9385329303258d12e6e33892af5 (patch) | |
tree | dee9cb00d46899a392a62ad3c1c9f003cd631326 /arch | |
parent | f1554da34f11518bde33776c292c1b58fc20f073 (diff) |
generic GPIO support for the Freescale Coldfire 5272.
Add support for the 5272.
Signed-off-by: Steven King <sfking@fdwdc.com>
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m68k/include/asm/m5272sim.h | 24 | ||||
-rw-r--r-- | arch/m68knommu/platform/5272/Makefile | 2 | ||||
-rw-r--r-- | arch/m68knommu/platform/5272/gpio.c | 81 |
3 files changed, 97 insertions, 10 deletions
diff --git a/arch/m68k/include/asm/m5272sim.h b/arch/m68k/include/asm/m5272sim.h index 6217edc2113..0665ba1a5d3 100644 --- a/arch/m68k/include/asm/m5272sim.h +++ b/arch/m68k/include/asm/m5272sim.h | |||
@@ -63,16 +63,22 @@ | |||
63 | #define MCFSIM_DCMR1 0x5c /* DRAM 1 Mask reg (r/w) */ | 63 | #define MCFSIM_DCMR1 0x5c /* DRAM 1 Mask reg (r/w) */ |
64 | #define MCFSIM_DCCR1 0x63 /* DRAM 1 Control reg (r/w) */ | 64 | #define MCFSIM_DCCR1 0x63 /* DRAM 1 Control reg (r/w) */ |
65 | 65 | ||
66 | #define MCFSIM_PACNT 0x80 /* Port A Control (r/w) */ | 66 | #define MCFSIM_PACNT (MCF_MBAR + 0x80) /* Port A Control (r/w) */ |
67 | #define MCFSIM_PADDR 0x84 /* Port A Direction (r/w) */ | 67 | #define MCFSIM_PADDR (MCF_MBAR + 0x84) /* Port A Direction (r/w) */ |
68 | #define MCFSIM_PADAT 0x86 /* Port A Data (r/w) */ | 68 | #define MCFSIM_PADAT (MCF_MBAR + 0x86) /* Port A Data (r/w) */ |
69 | #define MCFSIM_PBCNT 0x88 /* Port B Control (r/w) */ | 69 | #define MCFSIM_PBCNT (MCF_MBAR + 0x88) /* Port B Control (r/w) */ |
70 | #define MCFSIM_PBDDR 0x8c /* Port B Direction (r/w) */ | 70 | #define MCFSIM_PBDDR (MCF_MBAR + 0x8c) /* Port B Direction (r/w) */ |
71 | #define MCFSIM_PBDAT 0x8e /* Port B Data (r/w) */ | 71 | #define MCFSIM_PBDAT (MCF_MBAR + 0x8e) /* Port B Data (r/w) */ |
72 | #define MCFSIM_PCDDR 0x94 /* Port C Direction (r/w) */ | 72 | #define MCFSIM_PCDDR (MCF_MBAR + 0x94) /* Port C Direction (r/w) */ |
73 | #define MCFSIM_PCDAT 0x96 /* Port C Data (r/w) */ | 73 | #define MCFSIM_PCDAT (MCF_MBAR + 0x96) /* Port C Data (r/w) */ |
74 | #define MCFSIM_PDCNT 0x98 /* Port D Control (r/w) */ | 74 | #define MCFSIM_PDCNT (MCF_MBAR + 0x98) /* Port D Control (r/w) */ |
75 | 75 | ||
76 | 76 | ||
77 | /* | ||
78 | * Generic GPIO support | ||
79 | */ | ||
80 | #define MCFGPIO_PIN_MAX 48 | ||
81 | #define MCFGPIO_IRQ_MAX -1 | ||
82 | #define MCFGPIO_IRQ_VECBASE -1 | ||
77 | /****************************************************************************/ | 83 | /****************************************************************************/ |
78 | #endif /* m5272sim_h */ | 84 | #endif /* m5272sim_h */ |
diff --git a/arch/m68knommu/platform/5272/Makefile b/arch/m68knommu/platform/5272/Makefile index 26135d92b34..3d90e6d9245 100644 --- a/arch/m68knommu/platform/5272/Makefile +++ b/arch/m68knommu/platform/5272/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/5272/gpio.c b/arch/m68knommu/platform/5272/gpio.c new file mode 100644 index 00000000000..459db89a89c --- /dev/null +++ b/arch/m68knommu/platform/5272/gpio.c | |||
@@ -0,0 +1,81 @@ | |||
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 = "PA", | ||
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 = 16, | ||
34 | }, | ||
35 | .pddr = MCFSIM_PADDR, | ||
36 | .podr = MCFSIM_PADAT, | ||
37 | .ppdr = MCFSIM_PADAT, | ||
38 | }, | ||
39 | { | ||
40 | .gpio_chip = { | ||
41 | .label = "PB", | ||
42 | .request = mcf_gpio_request, | ||
43 | .free = mcf_gpio_free, | ||
44 | .direction_input = mcf_gpio_direction_input, | ||
45 | .direction_output = mcf_gpio_direction_output, | ||
46 | .get = mcf_gpio_get_value, | ||
47 | .set = mcf_gpio_set_value, | ||
48 | .base = 16, | ||
49 | .ngpio = 16, | ||
50 | }, | ||
51 | .pddr = MCFSIM_PBDDR, | ||
52 | .podr = MCFSIM_PBDAT, | ||
53 | .ppdr = MCFSIM_PBDAT, | ||
54 | }, | ||
55 | { | ||
56 | .gpio_chip = { | ||
57 | .label = "PC", | ||
58 | .request = mcf_gpio_request, | ||
59 | .free = mcf_gpio_free, | ||
60 | .direction_input = mcf_gpio_direction_input, | ||
61 | .direction_output = mcf_gpio_direction_output, | ||
62 | .get = mcf_gpio_get_value, | ||
63 | .set = mcf_gpio_set_value, | ||
64 | .base = 32, | ||
65 | .ngpio = 16, | ||
66 | }, | ||
67 | .pddr = MCFSIM_PCDDR, | ||
68 | .podr = MCFSIM_PCDAT, | ||
69 | .ppdr = MCFSIM_PCDAT, | ||
70 | }, | ||
71 | }; | ||
72 | |||
73 | static int __init mcf_gpio_init(void) | ||
74 | { | ||
75 | unsigned i = 0; | ||
76 | while (i < ARRAY_SIZE(mcf_gpio_chips)) | ||
77 | (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]); | ||
78 | return 0; | ||
79 | } | ||
80 | |||
81 | core_initcall(mcf_gpio_init); | ||