aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/m68k/include/asm/m528xsim.h179
-rw-r--r--arch/m68k/platform/528x/gpio.c427
2 files changed, 103 insertions, 503 deletions
diff --git a/arch/m68k/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h
index 569476fba18c..d63b99ff7ff7 100644
--- a/arch/m68k/include/asm/m528xsim.h
+++ b/arch/m68k/include/asm/m528xsim.h
@@ -97,100 +97,81 @@
97/* 97/*
98 * GPIO registers 98 * GPIO registers
99 */ 99 */
100#define MCFGPIO_PORTA (MCF_IPSBAR + 0x00100000) 100#define MCFGPIO_PODR_A (MCF_IPSBAR + 0x00100000)
101#define MCFGPIO_PORTB (MCF_IPSBAR + 0x00100001) 101#define MCFGPIO_PODR_B (MCF_IPSBAR + 0x00100001)
102#define MCFGPIO_PORTC (MCF_IPSBAR + 0x00100002) 102#define MCFGPIO_PODR_C (MCF_IPSBAR + 0x00100002)
103#define MCFGPIO_PORTD (MCF_IPSBAR + 0x00100003) 103#define MCFGPIO_PODR_D (MCF_IPSBAR + 0x00100003)
104#define MCFGPIO_PORTE (MCF_IPSBAR + 0x00100004) 104#define MCFGPIO_PODR_E (MCF_IPSBAR + 0x00100004)
105#define MCFGPIO_PORTF (MCF_IPSBAR + 0x00100005) 105#define MCFGPIO_PODR_F (MCF_IPSBAR + 0x00100005)
106#define MCFGPIO_PORTG (MCF_IPSBAR + 0x00100006) 106#define MCFGPIO_PODR_G (MCF_IPSBAR + 0x00100006)
107#define MCFGPIO_PORTH (MCF_IPSBAR + 0x00100007) 107#define MCFGPIO_PODR_H (MCF_IPSBAR + 0x00100007)
108#define MCFGPIO_PORTJ (MCF_IPSBAR + 0x00100008) 108#define MCFGPIO_PODR_J (MCF_IPSBAR + 0x00100008)
109#define MCFGPIO_PORTDD (MCF_IPSBAR + 0x00100009) 109#define MCFGPIO_PODR_DD (MCF_IPSBAR + 0x00100009)
110#define MCFGPIO_PORTEH (MCF_IPSBAR + 0x0010000A) 110#define MCFGPIO_PODR_EH (MCF_IPSBAR + 0x0010000A)
111#define MCFGPIO_PORTEL (MCF_IPSBAR + 0x0010000B) 111#define MCFGPIO_PODR_EL (MCF_IPSBAR + 0x0010000B)
112#define MCFGPIO_PORTAS (MCF_IPSBAR + 0x0010000C) 112#define MCFGPIO_PODR_AS (MCF_IPSBAR + 0x0010000C)
113#define MCFGPIO_PORTQS (MCF_IPSBAR + 0x0010000D) 113#define MCFGPIO_PODR_QS (MCF_IPSBAR + 0x0010000D)
114#define MCFGPIO_PORTSD (MCF_IPSBAR + 0x0010000E) 114#define MCFGPIO_PODR_SD (MCF_IPSBAR + 0x0010000E)
115#define MCFGPIO_PORTTC (MCF_IPSBAR + 0x0010000F) 115#define MCFGPIO_PODR_TC (MCF_IPSBAR + 0x0010000F)
116#define MCFGPIO_PORTTD (MCF_IPSBAR + 0x00100010) 116#define MCFGPIO_PODR_TD (MCF_IPSBAR + 0x00100010)
117#define MCFGPIO_PORTUA (MCF_IPSBAR + 0x00100011) 117#define MCFGPIO_PODR_UA (MCF_IPSBAR + 0x00100011)
118 118
119#define MCFGPIO_DDRA (MCF_IPSBAR + 0x00100014) 119#define MCFGPIO_PDDR_A (MCF_IPSBAR + 0x00100014)
120#define MCFGPIO_DDRB (MCF_IPSBAR + 0x00100015) 120#define MCFGPIO_PDDR_B (MCF_IPSBAR + 0x00100015)
121#define MCFGPIO_DDRC (MCF_IPSBAR + 0x00100016) 121#define MCFGPIO_PDDR_C (MCF_IPSBAR + 0x00100016)
122#define MCFGPIO_DDRD (MCF_IPSBAR + 0x00100017) 122#define MCFGPIO_PDDR_D (MCF_IPSBAR + 0x00100017)
123#define MCFGPIO_DDRE (MCF_IPSBAR + 0x00100018) 123#define MCFGPIO_PDDR_E (MCF_IPSBAR + 0x00100018)
124#define MCFGPIO_DDRF (MCF_IPSBAR + 0x00100019) 124#define MCFGPIO_PDDR_F (MCF_IPSBAR + 0x00100019)
125#define MCFGPIO_DDRG (MCF_IPSBAR + 0x0010001A) 125#define MCFGPIO_PDDR_G (MCF_IPSBAR + 0x0010001A)
126#define MCFGPIO_DDRH (MCF_IPSBAR + 0x0010001B) 126#define MCFGPIO_PDDR_H (MCF_IPSBAR + 0x0010001B)
127#define MCFGPIO_DDRJ (MCF_IPSBAR + 0x0010001C) 127#define MCFGPIO_PDDR_J (MCF_IPSBAR + 0x0010001C)
128#define MCFGPIO_DDRDD (MCF_IPSBAR + 0x0010001D) 128#define MCFGPIO_PDDR_DD (MCF_IPSBAR + 0x0010001D)
129#define MCFGPIO_DDREH (MCF_IPSBAR + 0x0010001E) 129#define MCFGPIO_PDDR_EH (MCF_IPSBAR + 0x0010001E)
130#define MCFGPIO_DDREL (MCF_IPSBAR + 0x0010001F) 130#define MCFGPIO_PDDR_EL (MCF_IPSBAR + 0x0010001F)
131#define MCFGPIO_DDRAS (MCF_IPSBAR + 0x00100020) 131#define MCFGPIO_PDDR_AS (MCF_IPSBAR + 0x00100020)
132#define MCFGPIO_DDRQS (MCF_IPSBAR + 0x00100021) 132#define MCFGPIO_PDDR_QS (MCF_IPSBAR + 0x00100021)
133#define MCFGPIO_DDRSD (MCF_IPSBAR + 0x00100022) 133#define MCFGPIO_PDDR_SD (MCF_IPSBAR + 0x00100022)
134#define MCFGPIO_DDRTC (MCF_IPSBAR + 0x00100023) 134#define MCFGPIO_PDDR_TC (MCF_IPSBAR + 0x00100023)
135#define MCFGPIO_DDRTD (MCF_IPSBAR + 0x00100024) 135#define MCFGPIO_PDDR_TD (MCF_IPSBAR + 0x00100024)
136#define MCFGPIO_DDRUA (MCF_IPSBAR + 0x00100025) 136#define MCFGPIO_PDDR_UA (MCF_IPSBAR + 0x00100025)
137 137
138#define MCFGPIO_PORTAP (MCF_IPSBAR + 0x00100028) 138#define MCFGPIO_PPDSDR_A (MCF_IPSBAR + 0x00100028)
139#define MCFGPIO_PORTBP (MCF_IPSBAR + 0x00100029) 139#define MCFGPIO_PPDSDR_B (MCF_IPSBAR + 0x00100029)
140#define MCFGPIO_PORTCP (MCF_IPSBAR + 0x0010002A) 140#define MCFGPIO_PPDSDR_C (MCF_IPSBAR + 0x0010002A)
141#define MCFGPIO_PORTDP (MCF_IPSBAR + 0x0010002B) 141#define MCFGPIO_PPDSDR_D (MCF_IPSBAR + 0x0010002B)
142#define MCFGPIO_PORTEP (MCF_IPSBAR + 0x0010002C) 142#define MCFGPIO_PPDSDR_E (MCF_IPSBAR + 0x0010002C)
143#define MCFGPIO_PORTFP (MCF_IPSBAR + 0x0010002D) 143#define MCFGPIO_PPDSDR_F (MCF_IPSBAR + 0x0010002D)
144#define MCFGPIO_PORTGP (MCF_IPSBAR + 0x0010002E) 144#define MCFGPIO_PPDSDR_G (MCF_IPSBAR + 0x0010002E)
145#define MCFGPIO_PORTHP (MCF_IPSBAR + 0x0010002F) 145#define MCFGPIO_PPDSDR_H (MCF_IPSBAR + 0x0010002F)
146#define MCFGPIO_PORTJP (MCF_IPSBAR + 0x00100030) 146#define MCFGPIO_PPDSDR_J (MCF_IPSBAR + 0x00100030)
147#define MCFGPIO_PORTDDP (MCF_IPSBAR + 0x00100031) 147#define MCFGPIO_PPDSDR_DD (MCF_IPSBAR + 0x00100031)
148#define MCFGPIO_PORTEHP (MCF_IPSBAR + 0x00100032) 148#define MCFGPIO_PPDSDR_EH (MCF_IPSBAR + 0x00100032)
149#define MCFGPIO_PORTELP (MCF_IPSBAR + 0x00100033) 149#define MCFGPIO_PPDSDR_EL (MCF_IPSBAR + 0x00100033)
150#define MCFGPIO_PORTASP (MCF_IPSBAR + 0x00100034) 150#define MCFGPIO_PPDSDR_AS (MCF_IPSBAR + 0x00100034)
151#define MCFGPIO_PORTQSP (MCF_IPSBAR + 0x00100035) 151#define MCFGPIO_PPDSDR_QS (MCF_IPSBAR + 0x00100035)
152#define MCFGPIO_PORTSDP (MCF_IPSBAR + 0x00100036) 152#define MCFGPIO_PPDSDR_SD (MCF_IPSBAR + 0x00100036)
153#define MCFGPIO_PORTTCP (MCF_IPSBAR + 0x00100037) 153#define MCFGPIO_PPDSDR_TC (MCF_IPSBAR + 0x00100037)
154#define MCFGPIO_PORTTDP (MCF_IPSBAR + 0x00100038) 154#define MCFGPIO_PPDSDR_TD (MCF_IPSBAR + 0x00100038)
155#define MCFGPIO_PORTUAP (MCF_IPSBAR + 0x00100039) 155#define MCFGPIO_PPDSDR_UA (MCF_IPSBAR + 0x00100039)
156 156
157#define MCFGPIO_SETA (MCF_IPSBAR + 0x00100028) 157#define MCFGPIO_PCLRR_A (MCF_IPSBAR + 0x0010003C)
158#define MCFGPIO_SETB (MCF_IPSBAR + 0x00100029) 158#define MCFGPIO_PCLRR_B (MCF_IPSBAR + 0x0010003D)
159#define MCFGPIO_SETC (MCF_IPSBAR + 0x0010002A) 159#define MCFGPIO_PCLRR_C (MCF_IPSBAR + 0x0010003E)
160#define MCFGPIO_SETD (MCF_IPSBAR + 0x0010002B) 160#define MCFGPIO_PCLRR_D (MCF_IPSBAR + 0x0010003F)
161#define MCFGPIO_SETE (MCF_IPSBAR + 0x0010002C) 161#define MCFGPIO_PCLRR_E (MCF_IPSBAR + 0x00100040)
162#define MCFGPIO_SETF (MCF_IPSBAR + 0x0010002D) 162#define MCFGPIO_PCLRR_F (MCF_IPSBAR + 0x00100041)
163#define MCFGPIO_SETG (MCF_IPSBAR + 0x0010002E) 163#define MCFGPIO_PCLRR_G (MCF_IPSBAR + 0x00100042)
164#define MCFGPIO_SETH (MCF_IPSBAR + 0x0010002F) 164#define MCFGPIO_PCLRR_H (MCF_IPSBAR + 0x00100043)
165#define MCFGPIO_SETJ (MCF_IPSBAR + 0x00100030) 165#define MCFGPIO_PCLRR_J (MCF_IPSBAR + 0x00100044)
166#define MCFGPIO_SETDD (MCF_IPSBAR + 0x00100031) 166#define MCFGPIO_PCLRR_DD (MCF_IPSBAR + 0x00100045)
167#define MCFGPIO_SETEH (MCF_IPSBAR + 0x00100032) 167#define MCFGPIO_PCLRR_EH (MCF_IPSBAR + 0x00100046)
168#define MCFGPIO_SETEL (MCF_IPSBAR + 0x00100033) 168#define MCFGPIO_PCLRR_EL (MCF_IPSBAR + 0x00100047)
169#define MCFGPIO_SETAS (MCF_IPSBAR + 0x00100034) 169#define MCFGPIO_PCLRR_AS (MCF_IPSBAR + 0x00100048)
170#define MCFGPIO_SETQS (MCF_IPSBAR + 0x00100035) 170#define MCFGPIO_PCLRR_QS (MCF_IPSBAR + 0x00100049)
171#define MCFGPIO_SETSD (MCF_IPSBAR + 0x00100036) 171#define MCFGPIO_PCLRR_SD (MCF_IPSBAR + 0x0010004A)
172#define MCFGPIO_SETTC (MCF_IPSBAR + 0x00100037) 172#define MCFGPIO_PCLRR_TC (MCF_IPSBAR + 0x0010004B)
173#define MCFGPIO_SETTD (MCF_IPSBAR + 0x00100038) 173#define MCFGPIO_PCLRR_TD (MCF_IPSBAR + 0x0010004C)
174#define MCFGPIO_SETUA (MCF_IPSBAR + 0x00100039) 174#define MCFGPIO_PCLRR_UA (MCF_IPSBAR + 0x0010004D)
175
176#define MCFGPIO_CLRA (MCF_IPSBAR + 0x0010003C)
177#define MCFGPIO_CLRB (MCF_IPSBAR + 0x0010003D)
178#define MCFGPIO_CLRC (MCF_IPSBAR + 0x0010003E)
179#define MCFGPIO_CLRD (MCF_IPSBAR + 0x0010003F)
180#define MCFGPIO_CLRE (MCF_IPSBAR + 0x00100040)
181#define MCFGPIO_CLRF (MCF_IPSBAR + 0x00100041)
182#define MCFGPIO_CLRG (MCF_IPSBAR + 0x00100042)
183#define MCFGPIO_CLRH (MCF_IPSBAR + 0x00100043)
184#define MCFGPIO_CLRJ (MCF_IPSBAR + 0x00100044)
185#define MCFGPIO_CLRDD (MCF_IPSBAR + 0x00100045)
186#define MCFGPIO_CLREH (MCF_IPSBAR + 0x00100046)
187#define MCFGPIO_CLREL (MCF_IPSBAR + 0x00100047)
188#define MCFGPIO_CLRAS (MCF_IPSBAR + 0x00100048)
189#define MCFGPIO_CLRQS (MCF_IPSBAR + 0x00100049)
190#define MCFGPIO_CLRSD (MCF_IPSBAR + 0x0010004A)
191#define MCFGPIO_CLRTC (MCF_IPSBAR + 0x0010004B)
192#define MCFGPIO_CLRTD (MCF_IPSBAR + 0x0010004C)
193#define MCFGPIO_CLRUA (MCF_IPSBAR + 0x0010004D)
194 175
195#define MCFGPIO_PBCDPAR (MCF_IPSBAR + 0x00100050) 176#define MCFGPIO_PBCDPAR (MCF_IPSBAR + 0x00100050)
196#define MCFGPIO_PFPAR (MCF_IPSBAR + 0x00100051) 177#define MCFGPIO_PFPAR (MCF_IPSBAR + 0x00100051)
@@ -242,11 +223,11 @@
242 * definitions for generic gpio support 223 * definitions for generic gpio support
243 * 224 *
244 */ 225 */
245#define MCFGPIO_PODR MCFGPIO_PORTA /* port output data */ 226#define MCFGPIO_PODR MCFGPIO_PODR_A /* port output data */
246#define MCFGPIO_PDDR MCFGPIO_DDRA /* port data direction */ 227#define MCFGPIO_PDDR MCFGPIO_PDDR_A /* port data direction */
247#define MCFGPIO_PPDR MCFGPIO_PORTAP /* port pin data */ 228#define MCFGPIO_PPDR MCFGPIO_PPDSDR_A/* port pin data */
248#define MCFGPIO_SETR MCFGPIO_SETA /* set output */ 229#define MCFGPIO_SETR MCFGPIO_PPDSDR_A/* set output */
249#define MCFGPIO_CLRR MCFGPIO_CLRA /* clr output */ 230#define MCFGPIO_CLRR MCFGPIO_PCLRR_A /* clr output */
250 231
251#define MCFGPIO_IRQ_MAX 8 232#define MCFGPIO_IRQ_MAX 8
252#define MCFGPIO_IRQ_VECBASE MCFINT_VECBASE 233#define MCFGPIO_IRQ_VECBASE MCFINT_VECBASE
diff --git a/arch/m68k/platform/528x/gpio.c b/arch/m68k/platform/528x/gpio.c
index 526db665d87e..81b161c8667f 100644
--- a/arch/m68k/platform/528x/gpio.c
+++ b/arch/m68k/platform/528x/gpio.c
@@ -21,410 +21,29 @@
21#include <asm/mcfgpio.h> 21#include <asm/mcfgpio.h>
22 22
23static struct mcf_gpio_chip mcf_gpio_chips[] = { 23static struct mcf_gpio_chip mcf_gpio_chips[] = {
24 { 24 MCFGPS(NQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
25 .gpio_chip = { 25 MCFGPS(TA, 8, 4, MCFGPTA_GPTDDR, MCFGPTA_GPTPORT, MCFGPTB_GPTPORT),
26 .label = "NQ", 26 MCFGPS(TB, 16, 4, MCFGPTB_GPTDDR, MCFGPTB_GPTPORT, MCFGPTB_GPTPORT),
27 .request = mcf_gpio_request, 27 MCFGPS(QA, 24, 4, MCFQADC_DDRQA, MCFQADC_PORTQA, MCFQADC_PORTQA),
28 .free = mcf_gpio_free, 28 MCFGPS(QB, 32, 4, MCFQADC_DDRQB, MCFQADC_PORTQB, MCFQADC_PORTQB),
29 .direction_input = mcf_gpio_direction_input, 29 MCFGPF(A, 40, 8),
30 .direction_output = mcf_gpio_direction_output, 30 MCFGPF(B, 48, 8),
31 .get = mcf_gpio_get_value, 31 MCFGPF(C, 56, 8),
32 .set = mcf_gpio_set_value, 32 MCFGPF(D, 64, 8),
33 .base = 1, 33 MCFGPF(E, 72, 8),
34 .ngpio = 7, 34 MCFGPF(F, 80, 8),
35 }, 35 MCFGPF(G, 88, 8),
36 .pddr = (void __iomem *)MCFEPORT_EPDDR, 36 MCFGPF(H, 96, 8),
37 .podr = (void __iomem *)MCFEPORT_EPDR, 37 MCFGPF(J, 104, 8),
38 .ppdr = (void __iomem *)MCFEPORT_EPPDR, 38 MCFGPF(DD, 112, 8),
39 }, 39 MCFGPF(EH, 120, 8),
40 { 40 MCFGPF(EL, 128, 8),
41 .gpio_chip = { 41 MCFGPF(AS, 136, 6),
42 .label = "TA", 42 MCFGPF(QS, 144, 7),
43 .request = mcf_gpio_request, 43 MCFGPF(SD, 152, 6),
44 .free = mcf_gpio_free, 44 MCFGPF(TC, 160, 4),
45 .direction_input = mcf_gpio_direction_input, 45 MCFGPF(TD, 168, 4),
46 .direction_output = mcf_gpio_direction_output, 46 MCFGPF(UA, 176, 4),
47 .get = mcf_gpio_get_value,
48 .set = mcf_gpio_set_value_fast,
49 .base = 8,
50 .ngpio = 4,
51 },
52 .pddr = (void __iomem *)MCFGPTA_GPTDDR,
53 .podr = (void __iomem *)MCFGPTA_GPTPORT,
54 .ppdr = (void __iomem *)MCFGPTB_GPTPORT,
55 },
56 {
57 .gpio_chip = {
58 .label = "TB",
59 .request = mcf_gpio_request,
60 .free = mcf_gpio_free,
61 .direction_input = mcf_gpio_direction_input,
62 .direction_output = mcf_gpio_direction_output,
63 .get = mcf_gpio_get_value,
64 .set = mcf_gpio_set_value_fast,
65 .base = 16,
66 .ngpio = 4,
67 },
68 .pddr = (void __iomem *)MCFGPTB_GPTDDR,
69 .podr = (void __iomem *)MCFGPTB_GPTPORT,
70 .ppdr = (void __iomem *)MCFGPTB_GPTPORT,
71 },
72 {
73 .gpio_chip = {
74 .label = "QA",
75 .request = mcf_gpio_request,
76 .free = mcf_gpio_free,
77 .direction_input = mcf_gpio_direction_input,
78 .direction_output = mcf_gpio_direction_output,
79 .get = mcf_gpio_get_value,
80 .set = mcf_gpio_set_value_fast,
81 .base = 24,
82 .ngpio = 4,
83 },
84 .pddr = (void __iomem *)MCFQADC_DDRQA,
85 .podr = (void __iomem *)MCFQADC_PORTQA,
86 .ppdr = (void __iomem *)MCFQADC_PORTQA,
87 },
88 {
89 .gpio_chip = {
90 .label = "QB",
91 .request = mcf_gpio_request,
92 .free = mcf_gpio_free,
93 .direction_input = mcf_gpio_direction_input,
94 .direction_output = mcf_gpio_direction_output,
95 .get = mcf_gpio_get_value,
96 .set = mcf_gpio_set_value_fast,
97 .base = 32,
98 .ngpio = 4,
99 },
100 .pddr = (void __iomem *)MCFQADC_DDRQB,
101 .podr = (void __iomem *)MCFQADC_PORTQB,
102 .ppdr = (void __iomem *)MCFQADC_PORTQB,
103 },
104 {
105 .gpio_chip = {
106 .label = "A",
107 .request = mcf_gpio_request,
108 .free = mcf_gpio_free,
109 .direction_input = mcf_gpio_direction_input,
110 .direction_output = mcf_gpio_direction_output,
111 .get = mcf_gpio_get_value,
112 .set = mcf_gpio_set_value_fast,
113 .base = 40,
114 .ngpio = 8,
115 },
116 .pddr = (void __iomem *)MCFGPIO_DDRA,
117 .podr = (void __iomem *)MCFGPIO_PORTA,
118 .ppdr = (void __iomem *)MCFGPIO_PORTAP,
119 .setr = (void __iomem *)MCFGPIO_SETA,
120 .clrr = (void __iomem *)MCFGPIO_CLRA,
121 },
122 {
123 .gpio_chip = {
124 .label = "B",
125 .request = mcf_gpio_request,
126 .free = mcf_gpio_free,
127 .direction_input = mcf_gpio_direction_input,
128 .direction_output = mcf_gpio_direction_output,
129 .get = mcf_gpio_get_value,
130 .set = mcf_gpio_set_value_fast,
131 .base = 48,
132 .ngpio = 8,
133 },
134 .pddr = (void __iomem *)MCFGPIO_DDRB,
135 .podr = (void __iomem *)MCFGPIO_PORTB,
136 .ppdr = (void __iomem *)MCFGPIO_PORTBP,
137 .setr = (void __iomem *)MCFGPIO_SETB,
138 .clrr = (void __iomem *)MCFGPIO_CLRB,
139 },
140 {
141 .gpio_chip = {
142 .label = "C",
143 .request = mcf_gpio_request,
144 .free = mcf_gpio_free,
145 .direction_input = mcf_gpio_direction_input,
146 .direction_output = mcf_gpio_direction_output,
147 .get = mcf_gpio_get_value,
148 .set = mcf_gpio_set_value_fast,
149 .base = 56,
150 .ngpio = 8,
151 },
152 .pddr = (void __iomem *)MCFGPIO_DDRC,
153 .podr = (void __iomem *)MCFGPIO_PORTC,
154 .ppdr = (void __iomem *)MCFGPIO_PORTCP,
155 .setr = (void __iomem *)MCFGPIO_SETC,
156 .clrr = (void __iomem *)MCFGPIO_CLRC,
157 },
158 {
159 .gpio_chip = {
160 .label = "D",
161 .request = mcf_gpio_request,
162 .free = mcf_gpio_free,
163 .direction_input = mcf_gpio_direction_input,
164 .direction_output = mcf_gpio_direction_output,
165 .get = mcf_gpio_get_value,
166 .set = mcf_gpio_set_value_fast,
167 .base = 64,
168 .ngpio = 8,
169 },
170 .pddr = (void __iomem *)MCFGPIO_DDRD,
171 .podr = (void __iomem *)MCFGPIO_PORTD,
172 .ppdr = (void __iomem *)MCFGPIO_PORTDP,
173 .setr = (void __iomem *)MCFGPIO_SETD,
174 .clrr = (void __iomem *)MCFGPIO_CLRD,
175 },
176 {
177 .gpio_chip = {
178 .label = "E",
179 .request = mcf_gpio_request,
180 .free = mcf_gpio_free,
181 .direction_input = mcf_gpio_direction_input,
182 .direction_output = mcf_gpio_direction_output,
183 .get = mcf_gpio_get_value,
184 .set = mcf_gpio_set_value_fast,
185 .base = 72,
186 .ngpio = 8,
187 },
188 .pddr = (void __iomem *)MCFGPIO_DDRE,
189 .podr = (void __iomem *)MCFGPIO_PORTE,
190 .ppdr = (void __iomem *)MCFGPIO_PORTEP,
191 .setr = (void __iomem *)MCFGPIO_SETE,
192 .clrr = (void __iomem *)MCFGPIO_CLRE,
193 },
194 {
195 .gpio_chip = {
196 .label = "F",
197 .request = mcf_gpio_request,
198 .free = mcf_gpio_free,
199 .direction_input = mcf_gpio_direction_input,
200 .direction_output = mcf_gpio_direction_output,
201 .get = mcf_gpio_get_value,
202 .set = mcf_gpio_set_value_fast,
203 .base = 80,
204 .ngpio = 8,
205 },
206 .pddr = (void __iomem *)MCFGPIO_DDRF,
207 .podr = (void __iomem *)MCFGPIO_PORTF,
208 .ppdr = (void __iomem *)MCFGPIO_PORTFP,
209 .setr = (void __iomem *)MCFGPIO_SETF,
210 .clrr = (void __iomem *)MCFGPIO_CLRF,
211 },
212 {
213 .gpio_chip = {
214 .label = "G",
215 .request = mcf_gpio_request,
216 .free = mcf_gpio_free,
217 .direction_input = mcf_gpio_direction_input,
218 .direction_output = mcf_gpio_direction_output,
219 .get = mcf_gpio_get_value,
220 .set = mcf_gpio_set_value_fast,
221 .base = 88,
222 .ngpio = 8,
223 },
224 .pddr = (void __iomem *)MCFGPIO_DDRG,
225 .podr = (void __iomem *)MCFGPIO_PORTG,
226 .ppdr = (void __iomem *)MCFGPIO_PORTGP,
227 .setr = (void __iomem *)MCFGPIO_SETG,
228 .clrr = (void __iomem *)MCFGPIO_CLRG,
229 },
230 {
231 .gpio_chip = {
232 .label = "H",
233 .request = mcf_gpio_request,
234 .free = mcf_gpio_free,
235 .direction_input = mcf_gpio_direction_input,
236 .direction_output = mcf_gpio_direction_output,
237 .get = mcf_gpio_get_value,
238 .set = mcf_gpio_set_value_fast,
239 .base = 96,
240 .ngpio = 8,
241 },
242 .pddr = (void __iomem *)MCFGPIO_DDRH,
243 .podr = (void __iomem *)MCFGPIO_PORTH,
244 .ppdr = (void __iomem *)MCFGPIO_PORTHP,
245 .setr = (void __iomem *)MCFGPIO_SETH,
246 .clrr = (void __iomem *)MCFGPIO_CLRH,
247 },
248 {
249 .gpio_chip = {
250 .label = "J",
251 .request = mcf_gpio_request,
252 .free = mcf_gpio_free,
253 .direction_input = mcf_gpio_direction_input,
254 .direction_output = mcf_gpio_direction_output,
255 .get = mcf_gpio_get_value,
256 .set = mcf_gpio_set_value_fast,
257 .base = 104,
258 .ngpio = 8,
259 },
260 .pddr = (void __iomem *)MCFGPIO_DDRJ,
261 .podr = (void __iomem *)MCFGPIO_PORTJ,
262 .ppdr = (void __iomem *)MCFGPIO_PORTJP,
263 .setr = (void __iomem *)MCFGPIO_SETJ,
264 .clrr = (void __iomem *)MCFGPIO_CLRJ,
265 },
266 {
267 .gpio_chip = {
268 .label = "DD",
269 .request = mcf_gpio_request,
270 .free = mcf_gpio_free,
271 .direction_input = mcf_gpio_direction_input,
272 .direction_output = mcf_gpio_direction_output,
273 .get = mcf_gpio_get_value,
274 .set = mcf_gpio_set_value_fast,
275 .base = 112,
276 .ngpio = 8,
277 },
278 .pddr = (void __iomem *)MCFGPIO_DDRDD,
279 .podr = (void __iomem *)MCFGPIO_PORTDD,
280 .ppdr = (void __iomem *)MCFGPIO_PORTDDP,
281 .setr = (void __iomem *)MCFGPIO_SETDD,
282 .clrr = (void __iomem *)MCFGPIO_CLRDD,
283 },
284 {
285 .gpio_chip = {
286 .label = "EH",
287 .request = mcf_gpio_request,
288 .free = mcf_gpio_free,
289 .direction_input = mcf_gpio_direction_input,
290 .direction_output = mcf_gpio_direction_output,
291 .get = mcf_gpio_get_value,
292 .set = mcf_gpio_set_value_fast,
293 .base = 120,
294 .ngpio = 8,
295 },
296 .pddr = (void __iomem *)MCFGPIO_DDREH,
297 .podr = (void __iomem *)MCFGPIO_PORTEH,
298 .ppdr = (void __iomem *)MCFGPIO_PORTEHP,
299 .setr = (void __iomem *)MCFGPIO_SETEH,
300 .clrr = (void __iomem *)MCFGPIO_CLREH,
301 },
302 {
303 .gpio_chip = {
304 .label = "EL",
305 .request = mcf_gpio_request,
306 .free = mcf_gpio_free,
307 .direction_input = mcf_gpio_direction_input,
308 .direction_output = mcf_gpio_direction_output,
309 .get = mcf_gpio_get_value,
310 .set = mcf_gpio_set_value_fast,
311 .base = 128,
312 .ngpio = 8,
313 },
314 .pddr = (void __iomem *)MCFGPIO_DDREL,
315 .podr = (void __iomem *)MCFGPIO_PORTEL,
316 .ppdr = (void __iomem *)MCFGPIO_PORTELP,
317 .setr = (void __iomem *)MCFGPIO_SETEL,
318 .clrr = (void __iomem *)MCFGPIO_CLREL,
319 },
320 {
321 .gpio_chip = {
322 .label = "AS",
323 .request = mcf_gpio_request,
324 .free = mcf_gpio_free,
325 .direction_input = mcf_gpio_direction_input,
326 .direction_output = mcf_gpio_direction_output,
327 .get = mcf_gpio_get_value,
328 .set = mcf_gpio_set_value_fast,
329 .base = 136,
330 .ngpio = 6,
331 },
332 .pddr = (void __iomem *)MCFGPIO_DDRAS,
333 .podr = (void __iomem *)MCFGPIO_PORTAS,
334 .ppdr = (void __iomem *)MCFGPIO_PORTASP,
335 .setr = (void __iomem *)MCFGPIO_SETAS,
336 .clrr = (void __iomem *)MCFGPIO_CLRAS,
337 },
338 {
339 .gpio_chip = {
340 .label = "QS",
341 .request = mcf_gpio_request,
342 .free = mcf_gpio_free,
343 .direction_input = mcf_gpio_direction_input,
344 .direction_output = mcf_gpio_direction_output,
345 .get = mcf_gpio_get_value,
346 .set = mcf_gpio_set_value_fast,
347 .base = 144,
348 .ngpio = 7,
349 },
350 .pddr = (void __iomem *)MCFGPIO_DDRQS,
351 .podr = (void __iomem *)MCFGPIO_PORTQS,
352 .ppdr = (void __iomem *)MCFGPIO_PORTQSP,
353 .setr = (void __iomem *)MCFGPIO_SETQS,
354 .clrr = (void __iomem *)MCFGPIO_CLRQS,
355 },
356 {
357 .gpio_chip = {
358 .label = "SD",
359 .request = mcf_gpio_request,
360 .free = mcf_gpio_free,
361 .direction_input = mcf_gpio_direction_input,
362 .direction_output = mcf_gpio_direction_output,
363 .get = mcf_gpio_get_value,
364 .set = mcf_gpio_set_value_fast,
365 .base = 152,
366 .ngpio = 6,
367 },
368 .pddr = (void __iomem *)MCFGPIO_DDRSD,
369 .podr = (void __iomem *)MCFGPIO_PORTSD,
370 .ppdr = (void __iomem *)MCFGPIO_PORTSDP,
371 .setr = (void __iomem *)MCFGPIO_SETSD,
372 .clrr = (void __iomem *)MCFGPIO_CLRSD,
373 },
374 {
375 .gpio_chip = {
376 .label = "TC",
377 .request = mcf_gpio_request,
378 .free = mcf_gpio_free,
379 .direction_input = mcf_gpio_direction_input,
380 .direction_output = mcf_gpio_direction_output,
381 .get = mcf_gpio_get_value,
382 .set = mcf_gpio_set_value_fast,
383 .base = 160,
384 .ngpio = 4,
385 },
386 .pddr = (void __iomem *)MCFGPIO_DDRTC,
387 .podr = (void __iomem *)MCFGPIO_PORTTC,
388 .ppdr = (void __iomem *)MCFGPIO_PORTTCP,
389 .setr = (void __iomem *)MCFGPIO_SETTC,
390 .clrr = (void __iomem *)MCFGPIO_CLRTC,
391 },
392 {
393 .gpio_chip = {
394 .label = "TD",
395 .request = mcf_gpio_request,
396 .free = mcf_gpio_free,
397 .direction_input = mcf_gpio_direction_input,
398 .direction_output = mcf_gpio_direction_output,
399 .get = mcf_gpio_get_value,
400 .set = mcf_gpio_set_value_fast,
401 .base = 168,
402 .ngpio = 4,
403 },
404 .pddr = (void __iomem *)MCFGPIO_DDRTD,
405 .podr = (void __iomem *)MCFGPIO_PORTTD,
406 .ppdr = (void __iomem *)MCFGPIO_PORTTDP,
407 .setr = (void __iomem *)MCFGPIO_SETTD,
408 .clrr = (void __iomem *)MCFGPIO_CLRTD,
409 },
410 {
411 .gpio_chip = {
412 .label = "UA",
413 .request = mcf_gpio_request,
414 .free = mcf_gpio_free,
415 .direction_input = mcf_gpio_direction_input,
416 .direction_output = mcf_gpio_direction_output,
417 .get = mcf_gpio_get_value,
418 .set = mcf_gpio_set_value_fast,
419 .base = 176,
420 .ngpio = 4,
421 },
422 .pddr = (void __iomem *)MCFGPIO_DDRUA,
423 .podr = (void __iomem *)MCFGPIO_PORTUA,
424 .ppdr = (void __iomem *)MCFGPIO_PORTUAP,
425 .setr = (void __iomem *)MCFGPIO_SETUA,
426 .clrr = (void __iomem *)MCFGPIO_CLRUA,
427 },
428}; 47};
429 48
430static int __init mcf_gpio_init(void) 49static int __init mcf_gpio_init(void)