diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m68k/include/asm/m528xsim.h | 179 | ||||
-rw-r--r-- | arch/m68k/platform/528x/gpio.c | 427 |
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 | ||
23 | static struct mcf_gpio_chip mcf_gpio_chips[] = { | 23 | static 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 | ||
430 | static int __init mcf_gpio_init(void) | 49 | static int __init mcf_gpio_init(void) |