aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@uclinux.org>2012-04-16 23:25:38 -0400
committerGreg Ungerer <gerg@uclinux.org>2012-05-20 07:21:47 -0400
commitf23c144d4265b9251a4146e057af668bcd7667cb (patch)
treef92ed6eec91ab1839cfd3aea3632885c7ee2e9e5 /arch/m68k
parent943c0cd0adf66ebfd7695715e0178e331fc72f43 (diff)
m68knommu: make duplicated ColdFire GPIO init code common for all
The code that adds each ColdFire platforms GPIO signals is duplicated in each platforms specific code. Remove it from each platforms code and put a single version in the existing ColdFire gpio subsystem init code. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Acked-by: Steven King <sfking@fdwdc.com>
Diffstat (limited to 'arch/m68k')
-rw-r--r--arch/m68k/include/asm/mcfgpio.h3
-rw-r--r--arch/m68k/platform/5206/gpio.c12
-rw-r--r--arch/m68k/platform/520x/gpio.c12
-rw-r--r--arch/m68k/platform/523x/gpio.c12
-rw-r--r--arch/m68k/platform/5249/gpio.c12
-rw-r--r--arch/m68k/platform/5272/gpio.c12
-rw-r--r--arch/m68k/platform/527x/gpio.c12
-rw-r--r--arch/m68k/platform/528x/gpio.c12
-rw-r--r--arch/m68k/platform/5307/gpio.c12
-rw-r--r--arch/m68k/platform/532x/gpio.c12
-rw-r--r--arch/m68k/platform/5407/gpio.c12
-rw-r--r--arch/m68k/platform/54xx/config.c7
-rw-r--r--arch/m68k/platform/coldfire/gpio.c4
13 files changed, 34 insertions, 100 deletions
diff --git a/arch/m68k/include/asm/mcfgpio.h b/arch/m68k/include/asm/mcfgpio.h
index 1bc877b45554..fe468eaa51e0 100644
--- a/arch/m68k/include/asm/mcfgpio.h
+++ b/arch/m68k/include/asm/mcfgpio.h
@@ -29,6 +29,9 @@ struct mcf_gpio_chip {
29 const u8 *gpio_to_pinmux; 29 const u8 *gpio_to_pinmux;
30}; 30};
31 31
32extern struct mcf_gpio_chip mcf_gpio_chips[];
33extern unsigned int mcf_gpio_chips_size;
34
32int mcf_gpio_direction_input(struct gpio_chip *, unsigned); 35int mcf_gpio_direction_input(struct gpio_chip *, unsigned);
33int mcf_gpio_get_value(struct gpio_chip *, unsigned); 36int mcf_gpio_get_value(struct gpio_chip *, unsigned);
34int mcf_gpio_direction_output(struct gpio_chip *, unsigned, int); 37int mcf_gpio_direction_output(struct gpio_chip *, unsigned, int);
diff --git a/arch/m68k/platform/5206/gpio.c b/arch/m68k/platform/5206/gpio.c
index 200a7acf0842..a652f8e550c6 100644
--- a/arch/m68k/platform/5206/gpio.c
+++ b/arch/m68k/platform/5206/gpio.c
@@ -20,16 +20,8 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PP, 0, 8, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT), 24 MCFGPS(PP, 0, 8, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT),
25}; 25};
26 26
27static int __init mcf_gpio_init(void) 27unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
28{
29 unsigned i = 0;
30 while (i < ARRAY_SIZE(mcf_gpio_chips))
31 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
32 return 0;
33}
34
35core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/520x/gpio.c b/arch/m68k/platform/520x/gpio.c
index 96b368578baf..49387c34f0c4 100644
--- a/arch/m68k/platform/520x/gpio.c
+++ b/arch/m68k/platform/520x/gpio.c
@@ -20,7 +20,7 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PIRQ, 0, 8, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR), 24 MCFGPS(PIRQ, 0, 8, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
25 MCFGPF(CS, 9, 3), 25 MCFGPF(CS, 9, 3),
26 MCFGPF(FECI2C, 16, 4), 26 MCFGPF(FECI2C, 16, 4),
@@ -31,12 +31,4 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
31 MCFGPF(FECL, 56, 8), 31 MCFGPF(FECL, 56, 8),
32}; 32};
33 33
34static int __init mcf_gpio_init(void) 34unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
35{
36 unsigned i = 0;
37 while (i < ARRAY_SIZE(mcf_gpio_chips))
38 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
39 return 0;
40}
41
42core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/523x/gpio.c b/arch/m68k/platform/523x/gpio.c
index 8e6e30e80361..07806eb34dd7 100644
--- a/arch/m68k/platform/523x/gpio.c
+++ b/arch/m68k/platform/523x/gpio.c
@@ -20,7 +20,7 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PIRQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR), 24 MCFGPS(PIRQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
25 MCFGPF(ADDR, 13, 3), 25 MCFGPF(ADDR, 13, 3),
26 MCFGPF(DATAH, 16, 8), 26 MCFGPF(DATAH, 16, 8),
@@ -37,12 +37,4 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
37 MCFGPF(ETPU, 104, 3), 37 MCFGPF(ETPU, 104, 3),
38}; 38};
39 39
40static int __init mcf_gpio_init(void) 40unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
41{
42 unsigned i = 0;
43 while (i < ARRAY_SIZE(mcf_gpio_chips))
44 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
45 return 0;
46}
47
48core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/5249/gpio.c b/arch/m68k/platform/5249/gpio.c
index 775d618b9a44..422e45fe771d 100644
--- a/arch/m68k/platform/5249/gpio.c
+++ b/arch/m68k/platform/5249/gpio.c
@@ -20,17 +20,9 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(GPIO0, 0, 32, MCFSIM2_GPIOENABLE, MCFSIM2_GPIOWRITE, MCFSIM2_GPIOREAD), 24 MCFGPS(GPIO0, 0, 32, MCFSIM2_GPIOENABLE, MCFSIM2_GPIOWRITE, MCFSIM2_GPIOREAD),
25 MCFGPS(GPIO1, 32, 32, MCFSIM2_GPIO1ENABLE, MCFSIM2_GPIO1WRITE, MCFSIM2_GPIO1READ), 25 MCFGPS(GPIO1, 32, 32, MCFSIM2_GPIO1ENABLE, MCFSIM2_GPIO1WRITE, MCFSIM2_GPIO1READ),
26}; 26};
27 27
28static int __init mcf_gpio_init(void) 28unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
29{
30 unsigned i = 0;
31 while (i < ARRAY_SIZE(mcf_gpio_chips))
32 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
33 return 0;
34}
35
36core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/5272/gpio.c b/arch/m68k/platform/5272/gpio.c
index 91358b830fc9..c029dab7baf3 100644
--- a/arch/m68k/platform/5272/gpio.c
+++ b/arch/m68k/platform/5272/gpio.c
@@ -20,18 +20,10 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PA, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT), 24 MCFGPS(PA, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT),
25 MCFGPS(PB, 16, 16, MCFSIM_PBDDR, MCFSIM_PBDAT, MCFSIM_PBDAT), 25 MCFGPS(PB, 16, 16, MCFSIM_PBDDR, MCFSIM_PBDAT, MCFSIM_PBDAT),
26 MCFGPS(Pc, 32, 16, MCFSIM_PCDDR, MCFSIM_PCDAT, MCFSIM_PCDAT), 26 MCFGPS(Pc, 32, 16, MCFSIM_PCDDR, MCFSIM_PCDAT, MCFSIM_PCDAT),
27}; 27};
28 28
29static int __init mcf_gpio_init(void) 29unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
30{
31 unsigned i = 0;
32 while (i < ARRAY_SIZE(mcf_gpio_chips))
33 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
34 return 0;
35}
36
37core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/527x/gpio.c b/arch/m68k/platform/527x/gpio.c
index b612a63b6c20..1c8633be71ab 100644
--- a/arch/m68k/platform/527x/gpio.c
+++ b/arch/m68k/platform/527x/gpio.c
@@ -20,7 +20,7 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24#if defined(CONFIG_M5271) 24#if defined(CONFIG_M5271)
25 MCFGPS(PIRQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR), 25 MCFGPS(PIRQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
26 MCFGPF(ADDR, 13, 3), 26 MCFGPF(ADDR, 13, 3),
@@ -58,12 +58,4 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
58#endif 58#endif
59}; 59};
60 60
61static int __init mcf_gpio_init(void) 61unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
62{
63 unsigned i = 0;
64 while (i < ARRAY_SIZE(mcf_gpio_chips))
65 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
66 return 0;
67}
68
69core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/528x/gpio.c b/arch/m68k/platform/528x/gpio.c
index 81b161c8667f..79459acd8d36 100644
--- a/arch/m68k/platform/528x/gpio.c
+++ b/arch/m68k/platform/528x/gpio.c
@@ -20,7 +20,7 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(NQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR), 24 MCFGPS(NQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
25 MCFGPS(TA, 8, 4, MCFGPTA_GPTDDR, MCFGPTA_GPTPORT, MCFGPTB_GPTPORT), 25 MCFGPS(TA, 8, 4, MCFGPTA_GPTDDR, MCFGPTA_GPTPORT, MCFGPTB_GPTPORT),
26 MCFGPS(TB, 16, 4, MCFGPTB_GPTDDR, MCFGPTB_GPTPORT, MCFGPTB_GPTPORT), 26 MCFGPS(TB, 16, 4, MCFGPTB_GPTDDR, MCFGPTB_GPTPORT, MCFGPTB_GPTPORT),
@@ -46,12 +46,4 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
46 MCFGPF(UA, 176, 4), 46 MCFGPF(UA, 176, 4),
47}; 47};
48 48
49static int __init mcf_gpio_init(void) 49unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
50{
51 unsigned i = 0;
52 while (i < ARRAY_SIZE(mcf_gpio_chips))
53 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
54 return 0;
55}
56
57core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/5307/gpio.c b/arch/m68k/platform/5307/gpio.c
index 91d042030657..7bbbea7a8556 100644
--- a/arch/m68k/platform/5307/gpio.c
+++ b/arch/m68k/platform/5307/gpio.c
@@ -20,16 +20,8 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PP, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT), 24 MCFGPS(PP, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT),
25}; 25};
26 26
27static int __init mcf_gpio_init(void) 27unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
28{
29 unsigned i = 0;
30 while (i < ARRAY_SIZE(mcf_gpio_chips))
31 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
32 return 0;
33}
34
35core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/532x/gpio.c b/arch/m68k/platform/532x/gpio.c
index 9454c65e40ef..3e1b71dc7042 100644
--- a/arch/m68k/platform/532x/gpio.c
+++ b/arch/m68k/platform/532x/gpio.c
@@ -20,7 +20,7 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PIRQ, 0, 8, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR), 24 MCFGPS(PIRQ, 0, 8, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
25 MCFGPF(FECH, 8, 8), 25 MCFGPF(FECH, 8, 8),
26 MCFGPF(FECL, 16, 8), 26 MCFGPF(FECL, 16, 8),
@@ -40,12 +40,4 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
40 MCFGPF(LCDCTLL, 128, 8), 40 MCFGPF(LCDCTLL, 128, 8),
41}; 41};
42 42
43static int __init mcf_gpio_init(void) 43unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
44{
45 unsigned i = 0;
46 while (i < ARRAY_SIZE(mcf_gpio_chips))
47 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
48 return 0;
49}
50
51core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/5407/gpio.c b/arch/m68k/platform/5407/gpio.c
index 91d042030657..7bbbea7a8556 100644
--- a/arch/m68k/platform/5407/gpio.c
+++ b/arch/m68k/platform/5407/gpio.c
@@ -20,16 +20,8 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23struct mcf_gpio_chip mcf_gpio_chips[] = {
24 MCFGPS(PP, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT), 24 MCFGPS(PP, 0, 16, MCFSIM_PADDR, MCFSIM_PADAT, MCFSIM_PADAT),
25}; 25};
26 26
27static int __init mcf_gpio_init(void) 27unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
28{
29 unsigned i = 0;
30 while (i < ARRAY_SIZE(mcf_gpio_chips))
31 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
32 return 0;
33}
34
35core_initcall(mcf_gpio_init);
diff --git a/arch/m68k/platform/54xx/config.c b/arch/m68k/platform/54xx/config.c
index 2081c6cbb3de..20672dadb252 100644
--- a/arch/m68k/platform/54xx/config.c
+++ b/arch/m68k/platform/54xx/config.c
@@ -21,12 +21,19 @@
21#include <asm/m54xxsim.h> 21#include <asm/m54xxsim.h>
22#include <asm/mcfuart.h> 22#include <asm/mcfuart.h>
23#include <asm/m54xxgpt.h> 23#include <asm/m54xxgpt.h>
24#include <asm/mcfgpio.h>
24#ifdef CONFIG_MMU 25#ifdef CONFIG_MMU
25#include <asm/mmu_context.h> 26#include <asm/mmu_context.h>
26#endif 27#endif
27 28
28/***************************************************************************/ 29/***************************************************************************/
29 30
31struct mcf_gpio_chip mcf_gpio_chips[] = { };
32
33unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
34
35/***************************************************************************/
36
30static void __init m54xx_uarts_init(void) 37static void __init m54xx_uarts_init(void)
31{ 38{
32 /* enable io pins */ 39 /* enable io pins */
diff --git a/arch/m68k/platform/coldfire/gpio.c b/arch/m68k/platform/coldfire/gpio.c
index 292a1a5a2d7c..4c8c42450a4e 100644
--- a/arch/m68k/platform/coldfire/gpio.c
+++ b/arch/m68k/platform/coldfire/gpio.c
@@ -122,6 +122,10 @@ struct bus_type mcf_gpio_subsys = {
122 122
123static int __init mcf_gpio_sysinit(void) 123static int __init mcf_gpio_sysinit(void)
124{ 124{
125 unsigned int i = 0;
126
127 while (i < mcf_gpio_chips_size)
128 gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]);
125 return subsys_system_register(&mcf_gpio_subsys, NULL); 129 return subsys_system_register(&mcf_gpio_subsys, NULL);
126} 130}
127 131