aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68knommu
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 22:02:36 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 22:02:36 -0400
commite34551339a195aa548eaf698523714a8fe7f1984 (patch)
tree8319ac8492bc1bf6dd6182cbcb9002b2aeb82d63 /arch/m68knommu
parent242e5d06be2ad2633c85313a37862e03f4450a46 (diff)
parent47e0c7e128afb85cf4fb7792e6e7fcb91e2a5cc4 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: (41 commits) m68knommu: external interrupt support to ColdFire intc-simr controller m68knommu: external interrupt support to ColdFire intc-2 controller m68knommu: remove ColdFire CLOCK_DIV config option m68knommu: fix gpio warnings for ColdFire 5407 targets m68knommu: fix gpio warnings for ColdFire 532x targets m68knommu: fix gpio warnings for ColdFire 5307 targets m68knommu: fix gpio warnings for ColdFire 527x targets m68knommu: fix gpio warnings for ColdFire 5272 targets m68knommu: fix gpio warnings for ColdFire 5249 targets m68knommu: fix gpio warnings for ColdFire 523x targets m68knommu: fix gpio warnings for ColdFire 520x targets m68knommu: fix gpio warnings for ColdFire 5206e targets m68knommu: fix gpio warnings for ColdFire 5206 targets m68knommu: fixing compiler warnings m68knommu: limit interrupts supported by ColdFire intc-simr driver m68knommu: move some init code out of unmask routine for ColdFire intc-2 m68knommu: limit interrupts supported by ColdFire intc-2 driver m68knommu: add basic support for the ColdFire based FireBee board m68knommu: make ColdFire internal peripheral region configurable m68knommu: clean up definitions of ColdFire peripheral base registers ...
Diffstat (limited to 'arch/m68knommu')
-rw-r--r--arch/m68knommu/Kconfig58
-rw-r--r--arch/m68knommu/kernel/irq.c6
-rw-r--r--arch/m68knommu/platform/5206/gpio.c6
-rw-r--r--arch/m68knommu/platform/5206e/gpio.c6
-rw-r--r--arch/m68knommu/platform/520x/config.c36
-rw-r--r--arch/m68knommu/platform/520x/gpio.c96
-rw-r--r--arch/m68knommu/platform/523x/config.c10
-rw-r--r--arch/m68knommu/platform/523x/gpio.c136
-rw-r--r--arch/m68knommu/platform/5249/gpio.c12
-rw-r--r--arch/m68knommu/platform/5249/intc2.c20
-rw-r--r--arch/m68knommu/platform/5272/gpio.c18
-rw-r--r--arch/m68knommu/platform/5272/intc.c33
-rw-r--r--arch/m68knommu/platform/527x/config.c14
-rw-r--r--arch/m68knommu/platform/527x/gpio.c312
-rw-r--r--arch/m68knommu/platform/528x/config.c14
-rw-r--r--arch/m68knommu/platform/528x/gpio.c210
-rw-r--r--arch/m68knommu/platform/5307/gpio.c6
-rw-r--r--arch/m68knommu/platform/532x/gpio.c166
-rw-r--r--arch/m68knommu/platform/5407/gpio.c6
-rw-r--r--arch/m68knommu/platform/54xx/Makefile1
-rw-r--r--arch/m68knommu/platform/54xx/firebee.c86
-rw-r--r--arch/m68knommu/platform/68328/ints.c12
-rw-r--r--arch/m68knommu/platform/68360/ints.c18
-rw-r--r--arch/m68knommu/platform/coldfire/dma.c8
-rw-r--r--arch/m68knommu/platform/coldfire/head.S10
-rw-r--r--arch/m68knommu/platform/coldfire/intc-2.c176
-rw-r--r--arch/m68knommu/platform/coldfire/intc-simr.c165
-rw-r--r--arch/m68knommu/platform/coldfire/intc.c20
-rw-r--r--arch/m68knommu/platform/coldfire/pit.c2
-rw-r--r--arch/m68knommu/platform/coldfire/timers.c4
30 files changed, 999 insertions, 668 deletions
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index 8b9dacaa0f6e..b5424cf948e6 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -3,6 +3,7 @@ config M68K
3 default y 3 default y
4 select HAVE_IDE 4 select HAVE_IDE
5 select HAVE_GENERIC_HARDIRQS 5 select HAVE_GENERIC_HARDIRQS
6 select GENERIC_HARDIRQS_NO_DEPRECATED
6 7
7config MMU 8config MMU
8 bool 9 bool
@@ -78,6 +79,12 @@ config HAVE_CACHE_SPLIT
78config HAVE_CACHE_CB 79config HAVE_CACHE_CB
79 bool 80 bool
80 81
82config HAVE_MBAR
83 bool
84
85config HAVE_IPSBAR
86 bool
87
81source "init/Kconfig" 88source "init/Kconfig"
82 89
83source "kernel/Kconfig.freezer" 90source "kernel/Kconfig.freezer"
@@ -111,12 +118,14 @@ config M68360
111config M5206 118config M5206
112 bool "MCF5206" 119 bool "MCF5206"
113 select COLDFIRE_SW_A7 120 select COLDFIRE_SW_A7
121 select HAVE_MBAR
114 help 122 help
115 Motorola ColdFire 5206 processor support. 123 Motorola ColdFire 5206 processor support.
116 124
117config M5206e 125config M5206e
118 bool "MCF5206e" 126 bool "MCF5206e"
119 select COLDFIRE_SW_A7 127 select COLDFIRE_SW_A7
128 select HAVE_MBAR
120 help 129 help
121 Motorola ColdFire 5206e processor support. 130 Motorola ColdFire 5206e processor support.
122 131
@@ -131,30 +140,35 @@ config M523x
131 bool "MCF523x" 140 bool "MCF523x"
132 select GENERIC_CLOCKEVENTS 141 select GENERIC_CLOCKEVENTS
133 select HAVE_CACHE_SPLIT 142 select HAVE_CACHE_SPLIT
143 select HAVE_IPSBAR
134 help 144 help
135 Freescale Coldfire 5230/1/2/4/5 processor support 145 Freescale Coldfire 5230/1/2/4/5 processor support
136 146
137config M5249 147config M5249
138 bool "MCF5249" 148 bool "MCF5249"
139 select COLDFIRE_SW_A7 149 select COLDFIRE_SW_A7
150 select HAVE_MBAR
140 help 151 help
141 Motorola ColdFire 5249 processor support. 152 Motorola ColdFire 5249 processor support.
142 153
143config M5271 154config M5271
144 bool "MCF5271" 155 bool "MCF5271"
145 select HAVE_CACHE_SPLIT 156 select HAVE_CACHE_SPLIT
157 select HAVE_IPSBAR
146 help 158 help
147 Freescale (Motorola) ColdFire 5270/5271 processor support. 159 Freescale (Motorola) ColdFire 5270/5271 processor support.
148 160
149config M5272 161config M5272
150 bool "MCF5272" 162 bool "MCF5272"
151 select COLDFIRE_SW_A7 163 select COLDFIRE_SW_A7
164 select HAVE_MBAR
152 help 165 help
153 Motorola ColdFire 5272 processor support. 166 Motorola ColdFire 5272 processor support.
154 167
155config M5275 168config M5275
156 bool "MCF5275" 169 bool "MCF5275"
157 select HAVE_CACHE_SPLIT 170 select HAVE_CACHE_SPLIT
171 select HAVE_IPSBAR
158 help 172 help
159 Freescale (Motorola) ColdFire 5274/5275 processor support. 173 Freescale (Motorola) ColdFire 5274/5275 processor support.
160 174
@@ -162,6 +176,7 @@ config M528x
162 bool "MCF528x" 176 bool "MCF528x"
163 select GENERIC_CLOCKEVENTS 177 select GENERIC_CLOCKEVENTS
164 select HAVE_CACHE_SPLIT 178 select HAVE_CACHE_SPLIT
179 select HAVE_IPSBAR
165 help 180 help
166 Motorola ColdFire 5280/5282 processor support. 181 Motorola ColdFire 5280/5282 processor support.
167 182
@@ -169,6 +184,7 @@ config M5307
169 bool "MCF5307" 184 bool "MCF5307"
170 select COLDFIRE_SW_A7 185 select COLDFIRE_SW_A7
171 select HAVE_CACHE_CB 186 select HAVE_CACHE_CB
187 select HAVE_MBAR
172 help 188 help
173 Motorola ColdFire 5307 processor support. 189 Motorola ColdFire 5307 processor support.
174 190
@@ -182,18 +198,21 @@ config M5407
182 bool "MCF5407" 198 bool "MCF5407"
183 select COLDFIRE_SW_A7 199 select COLDFIRE_SW_A7
184 select HAVE_CACHE_CB 200 select HAVE_CACHE_CB
201 select HAVE_MBAR
185 help 202 help
186 Motorola ColdFire 5407 processor support. 203 Motorola ColdFire 5407 processor support.
187 204
188config M547x 205config M547x
189 bool "MCF547x" 206 bool "MCF547x"
190 select HAVE_CACHE_CB 207 select HAVE_CACHE_CB
208 select HAVE_MBAR
191 help 209 help
192 Freescale ColdFire 5470/5471/5472/5473/5474/5475 processor support. 210 Freescale ColdFire 5470/5471/5472/5473/5474/5475 processor support.
193 211
194config M548x 212config M548x
195 bool "MCF548x" 213 bool "MCF548x"
196 select HAVE_CACHE_CB 214 select HAVE_CACHE_CB
215 select HAVE_MBAR
197 help 216 help
198 Freescale ColdFire 5480/5481/5482/5483/5484/5485 processor support. 217 Freescale ColdFire 5480/5481/5482/5483/5484/5485 processor support.
199 218
@@ -241,17 +260,6 @@ config CLOCK_FREQ
241 if it is fitted (there are some exceptions). This value will be 260 if it is fitted (there are some exceptions). This value will be
242 specific to the exact CPU that you are using. 261 specific to the exact CPU that you are using.
243 262
244config CLOCK_DIV
245 int "Set the core/bus clock divide ratio"
246 default "1"
247 depends on CLOCK_SET
248 help
249 On many SoC style CPUs the master CPU clock is also used to drive
250 on-chip peripherals. The clock that is distributed to these
251 peripherals is sometimes a fixed ratio of the master clock
252 frequency. If so then set this to the divider ratio of the
253 master clock to the peripheral clock. If not sure then select 1.
254
255config OLDMASK 263config OLDMASK
256 bool "Old mask 5307 (1H55J) silicon" 264 bool "Old mask 5307 (1H55J) silicon"
257 depends on M5307 265 depends on M5307
@@ -500,6 +508,12 @@ config M5407C3
500 help 508 help
501 Support for the Motorola M5407C3 board. 509 Support for the Motorola M5407C3 board.
502 510
511config FIREBEE
512 bool "FireBee board support"
513 depends on M547x
514 help
515 Support for the FireBee ColdFire 5475 based board.
516
503config CLEOPATRA 517config CLEOPATRA
504 bool "Feith CLEOPATRA board support" 518 bool "Feith CLEOPATRA board support"
505 depends on (M5307 || M5407) 519 depends on (M5307 || M5407)
@@ -649,6 +663,28 @@ config VECTORBASE
649 platforms this address is programmed into the VBR register, thus 663 platforms this address is programmed into the VBR register, thus
650 actually setting the address to use. 664 actually setting the address to use.
651 665
666config MBAR
667 hex "Address of the MBAR (internal peripherals)"
668 default "0x10000000"
669 depends on HAVE_MBAR
670 help
671 Define the address of the internal system peripherals. This value
672 is set in the processors MBAR register. This is generally setup by
673 the boot loader, and will not be written by the kernel. By far most
674 ColdFire boards use the default 0x10000000 value, so if unsure then
675 use this.
676
677config IPSBAR
678 hex "Address of the IPSBAR (internal peripherals)"
679 default "0x40000000"
680 depends on HAVE_IPSBAR
681 help
682 Define the address of the internal system peripherals. This value
683 is set in the processors IPSBAR register. This is generally setup by
684 the boot loader, and will not be written by the kernel. By far most
685 ColdFire boards use the default 0x40000000 value, so if unsure then
686 use this.
687
652config KERNELBASE 688config KERNELBASE
653 hex "Address of the base of kernel code" 689 hex "Address of the base of kernel code"
654 default "0x400" 690 default "0x400"
diff --git a/arch/m68knommu/kernel/irq.c b/arch/m68knommu/kernel/irq.c
index c9cac36d4422..c7dd48f37bee 100644
--- a/arch/m68knommu/kernel/irq.c
+++ b/arch/m68knommu/kernel/irq.c
@@ -38,11 +38,13 @@ int show_interrupts(struct seq_file *p, void *v)
38 seq_puts(p, " CPU0\n"); 38 seq_puts(p, " CPU0\n");
39 39
40 if (irq < NR_IRQS) { 40 if (irq < NR_IRQS) {
41 ap = irq_desc[irq].action; 41 struct irq_desc *desc = irq_to_desc(irq);
42
43 ap = desc->action;
42 if (ap) { 44 if (ap) {
43 seq_printf(p, "%3d: ", irq); 45 seq_printf(p, "%3d: ", irq);
44 seq_printf(p, "%10u ", kstat_irqs(irq)); 46 seq_printf(p, "%10u ", kstat_irqs(irq));
45 seq_printf(p, "%14s ", irq_desc[irq].chip->name); 47 seq_printf(p, "%14s ", get_irq_desc_chip(desc)->name);
46 48
47 seq_printf(p, "%s", ap->name); 49 seq_printf(p, "%s", ap->name);
48 for (ap = ap->next; ap; ap = ap->next) 50 for (ap = ap->next; ap; ap = ap->next)
diff --git a/arch/m68knommu/platform/5206/gpio.c b/arch/m68knommu/platform/5206/gpio.c
index 60f779ce1651..b9ab4a120f28 100644
--- a/arch/m68knommu/platform/5206/gpio.c
+++ b/arch/m68knommu/platform/5206/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 8, 33 .ngpio = 8,
34 }, 34 },
35 .pddr = MCFSIM_PADDR, 35 .pddr = (void __iomem *) MCFSIM_PADDR,
36 .podr = MCFSIM_PADAT, 36 .podr = (void __iomem *) MCFSIM_PADAT,
37 .ppdr = MCFSIM_PADAT, 37 .ppdr = (void __iomem *) MCFSIM_PADAT,
38 }, 38 },
39}; 39};
40 40
diff --git a/arch/m68knommu/platform/5206e/gpio.c b/arch/m68knommu/platform/5206e/gpio.c
index 60f779ce1651..b9ab4a120f28 100644
--- a/arch/m68knommu/platform/5206e/gpio.c
+++ b/arch/m68knommu/platform/5206e/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 8, 33 .ngpio = 8,
34 }, 34 },
35 .pddr = MCFSIM_PADDR, 35 .pddr = (void __iomem *) MCFSIM_PADDR,
36 .podr = MCFSIM_PADAT, 36 .podr = (void __iomem *) MCFSIM_PADAT,
37 .ppdr = MCFSIM_PADAT, 37 .ppdr = (void __iomem *) MCFSIM_PADAT,
38 }, 38 },
39}; 39};
40 40
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c
index 71d2ba474c63..621238f1a219 100644
--- a/arch/m68knommu/platform/520x/config.c
+++ b/arch/m68knommu/platform/520x/config.c
@@ -27,15 +27,15 @@
27 27
28static struct mcf_platform_uart m520x_uart_platform[] = { 28static struct mcf_platform_uart m520x_uart_platform[] = {
29 { 29 {
30 .mapbase = MCF_MBAR + MCFUART_BASE1, 30 .mapbase = MCFUART_BASE1,
31 .irq = MCFINT_VECBASE + MCFINT_UART0, 31 .irq = MCFINT_VECBASE + MCFINT_UART0,
32 }, 32 },
33 { 33 {
34 .mapbase = MCF_MBAR + MCFUART_BASE2, 34 .mapbase = MCFUART_BASE2,
35 .irq = MCFINT_VECBASE + MCFINT_UART1, 35 .irq = MCFINT_VECBASE + MCFINT_UART1,
36 }, 36 },
37 { 37 {
38 .mapbase = MCF_MBAR + MCFUART_BASE3, 38 .mapbase = MCFUART_BASE3,
39 .irq = MCFINT_VECBASE + MCFINT_UART2, 39 .irq = MCFINT_VECBASE + MCFINT_UART2,
40 }, 40 },
41 { }, 41 { },
@@ -49,8 +49,8 @@ static struct platform_device m520x_uart = {
49 49
50static struct resource m520x_fec_resources[] = { 50static struct resource m520x_fec_resources[] = {
51 { 51 {
52 .start = MCF_MBAR + 0x30000, 52 .start = MCFFEC_BASE,
53 .end = MCF_MBAR + 0x30000 + 0x7ff, 53 .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
54 .flags = IORESOURCE_MEM, 54 .flags = IORESOURCE_MEM,
55 }, 55 },
56 { 56 {
@@ -208,11 +208,11 @@ static void __init m520x_qspi_init(void)
208{ 208{
209 u16 par; 209 u16 par;
210 /* setup Port QS for QSPI with gpio CS control */ 210 /* setup Port QS for QSPI with gpio CS control */
211 writeb(0x3f, MCF_IPSBAR + MCF_GPIO_PAR_QSPI); 211 writeb(0x3f, MCF_GPIO_PAR_QSPI);
212 /* make U1CTS and U2RTS gpio for cs_control */ 212 /* make U1CTS and U2RTS gpio for cs_control */
213 par = readw(MCF_IPSBAR + MCF_GPIO_PAR_UART); 213 par = readw(MCF_GPIO_PAR_UART);
214 par &= 0x00ff; 214 par &= 0x00ff;
215 writew(par, MCF_IPSBAR + MCF_GPIO_PAR_UART); 215 writew(par, MCF_GPIO_PAR_UART);
216} 216}
217#endif /* defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) */ 217#endif /* defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) */
218 218
@@ -234,23 +234,23 @@ static void __init m520x_uart_init_line(int line, int irq)
234 234
235 switch (line) { 235 switch (line) {
236 case 0: 236 case 0:
237 par = readw(MCF_IPSBAR + MCF_GPIO_PAR_UART); 237 par = readw(MCF_GPIO_PAR_UART);
238 par |= MCF_GPIO_PAR_UART_PAR_UTXD0 | 238 par |= MCF_GPIO_PAR_UART_PAR_UTXD0 |
239 MCF_GPIO_PAR_UART_PAR_URXD0; 239 MCF_GPIO_PAR_UART_PAR_URXD0;
240 writew(par, MCF_IPSBAR + MCF_GPIO_PAR_UART); 240 writew(par, MCF_GPIO_PAR_UART);
241 break; 241 break;
242 case 1: 242 case 1:
243 par = readw(MCF_IPSBAR + MCF_GPIO_PAR_UART); 243 par = readw(MCF_GPIO_PAR_UART);
244 par |= MCF_GPIO_PAR_UART_PAR_UTXD1 | 244 par |= MCF_GPIO_PAR_UART_PAR_UTXD1 |
245 MCF_GPIO_PAR_UART_PAR_URXD1; 245 MCF_GPIO_PAR_UART_PAR_URXD1;
246 writew(par, MCF_IPSBAR + MCF_GPIO_PAR_UART); 246 writew(par, MCF_GPIO_PAR_UART);
247 break; 247 break;
248 case 2: 248 case 2:
249 par2 = readb(MCF_IPSBAR + MCF_GPIO_PAR_FECI2C); 249 par2 = readb(MCF_GPIO_PAR_FECI2C);
250 par2 &= ~0x0F; 250 par2 &= ~0x0F;
251 par2 |= MCF_GPIO_PAR_FECI2C_PAR_SCL_UTXD2 | 251 par2 |= MCF_GPIO_PAR_FECI2C_PAR_SCL_UTXD2 |
252 MCF_GPIO_PAR_FECI2C_PAR_SDA_URXD2; 252 MCF_GPIO_PAR_FECI2C_PAR_SDA_URXD2;
253 writeb(par2, MCF_IPSBAR + MCF_GPIO_PAR_FECI2C); 253 writeb(par2, MCF_GPIO_PAR_FECI2C);
254 break; 254 break;
255 } 255 }
256} 256}
@@ -271,11 +271,11 @@ static void __init m520x_fec_init(void)
271 u8 v; 271 u8 v;
272 272
273 /* Set multi-function pins to ethernet mode */ 273 /* Set multi-function pins to ethernet mode */
274 v = readb(MCF_IPSBAR + MCF_GPIO_PAR_FEC); 274 v = readb(MCF_GPIO_PAR_FEC);
275 writeb(v | 0xf0, MCF_IPSBAR + MCF_GPIO_PAR_FEC); 275 writeb(v | 0xf0, MCF_GPIO_PAR_FEC);
276 276
277 v = readb(MCF_IPSBAR + MCF_GPIO_PAR_FECI2C); 277 v = readb(MCF_GPIO_PAR_FECI2C);
278 writeb(v | 0x0f, MCF_IPSBAR + MCF_GPIO_PAR_FECI2C); 278 writeb(v | 0x0f, MCF_GPIO_PAR_FECI2C);
279} 279}
280 280
281/***************************************************************************/ 281/***************************************************************************/
diff --git a/arch/m68knommu/platform/520x/gpio.c b/arch/m68knommu/platform/520x/gpio.c
index 15b5bb62a698..d757328563d1 100644
--- a/arch/m68knommu/platform/520x/gpio.c
+++ b/arch/m68knommu/platform/520x/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 8, 33 .ngpio = 8,
34 }, 34 },
35 .pddr = MCFEPORT_EPDDR, 35 .pddr = (void __iomem *) MCFEPORT_EPDDR,
36 .podr = MCFEPORT_EPDR, 36 .podr = (void __iomem *) MCFEPORT_EPDR,
37 .ppdr = MCFEPORT_EPPDR, 37 .ppdr = (void __iomem *) MCFEPORT_EPPDR,
38 }, 38 },
39 { 39 {
40 .gpio_chip = { 40 .gpio_chip = {
@@ -48,11 +48,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
48 .base = 8, 48 .base = 8,
49 .ngpio = 4, 49 .ngpio = 4,
50 }, 50 },
51 .pddr = MCFGPIO_PDDR_BUSCTL, 51 .pddr = (void __iomem *) MCFGPIO_PDDR_BUSCTL,
52 .podr = MCFGPIO_PODR_BUSCTL, 52 .podr = (void __iomem *) MCFGPIO_PODR_BUSCTL,
53 .ppdr = MCFGPIO_PPDSDR_BUSCTL, 53 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
54 .setr = MCFGPIO_PPDSDR_BUSCTL, 54 .setr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
55 .clrr = MCFGPIO_PCLRR_BUSCTL, 55 .clrr = (void __iomem *) MCFGPIO_PCLRR_BUSCTL,
56 }, 56 },
57 { 57 {
58 .gpio_chip = { 58 .gpio_chip = {
@@ -66,11 +66,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
66 .base = 16, 66 .base = 16,
67 .ngpio = 4, 67 .ngpio = 4,
68 }, 68 },
69 .pddr = MCFGPIO_PDDR_BE, 69 .pddr = (void __iomem *) MCFGPIO_PDDR_BE,
70 .podr = MCFGPIO_PODR_BE, 70 .podr = (void __iomem *) MCFGPIO_PODR_BE,
71 .ppdr = MCFGPIO_PPDSDR_BE, 71 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BE,
72 .setr = MCFGPIO_PPDSDR_BE, 72 .setr = (void __iomem *) MCFGPIO_PPDSDR_BE,
73 .clrr = MCFGPIO_PCLRR_BE, 73 .clrr = (void __iomem *) MCFGPIO_PCLRR_BE,
74 }, 74 },
75 { 75 {
76 .gpio_chip = { 76 .gpio_chip = {
@@ -84,11 +84,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
84 .base = 25, 84 .base = 25,
85 .ngpio = 3, 85 .ngpio = 3,
86 }, 86 },
87 .pddr = MCFGPIO_PDDR_CS, 87 .pddr = (void __iomem *) MCFGPIO_PDDR_CS,
88 .podr = MCFGPIO_PODR_CS, 88 .podr = (void __iomem *) MCFGPIO_PODR_CS,
89 .ppdr = MCFGPIO_PPDSDR_CS, 89 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_CS,
90 .setr = MCFGPIO_PPDSDR_CS, 90 .setr = (void __iomem *) MCFGPIO_PPDSDR_CS,
91 .clrr = MCFGPIO_PCLRR_CS, 91 .clrr = (void __iomem *) MCFGPIO_PCLRR_CS,
92 }, 92 },
93 { 93 {
94 .gpio_chip = { 94 .gpio_chip = {
@@ -102,11 +102,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
102 .base = 32, 102 .base = 32,
103 .ngpio = 4, 103 .ngpio = 4,
104 }, 104 },
105 .pddr = MCFGPIO_PDDR_FECI2C, 105 .pddr = (void __iomem *) MCFGPIO_PDDR_FECI2C,
106 .podr = MCFGPIO_PODR_FECI2C, 106 .podr = (void __iomem *) MCFGPIO_PODR_FECI2C,
107 .ppdr = MCFGPIO_PPDSDR_FECI2C, 107 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
108 .setr = MCFGPIO_PPDSDR_FECI2C, 108 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
109 .clrr = MCFGPIO_PCLRR_FECI2C, 109 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECI2C,
110 }, 110 },
111 { 111 {
112 .gpio_chip = { 112 .gpio_chip = {
@@ -120,11 +120,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
120 .base = 40, 120 .base = 40,
121 .ngpio = 4, 121 .ngpio = 4,
122 }, 122 },
123 .pddr = MCFGPIO_PDDR_QSPI, 123 .pddr = (void __iomem *) MCFGPIO_PDDR_QSPI,
124 .podr = MCFGPIO_PODR_QSPI, 124 .podr = (void __iomem *) MCFGPIO_PODR_QSPI,
125 .ppdr = MCFGPIO_PPDSDR_QSPI, 125 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
126 .setr = MCFGPIO_PPDSDR_QSPI, 126 .setr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
127 .clrr = MCFGPIO_PCLRR_QSPI, 127 .clrr = (void __iomem *) MCFGPIO_PCLRR_QSPI,
128 }, 128 },
129 { 129 {
130 .gpio_chip = { 130 .gpio_chip = {
@@ -138,11 +138,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
138 .base = 48, 138 .base = 48,
139 .ngpio = 4, 139 .ngpio = 4,
140 }, 140 },
141 .pddr = MCFGPIO_PDDR_TIMER, 141 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMER,
142 .podr = MCFGPIO_PODR_TIMER, 142 .podr = (void __iomem *) MCFGPIO_PODR_TIMER,
143 .ppdr = MCFGPIO_PPDSDR_TIMER, 143 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
144 .setr = MCFGPIO_PPDSDR_TIMER, 144 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
145 .clrr = MCFGPIO_PCLRR_TIMER, 145 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMER,
146 }, 146 },
147 { 147 {
148 .gpio_chip = { 148 .gpio_chip = {
@@ -156,11 +156,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
156 .base = 56, 156 .base = 56,
157 .ngpio = 8, 157 .ngpio = 8,
158 }, 158 },
159 .pddr = MCFGPIO_PDDR_UART, 159 .pddr = (void __iomem *) MCFGPIO_PDDR_UART,
160 .podr = MCFGPIO_PODR_UART, 160 .podr = (void __iomem *) MCFGPIO_PODR_UART,
161 .ppdr = MCFGPIO_PPDSDR_UART, 161 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UART,
162 .setr = MCFGPIO_PPDSDR_UART, 162 .setr = (void __iomem *) MCFGPIO_PPDSDR_UART,
163 .clrr = MCFGPIO_PCLRR_UART, 163 .clrr = (void __iomem *) MCFGPIO_PCLRR_UART,
164 }, 164 },
165 { 165 {
166 .gpio_chip = { 166 .gpio_chip = {
@@ -174,11 +174,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
174 .base = 64, 174 .base = 64,
175 .ngpio = 8, 175 .ngpio = 8,
176 }, 176 },
177 .pddr = MCFGPIO_PDDR_FECH, 177 .pddr = (void __iomem *) MCFGPIO_PDDR_FECH,
178 .podr = MCFGPIO_PODR_FECH, 178 .podr = (void __iomem *) MCFGPIO_PODR_FECH,
179 .ppdr = MCFGPIO_PPDSDR_FECH, 179 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECH,
180 .setr = MCFGPIO_PPDSDR_FECH, 180 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECH,
181 .clrr = MCFGPIO_PCLRR_FECH, 181 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECH,
182 }, 182 },
183 { 183 {
184 .gpio_chip = { 184 .gpio_chip = {
@@ -192,11 +192,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
192 .base = 72, 192 .base = 72,
193 .ngpio = 8, 193 .ngpio = 8,
194 }, 194 },
195 .pddr = MCFGPIO_PDDR_FECL, 195 .pddr = (void __iomem *) MCFGPIO_PDDR_FECL,
196 .podr = MCFGPIO_PODR_FECL, 196 .podr = (void __iomem *) MCFGPIO_PODR_FECL,
197 .ppdr = MCFGPIO_PPDSDR_FECL, 197 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECL,
198 .setr = MCFGPIO_PPDSDR_FECL, 198 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECL,
199 .clrr = MCFGPIO_PCLRR_FECL, 199 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECL,
200 }, 200 },
201}; 201};
202 202
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c
index 8980f6d7715a..418a76feb1e3 100644
--- a/arch/m68knommu/platform/523x/config.c
+++ b/arch/m68knommu/platform/523x/config.c
@@ -28,15 +28,15 @@
28 28
29static struct mcf_platform_uart m523x_uart_platform[] = { 29static struct mcf_platform_uart m523x_uart_platform[] = {
30 { 30 {
31 .mapbase = MCF_MBAR + MCFUART_BASE1, 31 .mapbase = MCFUART_BASE1,
32 .irq = MCFINT_VECBASE + MCFINT_UART0, 32 .irq = MCFINT_VECBASE + MCFINT_UART0,
33 }, 33 },
34 { 34 {
35 .mapbase = MCF_MBAR + MCFUART_BASE2, 35 .mapbase = MCFUART_BASE2,
36 .irq = MCFINT_VECBASE + MCFINT_UART0 + 1, 36 .irq = MCFINT_VECBASE + MCFINT_UART0 + 1,
37 }, 37 },
38 { 38 {
39 .mapbase = MCF_MBAR + MCFUART_BASE3, 39 .mapbase = MCFUART_BASE3,
40 .irq = MCFINT_VECBASE + MCFINT_UART0 + 2, 40 .irq = MCFINT_VECBASE + MCFINT_UART0 + 2,
41 }, 41 },
42 { }, 42 { },
@@ -50,8 +50,8 @@ static struct platform_device m523x_uart = {
50 50
51static struct resource m523x_fec_resources[] = { 51static struct resource m523x_fec_resources[] = {
52 { 52 {
53 .start = MCF_MBAR + 0x1000, 53 .start = MCFFEC_BASE,
54 .end = MCF_MBAR + 0x1000 + 0x7ff, 54 .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
55 .flags = IORESOURCE_MEM, 55 .flags = IORESOURCE_MEM,
56 }, 56 },
57 { 57 {
diff --git a/arch/m68knommu/platform/523x/gpio.c b/arch/m68knommu/platform/523x/gpio.c
index a8842dc27839..327ebf142c8e 100644
--- a/arch/m68knommu/platform/523x/gpio.c
+++ b/arch/m68knommu/platform/523x/gpio.c
@@ -33,9 +33,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
33 .base = 1, 33 .base = 1,
34 .ngpio = 7, 34 .ngpio = 7,
35 }, 35 },
36 .pddr = MCFEPORT_EPDDR, 36 .pddr = (void __iomem *) MCFEPORT_EPDDR,
37 .podr = MCFEPORT_EPDR, 37 .podr = (void __iomem *) MCFEPORT_EPDR,
38 .ppdr = MCFEPORT_EPPDR, 38 .ppdr = (void __iomem *) MCFEPORT_EPPDR,
39 }, 39 },
40 { 40 {
41 .gpio_chip = { 41 .gpio_chip = {
@@ -49,11 +49,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
49 .base = 13, 49 .base = 13,
50 .ngpio = 3, 50 .ngpio = 3,
51 }, 51 },
52 .pddr = MCFGPIO_PDDR_ADDR, 52 .pddr = (void __iomem *) MCFGPIO_PDDR_ADDR,
53 .podr = MCFGPIO_PODR_ADDR, 53 .podr = (void __iomem *) MCFGPIO_PODR_ADDR,
54 .ppdr = MCFGPIO_PPDSDR_ADDR, 54 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
55 .setr = MCFGPIO_PPDSDR_ADDR, 55 .setr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
56 .clrr = MCFGPIO_PCLRR_ADDR, 56 .clrr = (void __iomem *) MCFGPIO_PCLRR_ADDR,
57 }, 57 },
58 { 58 {
59 .gpio_chip = { 59 .gpio_chip = {
@@ -67,11 +67,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
67 .base = 16, 67 .base = 16,
68 .ngpio = 8, 68 .ngpio = 8,
69 }, 69 },
70 .pddr = MCFGPIO_PDDR_DATAH, 70 .pddr = (void __iomem *) MCFGPIO_PDDR_DATAH,
71 .podr = MCFGPIO_PODR_DATAH, 71 .podr = (void __iomem *) MCFGPIO_PODR_DATAH,
72 .ppdr = MCFGPIO_PPDSDR_DATAH, 72 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_DATAH,
73 .setr = MCFGPIO_PPDSDR_DATAH, 73 .setr = (void __iomem *) MCFGPIO_PPDSDR_DATAH,
74 .clrr = MCFGPIO_PCLRR_DATAH, 74 .clrr = (void __iomem *) MCFGPIO_PCLRR_DATAH,
75 }, 75 },
76 { 76 {
77 .gpio_chip = { 77 .gpio_chip = {
@@ -85,11 +85,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
85 .base = 24, 85 .base = 24,
86 .ngpio = 8, 86 .ngpio = 8,
87 }, 87 },
88 .pddr = MCFGPIO_PDDR_DATAL, 88 .pddr = (void __iomem *) MCFGPIO_PDDR_DATAL,
89 .podr = MCFGPIO_PODR_DATAL, 89 .podr = (void __iomem *) MCFGPIO_PODR_DATAL,
90 .ppdr = MCFGPIO_PPDSDR_DATAL, 90 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_DATAL,
91 .setr = MCFGPIO_PPDSDR_DATAL, 91 .setr = (void __iomem *) MCFGPIO_PPDSDR_DATAL,
92 .clrr = MCFGPIO_PCLRR_DATAL, 92 .clrr = (void __iomem *) MCFGPIO_PCLRR_DATAL,
93 }, 93 },
94 { 94 {
95 .gpio_chip = { 95 .gpio_chip = {
@@ -103,11 +103,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
103 .base = 32, 103 .base = 32,
104 .ngpio = 8, 104 .ngpio = 8,
105 }, 105 },
106 .pddr = MCFGPIO_PDDR_BUSCTL, 106 .pddr = (void __iomem *) MCFGPIO_PDDR_BUSCTL,
107 .podr = MCFGPIO_PODR_BUSCTL, 107 .podr = (void __iomem *) MCFGPIO_PODR_BUSCTL,
108 .ppdr = MCFGPIO_PPDSDR_BUSCTL, 108 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
109 .setr = MCFGPIO_PPDSDR_BUSCTL, 109 .setr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
110 .clrr = MCFGPIO_PCLRR_BUSCTL, 110 .clrr = (void __iomem *) MCFGPIO_PCLRR_BUSCTL,
111 }, 111 },
112 { 112 {
113 .gpio_chip = { 113 .gpio_chip = {
@@ -121,11 +121,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
121 .base = 40, 121 .base = 40,
122 .ngpio = 4, 122 .ngpio = 4,
123 }, 123 },
124 .pddr = MCFGPIO_PDDR_BS, 124 .pddr = (void __iomem *) MCFGPIO_PDDR_BS,
125 .podr = MCFGPIO_PODR_BS, 125 .podr = (void __iomem *) MCFGPIO_PODR_BS,
126 .ppdr = MCFGPIO_PPDSDR_BS, 126 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BS,
127 .setr = MCFGPIO_PPDSDR_BS, 127 .setr = (void __iomem *) MCFGPIO_PPDSDR_BS,
128 .clrr = MCFGPIO_PCLRR_BS, 128 .clrr = (void __iomem *) MCFGPIO_PCLRR_BS,
129 }, 129 },
130 { 130 {
131 .gpio_chip = { 131 .gpio_chip = {
@@ -139,11 +139,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
139 .base = 49, 139 .base = 49,
140 .ngpio = 7, 140 .ngpio = 7,
141 }, 141 },
142 .pddr = MCFGPIO_PDDR_CS, 142 .pddr = (void __iomem *) MCFGPIO_PDDR_CS,
143 .podr = MCFGPIO_PODR_CS, 143 .podr = (void __iomem *) MCFGPIO_PODR_CS,
144 .ppdr = MCFGPIO_PPDSDR_CS, 144 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_CS,
145 .setr = MCFGPIO_PPDSDR_CS, 145 .setr = (void __iomem *) MCFGPIO_PPDSDR_CS,
146 .clrr = MCFGPIO_PCLRR_CS, 146 .clrr = (void __iomem *) MCFGPIO_PCLRR_CS,
147 }, 147 },
148 { 148 {
149 .gpio_chip = { 149 .gpio_chip = {
@@ -157,11 +157,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
157 .base = 56, 157 .base = 56,
158 .ngpio = 6, 158 .ngpio = 6,
159 }, 159 },
160 .pddr = MCFGPIO_PDDR_SDRAM, 160 .pddr = (void __iomem *) MCFGPIO_PDDR_SDRAM,
161 .podr = MCFGPIO_PODR_SDRAM, 161 .podr = (void __iomem *) MCFGPIO_PODR_SDRAM,
162 .ppdr = MCFGPIO_PPDSDR_SDRAM, 162 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
163 .setr = MCFGPIO_PPDSDR_SDRAM, 163 .setr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
164 .clrr = MCFGPIO_PCLRR_SDRAM, 164 .clrr = (void __iomem *) MCFGPIO_PCLRR_SDRAM,
165 }, 165 },
166 { 166 {
167 .gpio_chip = { 167 .gpio_chip = {
@@ -175,11 +175,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
175 .base = 64, 175 .base = 64,
176 .ngpio = 4, 176 .ngpio = 4,
177 }, 177 },
178 .pddr = MCFGPIO_PDDR_FECI2C, 178 .pddr = (void __iomem *) MCFGPIO_PDDR_FECI2C,
179 .podr = MCFGPIO_PODR_FECI2C, 179 .podr = (void __iomem *) MCFGPIO_PODR_FECI2C,
180 .ppdr = MCFGPIO_PPDSDR_FECI2C, 180 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
181 .setr = MCFGPIO_PPDSDR_FECI2C, 181 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
182 .clrr = MCFGPIO_PCLRR_FECI2C, 182 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECI2C,
183 }, 183 },
184 { 184 {
185 .gpio_chip = { 185 .gpio_chip = {
@@ -193,11 +193,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
193 .base = 72, 193 .base = 72,
194 .ngpio = 2, 194 .ngpio = 2,
195 }, 195 },
196 .pddr = MCFGPIO_PDDR_UARTH, 196 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTH,
197 .podr = MCFGPIO_PODR_UARTH, 197 .podr = (void __iomem *) MCFGPIO_PODR_UARTH,
198 .ppdr = MCFGPIO_PPDSDR_UARTH, 198 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
199 .setr = MCFGPIO_PPDSDR_UARTH, 199 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
200 .clrr = MCFGPIO_PCLRR_UARTH, 200 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTH,
201 }, 201 },
202 { 202 {
203 .gpio_chip = { 203 .gpio_chip = {
@@ -211,11 +211,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
211 .base = 80, 211 .base = 80,
212 .ngpio = 8, 212 .ngpio = 8,
213 }, 213 },
214 .pddr = MCFGPIO_PDDR_UARTL, 214 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTL,
215 .podr = MCFGPIO_PODR_UARTL, 215 .podr = (void __iomem *) MCFGPIO_PODR_UARTL,
216 .ppdr = MCFGPIO_PPDSDR_UARTL, 216 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
217 .setr = MCFGPIO_PPDSDR_UARTL, 217 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
218 .clrr = MCFGPIO_PCLRR_UARTL, 218 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTL,
219 }, 219 },
220 { 220 {
221 .gpio_chip = { 221 .gpio_chip = {
@@ -229,11 +229,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
229 .base = 88, 229 .base = 88,
230 .ngpio = 5, 230 .ngpio = 5,
231 }, 231 },
232 .pddr = MCFGPIO_PDDR_QSPI, 232 .pddr = (void __iomem *) MCFGPIO_PDDR_QSPI,
233 .podr = MCFGPIO_PODR_QSPI, 233 .podr = (void __iomem *) MCFGPIO_PODR_QSPI,
234 .ppdr = MCFGPIO_PPDSDR_QSPI, 234 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
235 .setr = MCFGPIO_PPDSDR_QSPI, 235 .setr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
236 .clrr = MCFGPIO_PCLRR_QSPI, 236 .clrr = (void __iomem *) MCFGPIO_PCLRR_QSPI,
237 }, 237 },
238 { 238 {
239 .gpio_chip = { 239 .gpio_chip = {
@@ -247,11 +247,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
247 .base = 96, 247 .base = 96,
248 .ngpio = 8, 248 .ngpio = 8,
249 }, 249 },
250 .pddr = MCFGPIO_PDDR_TIMER, 250 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMER,
251 .podr = MCFGPIO_PODR_TIMER, 251 .podr = (void __iomem *) MCFGPIO_PODR_TIMER,
252 .ppdr = MCFGPIO_PPDSDR_TIMER, 252 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
253 .setr = MCFGPIO_PPDSDR_TIMER, 253 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
254 .clrr = MCFGPIO_PCLRR_TIMER, 254 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMER,
255 }, 255 },
256 { 256 {
257 .gpio_chip = { 257 .gpio_chip = {
@@ -265,11 +265,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
265 .base = 104, 265 .base = 104,
266 .ngpio = 3, 266 .ngpio = 3,
267 }, 267 },
268 .pddr = MCFGPIO_PDDR_ETPU, 268 .pddr = (void __iomem *) MCFGPIO_PDDR_ETPU,
269 .podr = MCFGPIO_PODR_ETPU, 269 .podr = (void __iomem *) MCFGPIO_PODR_ETPU,
270 .ppdr = MCFGPIO_PPDSDR_ETPU, 270 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_ETPU,
271 .setr = MCFGPIO_PPDSDR_ETPU, 271 .setr = (void __iomem *) MCFGPIO_PPDSDR_ETPU,
272 .clrr = MCFGPIO_PCLRR_ETPU, 272 .clrr = (void __iomem *) MCFGPIO_PCLRR_ETPU,
273 }, 273 },
274}; 274};
275 275
diff --git a/arch/m68knommu/platform/5249/gpio.c b/arch/m68knommu/platform/5249/gpio.c
index c611eab8b3b6..2b56c6ef65bf 100644
--- a/arch/m68knommu/platform/5249/gpio.c
+++ b/arch/m68knommu/platform/5249/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 32, 33 .ngpio = 32,
34 }, 34 },
35 .pddr = MCFSIM2_GPIOENABLE, 35 .pddr = (void __iomem *) MCFSIM2_GPIOENABLE,
36 .podr = MCFSIM2_GPIOWRITE, 36 .podr = (void __iomem *) MCFSIM2_GPIOWRITE,
37 .ppdr = MCFSIM2_GPIOREAD, 37 .ppdr = (void __iomem *) MCFSIM2_GPIOREAD,
38 }, 38 },
39 { 39 {
40 .gpio_chip = { 40 .gpio_chip = {
@@ -48,9 +48,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
48 .base = 32, 48 .base = 32,
49 .ngpio = 32, 49 .ngpio = 32,
50 }, 50 },
51 .pddr = MCFSIM2_GPIO1ENABLE, 51 .pddr = (void __iomem *) MCFSIM2_GPIO1ENABLE,
52 .podr = MCFSIM2_GPIO1WRITE, 52 .podr = (void __iomem *) MCFSIM2_GPIO1WRITE,
53 .ppdr = MCFSIM2_GPIO1READ, 53 .ppdr = (void __iomem *) MCFSIM2_GPIO1READ,
54 }, 54 },
55}; 55};
56 56
diff --git a/arch/m68knommu/platform/5249/intc2.c b/arch/m68knommu/platform/5249/intc2.c
index c5151f846591..8f4b63e17366 100644
--- a/arch/m68knommu/platform/5249/intc2.c
+++ b/arch/m68knommu/platform/5249/intc2.c
@@ -17,32 +17,32 @@
17#include <asm/coldfire.h> 17#include <asm/coldfire.h>
18#include <asm/mcfsim.h> 18#include <asm/mcfsim.h>
19 19
20static void intc2_irq_gpio_mask(unsigned int irq) 20static void intc2_irq_gpio_mask(struct irq_data *d)
21{ 21{
22 u32 imr; 22 u32 imr;
23 imr = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 23 imr = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
24 imr &= ~(0x1 << (irq - MCFINTC2_GPIOIRQ0)); 24 imr &= ~(0x1 << (d->irq - MCFINTC2_GPIOIRQ0));
25 writel(imr, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 25 writel(imr, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
26} 26}
27 27
28static void intc2_irq_gpio_unmask(unsigned int irq) 28static void intc2_irq_gpio_unmask(struct irq_data *d)
29{ 29{
30 u32 imr; 30 u32 imr;
31 imr = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 31 imr = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
32 imr |= (0x1 << (irq - MCFINTC2_GPIOIRQ0)); 32 imr |= (0x1 << (d->irq - MCFINTC2_GPIOIRQ0));
33 writel(imr, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 33 writel(imr, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE);
34} 34}
35 35
36static void intc2_irq_gpio_ack(unsigned int irq) 36static void intc2_irq_gpio_ack(struct irq_data *d)
37{ 37{
38 writel(0x1 << (irq - MCFINTC2_GPIOIRQ0), MCF_MBAR2 + MCFSIM2_GPIOINTCLEAR); 38 writel(0x1 << (d->irq - MCFINTC2_GPIOIRQ0), MCF_MBAR2 + MCFSIM2_GPIOINTCLEAR);
39} 39}
40 40
41static struct irq_chip intc2_irq_gpio_chip = { 41static struct irq_chip intc2_irq_gpio_chip = {
42 .name = "CF-INTC2", 42 .name = "CF-INTC2",
43 .mask = intc2_irq_gpio_mask, 43 .irq_mask = intc2_irq_gpio_mask,
44 .unmask = intc2_irq_gpio_unmask, 44 .irq_unmask = intc2_irq_gpio_unmask,
45 .ack = intc2_irq_gpio_ack, 45 .irq_ack = intc2_irq_gpio_ack,
46}; 46};
47 47
48static int __init mcf_intc2_init(void) 48static int __init mcf_intc2_init(void)
@@ -51,7 +51,7 @@ static int __init mcf_intc2_init(void)
51 51
52 /* GPIO interrupt sources */ 52 /* GPIO interrupt sources */
53 for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) { 53 for (irq = MCFINTC2_GPIOIRQ0; (irq <= MCFINTC2_GPIOIRQ7); irq++) {
54 irq_desc[irq].chip = &intc2_irq_gpio_chip; 54 set_irq_chip(irq, &intc2_irq_gpio_chip);
55 set_irq_handler(irq, handle_edge_irq); 55 set_irq_handler(irq, handle_edge_irq);
56 } 56 }
57 57
diff --git a/arch/m68knommu/platform/5272/gpio.c b/arch/m68knommu/platform/5272/gpio.c
index 459db89a89cc..57ac10a5d7f7 100644
--- a/arch/m68knommu/platform/5272/gpio.c
+++ b/arch/m68knommu/platform/5272/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 16, 33 .ngpio = 16,
34 }, 34 },
35 .pddr = MCFSIM_PADDR, 35 .pddr = (void __iomem *) MCFSIM_PADDR,
36 .podr = MCFSIM_PADAT, 36 .podr = (void __iomem *) MCFSIM_PADAT,
37 .ppdr = MCFSIM_PADAT, 37 .ppdr = (void __iomem *) MCFSIM_PADAT,
38 }, 38 },
39 { 39 {
40 .gpio_chip = { 40 .gpio_chip = {
@@ -48,9 +48,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
48 .base = 16, 48 .base = 16,
49 .ngpio = 16, 49 .ngpio = 16,
50 }, 50 },
51 .pddr = MCFSIM_PBDDR, 51 .pddr = (void __iomem *) MCFSIM_PBDDR,
52 .podr = MCFSIM_PBDAT, 52 .podr = (void __iomem *) MCFSIM_PBDAT,
53 .ppdr = MCFSIM_PBDAT, 53 .ppdr = (void __iomem *) MCFSIM_PBDAT,
54 }, 54 },
55 { 55 {
56 .gpio_chip = { 56 .gpio_chip = {
@@ -64,9 +64,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
64 .base = 32, 64 .base = 32,
65 .ngpio = 16, 65 .ngpio = 16,
66 }, 66 },
67 .pddr = MCFSIM_PCDDR, 67 .pddr = (void __iomem *) MCFSIM_PCDDR,
68 .podr = MCFSIM_PCDAT, 68 .podr = (void __iomem *) MCFSIM_PCDAT,
69 .ppdr = MCFSIM_PCDAT, 69 .ppdr = (void __iomem *) MCFSIM_PCDAT,
70 }, 70 },
71}; 71};
72 72
diff --git a/arch/m68knommu/platform/5272/intc.c b/arch/m68knommu/platform/5272/intc.c
index 3cf681c177aa..969ff0a467c6 100644
--- a/arch/m68knommu/platform/5272/intc.c
+++ b/arch/m68knommu/platform/5272/intc.c
@@ -78,8 +78,10 @@ static struct irqmap intc_irqmap[MCFINT_VECMAX - MCFINT_VECBASE] = {
78 * an interrupt on this irq (for the external irqs). So this mask function 78 * an interrupt on this irq (for the external irqs). So this mask function
79 * is also an ack_mask function. 79 * is also an ack_mask function.
80 */ 80 */
81static void intc_irq_mask(unsigned int irq) 81static void intc_irq_mask(struct irq_data *d)
82{ 82{
83 unsigned int irq = d->irq;
84
83 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { 85 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) {
84 u32 v; 86 u32 v;
85 irq -= MCFINT_VECBASE; 87 irq -= MCFINT_VECBASE;
@@ -88,8 +90,10 @@ static void intc_irq_mask(unsigned int irq)
88 } 90 }
89} 91}
90 92
91static void intc_irq_unmask(unsigned int irq) 93static void intc_irq_unmask(struct irq_data *d)
92{ 94{
95 unsigned int irq = d->irq;
96
93 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { 97 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) {
94 u32 v; 98 u32 v;
95 irq -= MCFINT_VECBASE; 99 irq -= MCFINT_VECBASE;
@@ -98,8 +102,10 @@ static void intc_irq_unmask(unsigned int irq)
98 } 102 }
99} 103}
100 104
101static void intc_irq_ack(unsigned int irq) 105static void intc_irq_ack(struct irq_data *d)
102{ 106{
107 unsigned int irq = d->irq;
108
103 /* Only external interrupts are acked */ 109 /* Only external interrupts are acked */
104 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { 110 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) {
105 irq -= MCFINT_VECBASE; 111 irq -= MCFINT_VECBASE;
@@ -113,8 +119,10 @@ static void intc_irq_ack(unsigned int irq)
113 } 119 }
114} 120}
115 121
116static int intc_irq_set_type(unsigned int irq, unsigned int type) 122static int intc_irq_set_type(struct irq_data *d, unsigned int type)
117{ 123{
124 unsigned int irq = d->irq;
125
118 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { 126 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) {
119 irq -= MCFINT_VECBASE; 127 irq -= MCFINT_VECBASE;
120 if (intc_irqmap[irq].ack) { 128 if (intc_irqmap[irq].ack) {
@@ -137,20 +145,17 @@ static int intc_irq_set_type(unsigned int irq, unsigned int type)
137 */ 145 */
138static void intc_external_irq(unsigned int irq, struct irq_desc *desc) 146static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
139{ 147{
140 kstat_incr_irqs_this_cpu(irq, desc); 148 get_irq_desc_chip(desc)->irq_ack(&desc->irq_data);
141 desc->status |= IRQ_INPROGRESS; 149 handle_simple_irq(irq, desc);
142 desc->chip->ack(irq);
143 handle_IRQ_event(irq, desc->action);
144 desc->status &= ~IRQ_INPROGRESS;
145} 150}
146 151
147static struct irq_chip intc_irq_chip = { 152static struct irq_chip intc_irq_chip = {
148 .name = "CF-INTC", 153 .name = "CF-INTC",
149 .mask = intc_irq_mask, 154 .irq_mask = intc_irq_mask,
150 .unmask = intc_irq_unmask, 155 .irq_unmask = intc_irq_unmask,
151 .mask_ack = intc_irq_mask, 156 .irq_mask_ack = intc_irq_mask,
152 .ack = intc_irq_ack, 157 .irq_ack = intc_irq_ack,
153 .set_type = intc_irq_set_type, 158 .irq_set_type = intc_irq_set_type,
154}; 159};
155 160
156void __init init_IRQ(void) 161void __init init_IRQ(void)
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c
index 3d9c35c98b98..fa359593b613 100644
--- a/arch/m68knommu/platform/527x/config.c
+++ b/arch/m68knommu/platform/527x/config.c
@@ -28,15 +28,15 @@
28 28
29static struct mcf_platform_uart m527x_uart_platform[] = { 29static struct mcf_platform_uart m527x_uart_platform[] = {
30 { 30 {
31 .mapbase = MCF_MBAR + MCFUART_BASE1, 31 .mapbase = MCFUART_BASE1,
32 .irq = MCFINT_VECBASE + MCFINT_UART0, 32 .irq = MCFINT_VECBASE + MCFINT_UART0,
33 }, 33 },
34 { 34 {
35 .mapbase = MCF_MBAR + MCFUART_BASE2, 35 .mapbase = MCFUART_BASE2,
36 .irq = MCFINT_VECBASE + MCFINT_UART1, 36 .irq = MCFINT_VECBASE + MCFINT_UART1,
37 }, 37 },
38 { 38 {
39 .mapbase = MCF_MBAR + MCFUART_BASE3, 39 .mapbase = MCFUART_BASE3,
40 .irq = MCFINT_VECBASE + MCFINT_UART2, 40 .irq = MCFINT_VECBASE + MCFINT_UART2,
41 }, 41 },
42 { }, 42 { },
@@ -50,8 +50,8 @@ static struct platform_device m527x_uart = {
50 50
51static struct resource m527x_fec0_resources[] = { 51static struct resource m527x_fec0_resources[] = {
52 { 52 {
53 .start = MCF_MBAR + 0x1000, 53 .start = MCFFEC_BASE0,
54 .end = MCF_MBAR + 0x1000 + 0x7ff, 54 .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
55 .flags = IORESOURCE_MEM, 55 .flags = IORESOURCE_MEM,
56 }, 56 },
57 { 57 {
@@ -73,8 +73,8 @@ static struct resource m527x_fec0_resources[] = {
73 73
74static struct resource m527x_fec1_resources[] = { 74static struct resource m527x_fec1_resources[] = {
75 { 75 {
76 .start = MCF_MBAR + 0x1800, 76 .start = MCFFEC_BASE1,
77 .end = MCF_MBAR + 0x1800 + 0x7ff, 77 .end = MCFFEC_BASE1 + MCFFEC_SIZE1 - 1,
78 .flags = IORESOURCE_MEM, 78 .flags = IORESOURCE_MEM,
79 }, 79 },
80 { 80 {
diff --git a/arch/m68knommu/platform/527x/gpio.c b/arch/m68knommu/platform/527x/gpio.c
index 0b56e19db0f8..205da0aa0f2d 100644
--- a/arch/m68knommu/platform/527x/gpio.c
+++ b/arch/m68knommu/platform/527x/gpio.c
@@ -34,9 +34,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
34 .base = 1, 34 .base = 1,
35 .ngpio = 7, 35 .ngpio = 7,
36 }, 36 },
37 .pddr = MCFEPORT_EPDDR, 37 .pddr = (void __iomem *) MCFEPORT_EPDDR,
38 .podr = MCFEPORT_EPDR, 38 .podr = (void __iomem *) MCFEPORT_EPDR,
39 .ppdr = MCFEPORT_EPPDR, 39 .ppdr = (void __iomem *) MCFEPORT_EPPDR,
40 }, 40 },
41 { 41 {
42 .gpio_chip = { 42 .gpio_chip = {
@@ -50,11 +50,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
50 .base = 13, 50 .base = 13,
51 .ngpio = 3, 51 .ngpio = 3,
52 }, 52 },
53 .pddr = MCFGPIO_PDDR_ADDR, 53 .pddr = (void __iomem *) MCFGPIO_PDDR_ADDR,
54 .podr = MCFGPIO_PODR_ADDR, 54 .podr = (void __iomem *) MCFGPIO_PODR_ADDR,
55 .ppdr = MCFGPIO_PPDSDR_ADDR, 55 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
56 .setr = MCFGPIO_PPDSDR_ADDR, 56 .setr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
57 .clrr = MCFGPIO_PCLRR_ADDR, 57 .clrr = (void __iomem *) MCFGPIO_PCLRR_ADDR,
58 }, 58 },
59 { 59 {
60 .gpio_chip = { 60 .gpio_chip = {
@@ -68,11 +68,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
68 .base = 16, 68 .base = 16,
69 .ngpio = 8, 69 .ngpio = 8,
70 }, 70 },
71 .pddr = MCFGPIO_PDDR_DATAH, 71 .pddr = (void __iomem *) MCFGPIO_PDDR_DATAH,
72 .podr = MCFGPIO_PODR_DATAH, 72 .podr = (void __iomem *) MCFGPIO_PODR_DATAH,
73 .ppdr = MCFGPIO_PPDSDR_DATAH, 73 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_DATAH,
74 .setr = MCFGPIO_PPDSDR_DATAH, 74 .setr = (void __iomem *) MCFGPIO_PPDSDR_DATAH,
75 .clrr = MCFGPIO_PCLRR_DATAH, 75 .clrr = (void __iomem *) MCFGPIO_PCLRR_DATAH,
76 }, 76 },
77 { 77 {
78 .gpio_chip = { 78 .gpio_chip = {
@@ -86,11 +86,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
86 .base = 24, 86 .base = 24,
87 .ngpio = 8, 87 .ngpio = 8,
88 }, 88 },
89 .pddr = MCFGPIO_PDDR_DATAL, 89 .pddr = (void __iomem *) MCFGPIO_PDDR_DATAL,
90 .podr = MCFGPIO_PODR_DATAL, 90 .podr = (void __iomem *) MCFGPIO_PODR_DATAL,
91 .ppdr = MCFGPIO_PPDSDR_DATAL, 91 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_DATAL,
92 .setr = MCFGPIO_PPDSDR_DATAL, 92 .setr = (void __iomem *) MCFGPIO_PPDSDR_DATAL,
93 .clrr = MCFGPIO_PCLRR_DATAL, 93 .clrr = (void __iomem *) MCFGPIO_PCLRR_DATAL,
94 }, 94 },
95 { 95 {
96 .gpio_chip = { 96 .gpio_chip = {
@@ -104,11 +104,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
104 .base = 32, 104 .base = 32,
105 .ngpio = 8, 105 .ngpio = 8,
106 }, 106 },
107 .pddr = MCFGPIO_PDDR_BUSCTL, 107 .pddr = (void __iomem *) MCFGPIO_PDDR_BUSCTL,
108 .podr = MCFGPIO_PODR_BUSCTL, 108 .podr = (void __iomem *) MCFGPIO_PODR_BUSCTL,
109 .ppdr = MCFGPIO_PPDSDR_BUSCTL, 109 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
110 .setr = MCFGPIO_PPDSDR_BUSCTL, 110 .setr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
111 .clrr = MCFGPIO_PCLRR_BUSCTL, 111 .clrr = (void __iomem *) MCFGPIO_PCLRR_BUSCTL,
112 }, 112 },
113 { 113 {
114 .gpio_chip = { 114 .gpio_chip = {
@@ -122,11 +122,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
122 .base = 40, 122 .base = 40,
123 .ngpio = 4, 123 .ngpio = 4,
124 }, 124 },
125 .pddr = MCFGPIO_PDDR_BS, 125 .pddr = (void __iomem *) MCFGPIO_PDDR_BS,
126 .podr = MCFGPIO_PODR_BS, 126 .podr = (void __iomem *) MCFGPIO_PODR_BS,
127 .ppdr = MCFGPIO_PPDSDR_BS, 127 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BS,
128 .setr = MCFGPIO_PPDSDR_BS, 128 .setr = (void __iomem *) MCFGPIO_PPDSDR_BS,
129 .clrr = MCFGPIO_PCLRR_BS, 129 .clrr = (void __iomem *) MCFGPIO_PCLRR_BS,
130 }, 130 },
131 { 131 {
132 .gpio_chip = { 132 .gpio_chip = {
@@ -140,11 +140,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
140 .base = 49, 140 .base = 49,
141 .ngpio = 7, 141 .ngpio = 7,
142 }, 142 },
143 .pddr = MCFGPIO_PDDR_CS, 143 .pddr = (void __iomem *) MCFGPIO_PDDR_CS,
144 .podr = MCFGPIO_PODR_CS, 144 .podr = (void __iomem *) MCFGPIO_PODR_CS,
145 .ppdr = MCFGPIO_PPDSDR_CS, 145 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_CS,
146 .setr = MCFGPIO_PPDSDR_CS, 146 .setr = (void __iomem *) MCFGPIO_PPDSDR_CS,
147 .clrr = MCFGPIO_PCLRR_CS, 147 .clrr = (void __iomem *) MCFGPIO_PCLRR_CS,
148 }, 148 },
149 { 149 {
150 .gpio_chip = { 150 .gpio_chip = {
@@ -158,11 +158,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
158 .base = 56, 158 .base = 56,
159 .ngpio = 6, 159 .ngpio = 6,
160 }, 160 },
161 .pddr = MCFGPIO_PDDR_SDRAM, 161 .pddr = (void __iomem *) MCFGPIO_PDDR_SDRAM,
162 .podr = MCFGPIO_PODR_SDRAM, 162 .podr = (void __iomem *) MCFGPIO_PODR_SDRAM,
163 .ppdr = MCFGPIO_PPDSDR_SDRAM, 163 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
164 .setr = MCFGPIO_PPDSDR_SDRAM, 164 .setr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
165 .clrr = MCFGPIO_PCLRR_SDRAM, 165 .clrr = (void __iomem *) MCFGPIO_PCLRR_SDRAM,
166 }, 166 },
167 { 167 {
168 .gpio_chip = { 168 .gpio_chip = {
@@ -176,11 +176,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
176 .base = 64, 176 .base = 64,
177 .ngpio = 4, 177 .ngpio = 4,
178 }, 178 },
179 .pddr = MCFGPIO_PDDR_FECI2C, 179 .pddr = (void __iomem *) MCFGPIO_PDDR_FECI2C,
180 .podr = MCFGPIO_PODR_FECI2C, 180 .podr = (void __iomem *) MCFGPIO_PODR_FECI2C,
181 .ppdr = MCFGPIO_PPDSDR_FECI2C, 181 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
182 .setr = MCFGPIO_PPDSDR_FECI2C, 182 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
183 .clrr = MCFGPIO_PCLRR_FECI2C, 183 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECI2C,
184 }, 184 },
185 { 185 {
186 .gpio_chip = { 186 .gpio_chip = {
@@ -194,11 +194,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
194 .base = 72, 194 .base = 72,
195 .ngpio = 2, 195 .ngpio = 2,
196 }, 196 },
197 .pddr = MCFGPIO_PDDR_UARTH, 197 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTH,
198 .podr = MCFGPIO_PODR_UARTH, 198 .podr = (void __iomem *) MCFGPIO_PODR_UARTH,
199 .ppdr = MCFGPIO_PPDSDR_UARTH, 199 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
200 .setr = MCFGPIO_PPDSDR_UARTH, 200 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
201 .clrr = MCFGPIO_PCLRR_UARTH, 201 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTH,
202 }, 202 },
203 { 203 {
204 .gpio_chip = { 204 .gpio_chip = {
@@ -212,11 +212,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
212 .base = 80, 212 .base = 80,
213 .ngpio = 8, 213 .ngpio = 8,
214 }, 214 },
215 .pddr = MCFGPIO_PDDR_UARTL, 215 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTL,
216 .podr = MCFGPIO_PODR_UARTL, 216 .podr = (void __iomem *) MCFGPIO_PODR_UARTL,
217 .ppdr = MCFGPIO_PPDSDR_UARTL, 217 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
218 .setr = MCFGPIO_PPDSDR_UARTL, 218 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
219 .clrr = MCFGPIO_PCLRR_UARTL, 219 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTL,
220 }, 220 },
221 { 221 {
222 .gpio_chip = { 222 .gpio_chip = {
@@ -230,11 +230,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
230 .base = 88, 230 .base = 88,
231 .ngpio = 5, 231 .ngpio = 5,
232 }, 232 },
233 .pddr = MCFGPIO_PDDR_QSPI, 233 .pddr = (void __iomem *) MCFGPIO_PDDR_QSPI,
234 .podr = MCFGPIO_PODR_QSPI, 234 .podr = (void __iomem *) MCFGPIO_PODR_QSPI,
235 .ppdr = MCFGPIO_PPDSDR_QSPI, 235 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
236 .setr = MCFGPIO_PPDSDR_QSPI, 236 .setr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
237 .clrr = MCFGPIO_PCLRR_QSPI, 237 .clrr = (void __iomem *) MCFGPIO_PCLRR_QSPI,
238 }, 238 },
239 { 239 {
240 .gpio_chip = { 240 .gpio_chip = {
@@ -248,11 +248,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
248 .base = 96, 248 .base = 96,
249 .ngpio = 8, 249 .ngpio = 8,
250 }, 250 },
251 .pddr = MCFGPIO_PDDR_TIMER, 251 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMER,
252 .podr = MCFGPIO_PODR_TIMER, 252 .podr = (void __iomem *) MCFGPIO_PODR_TIMER,
253 .ppdr = MCFGPIO_PPDSDR_TIMER, 253 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
254 .setr = MCFGPIO_PPDSDR_TIMER, 254 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
255 .clrr = MCFGPIO_PCLRR_TIMER, 255 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMER,
256 }, 256 },
257#elif defined(CONFIG_M5275) 257#elif defined(CONFIG_M5275)
258 { 258 {
@@ -267,9 +267,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
267 .base = 1, 267 .base = 1,
268 .ngpio = 7, 268 .ngpio = 7,
269 }, 269 },
270 .pddr = MCFEPORT_EPDDR, 270 .pddr = (void __iomem *) MCFEPORT_EPDDR,
271 .podr = MCFEPORT_EPDR, 271 .podr = (void __iomem *) MCFEPORT_EPDR,
272 .ppdr = MCFEPORT_EPPDR, 272 .ppdr = (void __iomem *) MCFEPORT_EPPDR,
273 }, 273 },
274 { 274 {
275 .gpio_chip = { 275 .gpio_chip = {
@@ -283,11 +283,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
283 .base = 8, 283 .base = 8,
284 .ngpio = 8, 284 .ngpio = 8,
285 }, 285 },
286 .pddr = MCFGPIO_PDDR_BUSCTL, 286 .pddr = (void __iomem *) MCFGPIO_PDDR_BUSCTL,
287 .podr = MCFGPIO_PODR_BUSCTL, 287 .podr = (void __iomem *) MCFGPIO_PODR_BUSCTL,
288 .ppdr = MCFGPIO_PPDSDR_BUSCTL, 288 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
289 .setr = MCFGPIO_PPDSDR_BUSCTL, 289 .setr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
290 .clrr = MCFGPIO_PCLRR_BUSCTL, 290 .clrr = (void __iomem *) MCFGPIO_PCLRR_BUSCTL,
291 }, 291 },
292 { 292 {
293 .gpio_chip = { 293 .gpio_chip = {
@@ -301,11 +301,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
301 .base = 21, 301 .base = 21,
302 .ngpio = 3, 302 .ngpio = 3,
303 }, 303 },
304 .pddr = MCFGPIO_PDDR_ADDR, 304 .pddr = (void __iomem *) MCFGPIO_PDDR_ADDR,
305 .podr = MCFGPIO_PODR_ADDR, 305 .podr = (void __iomem *) MCFGPIO_PODR_ADDR,
306 .ppdr = MCFGPIO_PPDSDR_ADDR, 306 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
307 .setr = MCFGPIO_PPDSDR_ADDR, 307 .setr = (void __iomem *) MCFGPIO_PPDSDR_ADDR,
308 .clrr = MCFGPIO_PCLRR_ADDR, 308 .clrr = (void __iomem *) MCFGPIO_PCLRR_ADDR,
309 }, 309 },
310 { 310 {
311 .gpio_chip = { 311 .gpio_chip = {
@@ -319,11 +319,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
319 .base = 25, 319 .base = 25,
320 .ngpio = 7, 320 .ngpio = 7,
321 }, 321 },
322 .pddr = MCFGPIO_PDDR_CS, 322 .pddr = (void __iomem *) MCFGPIO_PDDR_CS,
323 .podr = MCFGPIO_PODR_CS, 323 .podr = (void __iomem *) MCFGPIO_PODR_CS,
324 .ppdr = MCFGPIO_PPDSDR_CS, 324 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_CS,
325 .setr = MCFGPIO_PPDSDR_CS, 325 .setr = (void __iomem *) MCFGPIO_PPDSDR_CS,
326 .clrr = MCFGPIO_PCLRR_CS, 326 .clrr = (void __iomem *) MCFGPIO_PCLRR_CS,
327 }, 327 },
328 { 328 {
329 .gpio_chip = { 329 .gpio_chip = {
@@ -337,11 +337,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
337 .base = 32, 337 .base = 32,
338 .ngpio = 8, 338 .ngpio = 8,
339 }, 339 },
340 .pddr = MCFGPIO_PDDR_FEC0H, 340 .pddr = (void __iomem *) MCFGPIO_PDDR_FEC0H,
341 .podr = MCFGPIO_PODR_FEC0H, 341 .podr = (void __iomem *) MCFGPIO_PODR_FEC0H,
342 .ppdr = MCFGPIO_PPDSDR_FEC0H, 342 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FEC0H,
343 .setr = MCFGPIO_PPDSDR_FEC0H, 343 .setr = (void __iomem *) MCFGPIO_PPDSDR_FEC0H,
344 .clrr = MCFGPIO_PCLRR_FEC0H, 344 .clrr = (void __iomem *) MCFGPIO_PCLRR_FEC0H,
345 }, 345 },
346 { 346 {
347 .gpio_chip = { 347 .gpio_chip = {
@@ -355,11 +355,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
355 .base = 40, 355 .base = 40,
356 .ngpio = 8, 356 .ngpio = 8,
357 }, 357 },
358 .pddr = MCFGPIO_PDDR_FEC0L, 358 .pddr = (void __iomem *) MCFGPIO_PDDR_FEC0L,
359 .podr = MCFGPIO_PODR_FEC0L, 359 .podr = (void __iomem *) MCFGPIO_PODR_FEC0L,
360 .ppdr = MCFGPIO_PPDSDR_FEC0L, 360 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FEC0L,
361 .setr = MCFGPIO_PPDSDR_FEC0L, 361 .setr = (void __iomem *) MCFGPIO_PPDSDR_FEC0L,
362 .clrr = MCFGPIO_PCLRR_FEC0L, 362 .clrr = (void __iomem *) MCFGPIO_PCLRR_FEC0L,
363 }, 363 },
364 { 364 {
365 .gpio_chip = { 365 .gpio_chip = {
@@ -373,11 +373,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
373 .base = 48, 373 .base = 48,
374 .ngpio = 6, 374 .ngpio = 6,
375 }, 375 },
376 .pddr = MCFGPIO_PDDR_FECI2C, 376 .pddr = (void __iomem *) MCFGPIO_PDDR_FECI2C,
377 .podr = MCFGPIO_PODR_FECI2C, 377 .podr = (void __iomem *) MCFGPIO_PODR_FECI2C,
378 .ppdr = MCFGPIO_PPDSDR_FECI2C, 378 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
379 .setr = MCFGPIO_PPDSDR_FECI2C, 379 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
380 .clrr = MCFGPIO_PCLRR_FECI2C, 380 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECI2C,
381 }, 381 },
382 { 382 {
383 .gpio_chip = { 383 .gpio_chip = {
@@ -391,11 +391,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
391 .base = 56, 391 .base = 56,
392 .ngpio = 7, 392 .ngpio = 7,
393 }, 393 },
394 .pddr = MCFGPIO_PDDR_QSPI, 394 .pddr = (void __iomem *) MCFGPIO_PDDR_QSPI,
395 .podr = MCFGPIO_PODR_QSPI, 395 .podr = (void __iomem *) MCFGPIO_PODR_QSPI,
396 .ppdr = MCFGPIO_PPDSDR_QSPI, 396 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
397 .setr = MCFGPIO_PPDSDR_QSPI, 397 .setr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
398 .clrr = MCFGPIO_PCLRR_QSPI, 398 .clrr = (void __iomem *) MCFGPIO_PCLRR_QSPI,
399 }, 399 },
400 { 400 {
401 .gpio_chip = { 401 .gpio_chip = {
@@ -409,11 +409,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
409 .base = 64, 409 .base = 64,
410 .ngpio = 8, 410 .ngpio = 8,
411 }, 411 },
412 .pddr = MCFGPIO_PDDR_SDRAM, 412 .pddr = (void __iomem *) MCFGPIO_PDDR_SDRAM,
413 .podr = MCFGPIO_PODR_SDRAM, 413 .podr = (void __iomem *) MCFGPIO_PODR_SDRAM,
414 .ppdr = MCFGPIO_PPDSDR_SDRAM, 414 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
415 .setr = MCFGPIO_PPDSDR_SDRAM, 415 .setr = (void __iomem *) MCFGPIO_PPDSDR_SDRAM,
416 .clrr = MCFGPIO_PCLRR_SDRAM, 416 .clrr = (void __iomem *) MCFGPIO_PCLRR_SDRAM,
417 }, 417 },
418 { 418 {
419 .gpio_chip = { 419 .gpio_chip = {
@@ -427,11 +427,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
427 .base = 72, 427 .base = 72,
428 .ngpio = 4, 428 .ngpio = 4,
429 }, 429 },
430 .pddr = MCFGPIO_PDDR_TIMERH, 430 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMERH,
431 .podr = MCFGPIO_PODR_TIMERH, 431 .podr = (void __iomem *) MCFGPIO_PODR_TIMERH,
432 .ppdr = MCFGPIO_PPDSDR_TIMERH, 432 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMERH,
433 .setr = MCFGPIO_PPDSDR_TIMERH, 433 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMERH,
434 .clrr = MCFGPIO_PCLRR_TIMERH, 434 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMERH,
435 }, 435 },
436 { 436 {
437 .gpio_chip = { 437 .gpio_chip = {
@@ -445,11 +445,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
445 .base = 80, 445 .base = 80,
446 .ngpio = 4, 446 .ngpio = 4,
447 }, 447 },
448 .pddr = MCFGPIO_PDDR_TIMERL, 448 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMERL,
449 .podr = MCFGPIO_PODR_TIMERL, 449 .podr = (void __iomem *) MCFGPIO_PODR_TIMERL,
450 .ppdr = MCFGPIO_PPDSDR_TIMERL, 450 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMERL,
451 .setr = MCFGPIO_PPDSDR_TIMERL, 451 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMERL,
452 .clrr = MCFGPIO_PCLRR_TIMERL, 452 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMERL,
453 }, 453 },
454 { 454 {
455 .gpio_chip = { 455 .gpio_chip = {
@@ -463,11 +463,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
463 .base = 88, 463 .base = 88,
464 .ngpio = 8, 464 .ngpio = 8,
465 }, 465 },
466 .pddr = MCFGPIO_PDDR_UARTL, 466 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTL,
467 .podr = MCFGPIO_PODR_UARTL, 467 .podr = (void __iomem *) MCFGPIO_PODR_UARTL,
468 .ppdr = MCFGPIO_PPDSDR_UARTL, 468 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
469 .setr = MCFGPIO_PPDSDR_UARTL, 469 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTL,
470 .clrr = MCFGPIO_PCLRR_UARTL, 470 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTL,
471 }, 471 },
472 { 472 {
473 .gpio_chip = { 473 .gpio_chip = {
@@ -481,11 +481,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
481 .base = 96, 481 .base = 96,
482 .ngpio = 8, 482 .ngpio = 8,
483 }, 483 },
484 .pddr = MCFGPIO_PDDR_FEC1H, 484 .pddr = (void __iomem *) MCFGPIO_PDDR_FEC1H,
485 .podr = MCFGPIO_PODR_FEC1H, 485 .podr = (void __iomem *) MCFGPIO_PODR_FEC1H,
486 .ppdr = MCFGPIO_PPDSDR_FEC1H, 486 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FEC1H,
487 .setr = MCFGPIO_PPDSDR_FEC1H, 487 .setr = (void __iomem *) MCFGPIO_PPDSDR_FEC1H,
488 .clrr = MCFGPIO_PCLRR_FEC1H, 488 .clrr = (void __iomem *) MCFGPIO_PCLRR_FEC1H,
489 }, 489 },
490 { 490 {
491 .gpio_chip = { 491 .gpio_chip = {
@@ -499,11 +499,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
499 .base = 104, 499 .base = 104,
500 .ngpio = 8, 500 .ngpio = 8,
501 }, 501 },
502 .pddr = MCFGPIO_PDDR_FEC1L, 502 .pddr = (void __iomem *) MCFGPIO_PDDR_FEC1L,
503 .podr = MCFGPIO_PODR_FEC1L, 503 .podr = (void __iomem *) MCFGPIO_PODR_FEC1L,
504 .ppdr = MCFGPIO_PPDSDR_FEC1L, 504 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FEC1L,
505 .setr = MCFGPIO_PPDSDR_FEC1L, 505 .setr = (void __iomem *) MCFGPIO_PPDSDR_FEC1L,
506 .clrr = MCFGPIO_PCLRR_FEC1L, 506 .clrr = (void __iomem *) MCFGPIO_PCLRR_FEC1L,
507 }, 507 },
508 { 508 {
509 .gpio_chip = { 509 .gpio_chip = {
@@ -517,11 +517,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
517 .base = 114, 517 .base = 114,
518 .ngpio = 2, 518 .ngpio = 2,
519 }, 519 },
520 .pddr = MCFGPIO_PDDR_BS, 520 .pddr = (void __iomem *) MCFGPIO_PDDR_BS,
521 .podr = MCFGPIO_PODR_BS, 521 .podr = (void __iomem *) MCFGPIO_PODR_BS,
522 .ppdr = MCFGPIO_PPDSDR_BS, 522 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BS,
523 .setr = MCFGPIO_PPDSDR_BS, 523 .setr = (void __iomem *) MCFGPIO_PPDSDR_BS,
524 .clrr = MCFGPIO_PCLRR_BS, 524 .clrr = (void __iomem *) MCFGPIO_PCLRR_BS,
525 }, 525 },
526 { 526 {
527 .gpio_chip = { 527 .gpio_chip = {
@@ -535,11 +535,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
535 .base = 121, 535 .base = 121,
536 .ngpio = 7, 536 .ngpio = 7,
537 }, 537 },
538 .pddr = MCFGPIO_PDDR_IRQ, 538 .pddr = (void __iomem *) MCFGPIO_PDDR_IRQ,
539 .podr = MCFGPIO_PODR_IRQ, 539 .podr = (void __iomem *) MCFGPIO_PODR_IRQ,
540 .ppdr = MCFGPIO_PPDSDR_IRQ, 540 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_IRQ,
541 .setr = MCFGPIO_PPDSDR_IRQ, 541 .setr = (void __iomem *) MCFGPIO_PPDSDR_IRQ,
542 .clrr = MCFGPIO_PCLRR_IRQ, 542 .clrr = (void __iomem *) MCFGPIO_PCLRR_IRQ,
543 }, 543 },
544 { 544 {
545 .gpio_chip = { 545 .gpio_chip = {
@@ -553,11 +553,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
553 .base = 128, 553 .base = 128,
554 .ngpio = 1, 554 .ngpio = 1,
555 }, 555 },
556 .pddr = MCFGPIO_PDDR_USBH, 556 .pddr = (void __iomem *) MCFGPIO_PDDR_USBH,
557 .podr = MCFGPIO_PODR_USBH, 557 .podr = (void __iomem *) MCFGPIO_PODR_USBH,
558 .ppdr = MCFGPIO_PPDSDR_USBH, 558 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_USBH,
559 .setr = MCFGPIO_PPDSDR_USBH, 559 .setr = (void __iomem *) MCFGPIO_PPDSDR_USBH,
560 .clrr = MCFGPIO_PCLRR_USBH, 560 .clrr = (void __iomem *) MCFGPIO_PCLRR_USBH,
561 }, 561 },
562 { 562 {
563 .gpio_chip = { 563 .gpio_chip = {
@@ -571,11 +571,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
571 .base = 136, 571 .base = 136,
572 .ngpio = 8, 572 .ngpio = 8,
573 }, 573 },
574 .pddr = MCFGPIO_PDDR_USBL, 574 .pddr = (void __iomem *) MCFGPIO_PDDR_USBL,
575 .podr = MCFGPIO_PODR_USBL, 575 .podr = (void __iomem *) MCFGPIO_PODR_USBL,
576 .ppdr = MCFGPIO_PPDSDR_USBL, 576 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_USBL,
577 .setr = MCFGPIO_PPDSDR_USBL, 577 .setr = (void __iomem *) MCFGPIO_PPDSDR_USBL,
578 .clrr = MCFGPIO_PCLRR_USBL, 578 .clrr = (void __iomem *) MCFGPIO_PCLRR_USBL,
579 }, 579 },
580 { 580 {
581 .gpio_chip = { 581 .gpio_chip = {
@@ -589,11 +589,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
589 .base = 144, 589 .base = 144,
590 .ngpio = 4, 590 .ngpio = 4,
591 }, 591 },
592 .pddr = MCFGPIO_PDDR_UARTH, 592 .pddr = (void __iomem *) MCFGPIO_PDDR_UARTH,
593 .podr = MCFGPIO_PODR_UARTH, 593 .podr = (void __iomem *) MCFGPIO_PODR_UARTH,
594 .ppdr = MCFGPIO_PPDSDR_UARTH, 594 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
595 .setr = MCFGPIO_PPDSDR_UARTH, 595 .setr = (void __iomem *) MCFGPIO_PPDSDR_UARTH,
596 .clrr = MCFGPIO_PCLRR_UARTH, 596 .clrr = (void __iomem *) MCFGPIO_PCLRR_UARTH,
597 }, 597 },
598#endif 598#endif
599}; 599};
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c
index 76b743343bfa..ac39fc661219 100644
--- a/arch/m68knommu/platform/528x/config.c
+++ b/arch/m68knommu/platform/528x/config.c
@@ -29,15 +29,15 @@
29 29
30static struct mcf_platform_uart m528x_uart_platform[] = { 30static struct mcf_platform_uart m528x_uart_platform[] = {
31 { 31 {
32 .mapbase = MCF_MBAR + MCFUART_BASE1, 32 .mapbase = MCFUART_BASE1,
33 .irq = MCFINT_VECBASE + MCFINT_UART0, 33 .irq = MCFINT_VECBASE + MCFINT_UART0,
34 }, 34 },
35 { 35 {
36 .mapbase = MCF_MBAR + MCFUART_BASE2, 36 .mapbase = MCFUART_BASE2,
37 .irq = MCFINT_VECBASE + MCFINT_UART0 + 1, 37 .irq = MCFINT_VECBASE + MCFINT_UART0 + 1,
38 }, 38 },
39 { 39 {
40 .mapbase = MCF_MBAR + MCFUART_BASE3, 40 .mapbase = MCFUART_BASE3,
41 .irq = MCFINT_VECBASE + MCFINT_UART0 + 2, 41 .irq = MCFINT_VECBASE + MCFINT_UART0 + 2,
42 }, 42 },
43 { }, 43 { },
@@ -51,8 +51,8 @@ static struct platform_device m528x_uart = {
51 51
52static struct resource m528x_fec_resources[] = { 52static struct resource m528x_fec_resources[] = {
53 { 53 {
54 .start = MCF_MBAR + 0x1000, 54 .start = MCFFEC_BASE,
55 .end = MCF_MBAR + 0x1000 + 0x7ff, 55 .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
56 .flags = IORESOURCE_MEM, 56 .flags = IORESOURCE_MEM,
57 }, 57 },
58 { 58 {
@@ -227,9 +227,9 @@ static void __init m528x_uart_init_line(int line, int irq)
227 227
228 /* make sure PUAPAR is set for UART0 and UART1 */ 228 /* make sure PUAPAR is set for UART0 and UART1 */
229 if (line < 2) { 229 if (line < 2) {
230 port = readb(MCF_MBAR + MCF5282_GPIO_PUAPAR); 230 port = readb(MCF5282_GPIO_PUAPAR);
231 port |= (0x03 << (line * 2)); 231 port |= (0x03 << (line * 2));
232 writeb(port, MCF_MBAR + MCF5282_GPIO_PUAPAR); 232 writeb(port, MCF5282_GPIO_PUAPAR);
233 } 233 }
234} 234}
235 235
diff --git a/arch/m68knommu/platform/528x/gpio.c b/arch/m68knommu/platform/528x/gpio.c
index eedaf0adbcd7..526db665d87e 100644
--- a/arch/m68knommu/platform/528x/gpio.c
+++ b/arch/m68knommu/platform/528x/gpio.c
@@ -33,9 +33,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
33 .base = 1, 33 .base = 1,
34 .ngpio = 7, 34 .ngpio = 7,
35 }, 35 },
36 .pddr = MCFEPORT_EPDDR, 36 .pddr = (void __iomem *)MCFEPORT_EPDDR,
37 .podr = MCFEPORT_EPDR, 37 .podr = (void __iomem *)MCFEPORT_EPDR,
38 .ppdr = MCFEPORT_EPPDR, 38 .ppdr = (void __iomem *)MCFEPORT_EPPDR,
39 }, 39 },
40 { 40 {
41 .gpio_chip = { 41 .gpio_chip = {
@@ -49,9 +49,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
49 .base = 8, 49 .base = 8,
50 .ngpio = 4, 50 .ngpio = 4,
51 }, 51 },
52 .pddr = MCFGPTA_GPTDDR, 52 .pddr = (void __iomem *)MCFGPTA_GPTDDR,
53 .podr = MCFGPTA_GPTPORT, 53 .podr = (void __iomem *)MCFGPTA_GPTPORT,
54 .ppdr = MCFGPTB_GPTPORT, 54 .ppdr = (void __iomem *)MCFGPTB_GPTPORT,
55 }, 55 },
56 { 56 {
57 .gpio_chip = { 57 .gpio_chip = {
@@ -65,9 +65,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
65 .base = 16, 65 .base = 16,
66 .ngpio = 4, 66 .ngpio = 4,
67 }, 67 },
68 .pddr = MCFGPTB_GPTDDR, 68 .pddr = (void __iomem *)MCFGPTB_GPTDDR,
69 .podr = MCFGPTB_GPTPORT, 69 .podr = (void __iomem *)MCFGPTB_GPTPORT,
70 .ppdr = MCFGPTB_GPTPORT, 70 .ppdr = (void __iomem *)MCFGPTB_GPTPORT,
71 }, 71 },
72 { 72 {
73 .gpio_chip = { 73 .gpio_chip = {
@@ -81,9 +81,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
81 .base = 24, 81 .base = 24,
82 .ngpio = 4, 82 .ngpio = 4,
83 }, 83 },
84 .pddr = MCFQADC_DDRQA, 84 .pddr = (void __iomem *)MCFQADC_DDRQA,
85 .podr = MCFQADC_PORTQA, 85 .podr = (void __iomem *)MCFQADC_PORTQA,
86 .ppdr = MCFQADC_PORTQA, 86 .ppdr = (void __iomem *)MCFQADC_PORTQA,
87 }, 87 },
88 { 88 {
89 .gpio_chip = { 89 .gpio_chip = {
@@ -97,9 +97,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
97 .base = 32, 97 .base = 32,
98 .ngpio = 4, 98 .ngpio = 4,
99 }, 99 },
100 .pddr = MCFQADC_DDRQB, 100 .pddr = (void __iomem *)MCFQADC_DDRQB,
101 .podr = MCFQADC_PORTQB, 101 .podr = (void __iomem *)MCFQADC_PORTQB,
102 .ppdr = MCFQADC_PORTQB, 102 .ppdr = (void __iomem *)MCFQADC_PORTQB,
103 }, 103 },
104 { 104 {
105 .gpio_chip = { 105 .gpio_chip = {
@@ -113,11 +113,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
113 .base = 40, 113 .base = 40,
114 .ngpio = 8, 114 .ngpio = 8,
115 }, 115 },
116 .pddr = MCFGPIO_DDRA, 116 .pddr = (void __iomem *)MCFGPIO_DDRA,
117 .podr = MCFGPIO_PORTA, 117 .podr = (void __iomem *)MCFGPIO_PORTA,
118 .ppdr = MCFGPIO_PORTAP, 118 .ppdr = (void __iomem *)MCFGPIO_PORTAP,
119 .setr = MCFGPIO_SETA, 119 .setr = (void __iomem *)MCFGPIO_SETA,
120 .clrr = MCFGPIO_CLRA, 120 .clrr = (void __iomem *)MCFGPIO_CLRA,
121 }, 121 },
122 { 122 {
123 .gpio_chip = { 123 .gpio_chip = {
@@ -131,11 +131,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
131 .base = 48, 131 .base = 48,
132 .ngpio = 8, 132 .ngpio = 8,
133 }, 133 },
134 .pddr = MCFGPIO_DDRB, 134 .pddr = (void __iomem *)MCFGPIO_DDRB,
135 .podr = MCFGPIO_PORTB, 135 .podr = (void __iomem *)MCFGPIO_PORTB,
136 .ppdr = MCFGPIO_PORTBP, 136 .ppdr = (void __iomem *)MCFGPIO_PORTBP,
137 .setr = MCFGPIO_SETB, 137 .setr = (void __iomem *)MCFGPIO_SETB,
138 .clrr = MCFGPIO_CLRB, 138 .clrr = (void __iomem *)MCFGPIO_CLRB,
139 }, 139 },
140 { 140 {
141 .gpio_chip = { 141 .gpio_chip = {
@@ -149,11 +149,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
149 .base = 56, 149 .base = 56,
150 .ngpio = 8, 150 .ngpio = 8,
151 }, 151 },
152 .pddr = MCFGPIO_DDRC, 152 .pddr = (void __iomem *)MCFGPIO_DDRC,
153 .podr = MCFGPIO_PORTC, 153 .podr = (void __iomem *)MCFGPIO_PORTC,
154 .ppdr = MCFGPIO_PORTCP, 154 .ppdr = (void __iomem *)MCFGPIO_PORTCP,
155 .setr = MCFGPIO_SETC, 155 .setr = (void __iomem *)MCFGPIO_SETC,
156 .clrr = MCFGPIO_CLRC, 156 .clrr = (void __iomem *)MCFGPIO_CLRC,
157 }, 157 },
158 { 158 {
159 .gpio_chip = { 159 .gpio_chip = {
@@ -167,11 +167,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
167 .base = 64, 167 .base = 64,
168 .ngpio = 8, 168 .ngpio = 8,
169 }, 169 },
170 .pddr = MCFGPIO_DDRD, 170 .pddr = (void __iomem *)MCFGPIO_DDRD,
171 .podr = MCFGPIO_PORTD, 171 .podr = (void __iomem *)MCFGPIO_PORTD,
172 .ppdr = MCFGPIO_PORTDP, 172 .ppdr = (void __iomem *)MCFGPIO_PORTDP,
173 .setr = MCFGPIO_SETD, 173 .setr = (void __iomem *)MCFGPIO_SETD,
174 .clrr = MCFGPIO_CLRD, 174 .clrr = (void __iomem *)MCFGPIO_CLRD,
175 }, 175 },
176 { 176 {
177 .gpio_chip = { 177 .gpio_chip = {
@@ -185,11 +185,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
185 .base = 72, 185 .base = 72,
186 .ngpio = 8, 186 .ngpio = 8,
187 }, 187 },
188 .pddr = MCFGPIO_DDRE, 188 .pddr = (void __iomem *)MCFGPIO_DDRE,
189 .podr = MCFGPIO_PORTE, 189 .podr = (void __iomem *)MCFGPIO_PORTE,
190 .ppdr = MCFGPIO_PORTEP, 190 .ppdr = (void __iomem *)MCFGPIO_PORTEP,
191 .setr = MCFGPIO_SETE, 191 .setr = (void __iomem *)MCFGPIO_SETE,
192 .clrr = MCFGPIO_CLRE, 192 .clrr = (void __iomem *)MCFGPIO_CLRE,
193 }, 193 },
194 { 194 {
195 .gpio_chip = { 195 .gpio_chip = {
@@ -203,11 +203,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
203 .base = 80, 203 .base = 80,
204 .ngpio = 8, 204 .ngpio = 8,
205 }, 205 },
206 .pddr = MCFGPIO_DDRF, 206 .pddr = (void __iomem *)MCFGPIO_DDRF,
207 .podr = MCFGPIO_PORTF, 207 .podr = (void __iomem *)MCFGPIO_PORTF,
208 .ppdr = MCFGPIO_PORTFP, 208 .ppdr = (void __iomem *)MCFGPIO_PORTFP,
209 .setr = MCFGPIO_SETF, 209 .setr = (void __iomem *)MCFGPIO_SETF,
210 .clrr = MCFGPIO_CLRF, 210 .clrr = (void __iomem *)MCFGPIO_CLRF,
211 }, 211 },
212 { 212 {
213 .gpio_chip = { 213 .gpio_chip = {
@@ -221,11 +221,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
221 .base = 88, 221 .base = 88,
222 .ngpio = 8, 222 .ngpio = 8,
223 }, 223 },
224 .pddr = MCFGPIO_DDRG, 224 .pddr = (void __iomem *)MCFGPIO_DDRG,
225 .podr = MCFGPIO_PORTG, 225 .podr = (void __iomem *)MCFGPIO_PORTG,
226 .ppdr = MCFGPIO_PORTGP, 226 .ppdr = (void __iomem *)MCFGPIO_PORTGP,
227 .setr = MCFGPIO_SETG, 227 .setr = (void __iomem *)MCFGPIO_SETG,
228 .clrr = MCFGPIO_CLRG, 228 .clrr = (void __iomem *)MCFGPIO_CLRG,
229 }, 229 },
230 { 230 {
231 .gpio_chip = { 231 .gpio_chip = {
@@ -239,11 +239,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
239 .base = 96, 239 .base = 96,
240 .ngpio = 8, 240 .ngpio = 8,
241 }, 241 },
242 .pddr = MCFGPIO_DDRH, 242 .pddr = (void __iomem *)MCFGPIO_DDRH,
243 .podr = MCFGPIO_PORTH, 243 .podr = (void __iomem *)MCFGPIO_PORTH,
244 .ppdr = MCFGPIO_PORTHP, 244 .ppdr = (void __iomem *)MCFGPIO_PORTHP,
245 .setr = MCFGPIO_SETH, 245 .setr = (void __iomem *)MCFGPIO_SETH,
246 .clrr = MCFGPIO_CLRH, 246 .clrr = (void __iomem *)MCFGPIO_CLRH,
247 }, 247 },
248 { 248 {
249 .gpio_chip = { 249 .gpio_chip = {
@@ -257,11 +257,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
257 .base = 104, 257 .base = 104,
258 .ngpio = 8, 258 .ngpio = 8,
259 }, 259 },
260 .pddr = MCFGPIO_DDRJ, 260 .pddr = (void __iomem *)MCFGPIO_DDRJ,
261 .podr = MCFGPIO_PORTJ, 261 .podr = (void __iomem *)MCFGPIO_PORTJ,
262 .ppdr = MCFGPIO_PORTJP, 262 .ppdr = (void __iomem *)MCFGPIO_PORTJP,
263 .setr = MCFGPIO_SETJ, 263 .setr = (void __iomem *)MCFGPIO_SETJ,
264 .clrr = MCFGPIO_CLRJ, 264 .clrr = (void __iomem *)MCFGPIO_CLRJ,
265 }, 265 },
266 { 266 {
267 .gpio_chip = { 267 .gpio_chip = {
@@ -275,11 +275,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
275 .base = 112, 275 .base = 112,
276 .ngpio = 8, 276 .ngpio = 8,
277 }, 277 },
278 .pddr = MCFGPIO_DDRDD, 278 .pddr = (void __iomem *)MCFGPIO_DDRDD,
279 .podr = MCFGPIO_PORTDD, 279 .podr = (void __iomem *)MCFGPIO_PORTDD,
280 .ppdr = MCFGPIO_PORTDDP, 280 .ppdr = (void __iomem *)MCFGPIO_PORTDDP,
281 .setr = MCFGPIO_SETDD, 281 .setr = (void __iomem *)MCFGPIO_SETDD,
282 .clrr = MCFGPIO_CLRDD, 282 .clrr = (void __iomem *)MCFGPIO_CLRDD,
283 }, 283 },
284 { 284 {
285 .gpio_chip = { 285 .gpio_chip = {
@@ -293,11 +293,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
293 .base = 120, 293 .base = 120,
294 .ngpio = 8, 294 .ngpio = 8,
295 }, 295 },
296 .pddr = MCFGPIO_DDREH, 296 .pddr = (void __iomem *)MCFGPIO_DDREH,
297 .podr = MCFGPIO_PORTEH, 297 .podr = (void __iomem *)MCFGPIO_PORTEH,
298 .ppdr = MCFGPIO_PORTEHP, 298 .ppdr = (void __iomem *)MCFGPIO_PORTEHP,
299 .setr = MCFGPIO_SETEH, 299 .setr = (void __iomem *)MCFGPIO_SETEH,
300 .clrr = MCFGPIO_CLREH, 300 .clrr = (void __iomem *)MCFGPIO_CLREH,
301 }, 301 },
302 { 302 {
303 .gpio_chip = { 303 .gpio_chip = {
@@ -311,11 +311,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
311 .base = 128, 311 .base = 128,
312 .ngpio = 8, 312 .ngpio = 8,
313 }, 313 },
314 .pddr = MCFGPIO_DDREL, 314 .pddr = (void __iomem *)MCFGPIO_DDREL,
315 .podr = MCFGPIO_PORTEL, 315 .podr = (void __iomem *)MCFGPIO_PORTEL,
316 .ppdr = MCFGPIO_PORTELP, 316 .ppdr = (void __iomem *)MCFGPIO_PORTELP,
317 .setr = MCFGPIO_SETEL, 317 .setr = (void __iomem *)MCFGPIO_SETEL,
318 .clrr = MCFGPIO_CLREL, 318 .clrr = (void __iomem *)MCFGPIO_CLREL,
319 }, 319 },
320 { 320 {
321 .gpio_chip = { 321 .gpio_chip = {
@@ -329,11 +329,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
329 .base = 136, 329 .base = 136,
330 .ngpio = 6, 330 .ngpio = 6,
331 }, 331 },
332 .pddr = MCFGPIO_DDRAS, 332 .pddr = (void __iomem *)MCFGPIO_DDRAS,
333 .podr = MCFGPIO_PORTAS, 333 .podr = (void __iomem *)MCFGPIO_PORTAS,
334 .ppdr = MCFGPIO_PORTASP, 334 .ppdr = (void __iomem *)MCFGPIO_PORTASP,
335 .setr = MCFGPIO_SETAS, 335 .setr = (void __iomem *)MCFGPIO_SETAS,
336 .clrr = MCFGPIO_CLRAS, 336 .clrr = (void __iomem *)MCFGPIO_CLRAS,
337 }, 337 },
338 { 338 {
339 .gpio_chip = { 339 .gpio_chip = {
@@ -347,11 +347,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
347 .base = 144, 347 .base = 144,
348 .ngpio = 7, 348 .ngpio = 7,
349 }, 349 },
350 .pddr = MCFGPIO_DDRQS, 350 .pddr = (void __iomem *)MCFGPIO_DDRQS,
351 .podr = MCFGPIO_PORTQS, 351 .podr = (void __iomem *)MCFGPIO_PORTQS,
352 .ppdr = MCFGPIO_PORTQSP, 352 .ppdr = (void __iomem *)MCFGPIO_PORTQSP,
353 .setr = MCFGPIO_SETQS, 353 .setr = (void __iomem *)MCFGPIO_SETQS,
354 .clrr = MCFGPIO_CLRQS, 354 .clrr = (void __iomem *)MCFGPIO_CLRQS,
355 }, 355 },
356 { 356 {
357 .gpio_chip = { 357 .gpio_chip = {
@@ -365,11 +365,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
365 .base = 152, 365 .base = 152,
366 .ngpio = 6, 366 .ngpio = 6,
367 }, 367 },
368 .pddr = MCFGPIO_DDRSD, 368 .pddr = (void __iomem *)MCFGPIO_DDRSD,
369 .podr = MCFGPIO_PORTSD, 369 .podr = (void __iomem *)MCFGPIO_PORTSD,
370 .ppdr = MCFGPIO_PORTSDP, 370 .ppdr = (void __iomem *)MCFGPIO_PORTSDP,
371 .setr = MCFGPIO_SETSD, 371 .setr = (void __iomem *)MCFGPIO_SETSD,
372 .clrr = MCFGPIO_CLRSD, 372 .clrr = (void __iomem *)MCFGPIO_CLRSD,
373 }, 373 },
374 { 374 {
375 .gpio_chip = { 375 .gpio_chip = {
@@ -383,11 +383,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
383 .base = 160, 383 .base = 160,
384 .ngpio = 4, 384 .ngpio = 4,
385 }, 385 },
386 .pddr = MCFGPIO_DDRTC, 386 .pddr = (void __iomem *)MCFGPIO_DDRTC,
387 .podr = MCFGPIO_PORTTC, 387 .podr = (void __iomem *)MCFGPIO_PORTTC,
388 .ppdr = MCFGPIO_PORTTCP, 388 .ppdr = (void __iomem *)MCFGPIO_PORTTCP,
389 .setr = MCFGPIO_SETTC, 389 .setr = (void __iomem *)MCFGPIO_SETTC,
390 .clrr = MCFGPIO_CLRTC, 390 .clrr = (void __iomem *)MCFGPIO_CLRTC,
391 }, 391 },
392 { 392 {
393 .gpio_chip = { 393 .gpio_chip = {
@@ -401,11 +401,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
401 .base = 168, 401 .base = 168,
402 .ngpio = 4, 402 .ngpio = 4,
403 }, 403 },
404 .pddr = MCFGPIO_DDRTD, 404 .pddr = (void __iomem *)MCFGPIO_DDRTD,
405 .podr = MCFGPIO_PORTTD, 405 .podr = (void __iomem *)MCFGPIO_PORTTD,
406 .ppdr = MCFGPIO_PORTTDP, 406 .ppdr = (void __iomem *)MCFGPIO_PORTTDP,
407 .setr = MCFGPIO_SETTD, 407 .setr = (void __iomem *)MCFGPIO_SETTD,
408 .clrr = MCFGPIO_CLRTD, 408 .clrr = (void __iomem *)MCFGPIO_CLRTD,
409 }, 409 },
410 { 410 {
411 .gpio_chip = { 411 .gpio_chip = {
@@ -419,11 +419,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
419 .base = 176, 419 .base = 176,
420 .ngpio = 4, 420 .ngpio = 4,
421 }, 421 },
422 .pddr = MCFGPIO_DDRUA, 422 .pddr = (void __iomem *)MCFGPIO_DDRUA,
423 .podr = MCFGPIO_PORTUA, 423 .podr = (void __iomem *)MCFGPIO_PORTUA,
424 .ppdr = MCFGPIO_PORTUAP, 424 .ppdr = (void __iomem *)MCFGPIO_PORTUAP,
425 .setr = MCFGPIO_SETUA, 425 .setr = (void __iomem *)MCFGPIO_SETUA,
426 .clrr = MCFGPIO_CLRUA, 426 .clrr = (void __iomem *)MCFGPIO_CLRUA,
427 }, 427 },
428}; 428};
429 429
diff --git a/arch/m68knommu/platform/5307/gpio.c b/arch/m68knommu/platform/5307/gpio.c
index 8da5880e4066..5850612b4a38 100644
--- a/arch/m68knommu/platform/5307/gpio.c
+++ b/arch/m68knommu/platform/5307/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 16, 33 .ngpio = 16,
34 }, 34 },
35 .pddr = MCFSIM_PADDR, 35 .pddr = (void __iomem *) MCFSIM_PADDR,
36 .podr = MCFSIM_PADAT, 36 .podr = (void __iomem *) MCFSIM_PADAT,
37 .ppdr = MCFSIM_PADAT, 37 .ppdr = (void __iomem *) MCFSIM_PADAT,
38 }, 38 },
39}; 39};
40 40
diff --git a/arch/m68knommu/platform/532x/gpio.c b/arch/m68knommu/platform/532x/gpio.c
index 184b77382c3d..212a85deac90 100644
--- a/arch/m68knommu/platform/532x/gpio.c
+++ b/arch/m68knommu/platform/532x/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 8, 33 .ngpio = 8,
34 }, 34 },
35 .pddr = MCFEPORT_EPDDR, 35 .pddr = (void __iomem *) MCFEPORT_EPDDR,
36 .podr = MCFEPORT_EPDR, 36 .podr = (void __iomem *) MCFEPORT_EPDR,
37 .ppdr = MCFEPORT_EPPDR, 37 .ppdr = (void __iomem *) MCFEPORT_EPPDR,
38 }, 38 },
39 { 39 {
40 .gpio_chip = { 40 .gpio_chip = {
@@ -48,11 +48,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
48 .base = 8, 48 .base = 8,
49 .ngpio = 8, 49 .ngpio = 8,
50 }, 50 },
51 .pddr = MCFGPIO_PDDR_FECH, 51 .pddr = (void __iomem *) MCFGPIO_PDDR_FECH,
52 .podr = MCFGPIO_PODR_FECH, 52 .podr = (void __iomem *) MCFGPIO_PODR_FECH,
53 .ppdr = MCFGPIO_PPDSDR_FECH, 53 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECH,
54 .setr = MCFGPIO_PPDSDR_FECH, 54 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECH,
55 .clrr = MCFGPIO_PCLRR_FECH, 55 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECH,
56 }, 56 },
57 { 57 {
58 .gpio_chip = { 58 .gpio_chip = {
@@ -66,11 +66,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
66 .base = 16, 66 .base = 16,
67 .ngpio = 8, 67 .ngpio = 8,
68 }, 68 },
69 .pddr = MCFGPIO_PDDR_FECL, 69 .pddr = (void __iomem *) MCFGPIO_PDDR_FECL,
70 .podr = MCFGPIO_PODR_FECL, 70 .podr = (void __iomem *) MCFGPIO_PODR_FECL,
71 .ppdr = MCFGPIO_PPDSDR_FECL, 71 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECL,
72 .setr = MCFGPIO_PPDSDR_FECL, 72 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECL,
73 .clrr = MCFGPIO_PCLRR_FECL, 73 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECL,
74 }, 74 },
75 { 75 {
76 .gpio_chip = { 76 .gpio_chip = {
@@ -84,11 +84,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
84 .base = 24, 84 .base = 24,
85 .ngpio = 5, 85 .ngpio = 5,
86 }, 86 },
87 .pddr = MCFGPIO_PDDR_SSI, 87 .pddr = (void __iomem *) MCFGPIO_PDDR_SSI,
88 .podr = MCFGPIO_PODR_SSI, 88 .podr = (void __iomem *) MCFGPIO_PODR_SSI,
89 .ppdr = MCFGPIO_PPDSDR_SSI, 89 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_SSI,
90 .setr = MCFGPIO_PPDSDR_SSI, 90 .setr = (void __iomem *) MCFGPIO_PPDSDR_SSI,
91 .clrr = MCFGPIO_PCLRR_SSI, 91 .clrr = (void __iomem *) MCFGPIO_PCLRR_SSI,
92 }, 92 },
93 { 93 {
94 .gpio_chip = { 94 .gpio_chip = {
@@ -102,11 +102,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
102 .base = 32, 102 .base = 32,
103 .ngpio = 4, 103 .ngpio = 4,
104 }, 104 },
105 .pddr = MCFGPIO_PDDR_BUSCTL, 105 .pddr = (void __iomem *) MCFGPIO_PDDR_BUSCTL,
106 .podr = MCFGPIO_PODR_BUSCTL, 106 .podr = (void __iomem *) MCFGPIO_PODR_BUSCTL,
107 .ppdr = MCFGPIO_PPDSDR_BUSCTL, 107 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
108 .setr = MCFGPIO_PPDSDR_BUSCTL, 108 .setr = (void __iomem *) MCFGPIO_PPDSDR_BUSCTL,
109 .clrr = MCFGPIO_PCLRR_BUSCTL, 109 .clrr = (void __iomem *) MCFGPIO_PCLRR_BUSCTL,
110 }, 110 },
111 { 111 {
112 .gpio_chip = { 112 .gpio_chip = {
@@ -120,11 +120,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
120 .base = 40, 120 .base = 40,
121 .ngpio = 4, 121 .ngpio = 4,
122 }, 122 },
123 .pddr = MCFGPIO_PDDR_BE, 123 .pddr = (void __iomem *) MCFGPIO_PDDR_BE,
124 .podr = MCFGPIO_PODR_BE, 124 .podr = (void __iomem *) MCFGPIO_PODR_BE,
125 .ppdr = MCFGPIO_PPDSDR_BE, 125 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_BE,
126 .setr = MCFGPIO_PPDSDR_BE, 126 .setr = (void __iomem *) MCFGPIO_PPDSDR_BE,
127 .clrr = MCFGPIO_PCLRR_BE, 127 .clrr = (void __iomem *) MCFGPIO_PCLRR_BE,
128 }, 128 },
129 { 129 {
130 .gpio_chip = { 130 .gpio_chip = {
@@ -138,11 +138,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
138 .base = 49, 138 .base = 49,
139 .ngpio = 5, 139 .ngpio = 5,
140 }, 140 },
141 .pddr = MCFGPIO_PDDR_CS, 141 .pddr = (void __iomem *) MCFGPIO_PDDR_CS,
142 .podr = MCFGPIO_PODR_CS, 142 .podr = (void __iomem *) MCFGPIO_PODR_CS,
143 .ppdr = MCFGPIO_PPDSDR_CS, 143 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_CS,
144 .setr = MCFGPIO_PPDSDR_CS, 144 .setr = (void __iomem *) MCFGPIO_PPDSDR_CS,
145 .clrr = MCFGPIO_PCLRR_CS, 145 .clrr = (void __iomem *) MCFGPIO_PCLRR_CS,
146 }, 146 },
147 { 147 {
148 .gpio_chip = { 148 .gpio_chip = {
@@ -156,11 +156,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
156 .base = 58, 156 .base = 58,
157 .ngpio = 4, 157 .ngpio = 4,
158 }, 158 },
159 .pddr = MCFGPIO_PDDR_PWM, 159 .pddr = (void __iomem *) MCFGPIO_PDDR_PWM,
160 .podr = MCFGPIO_PODR_PWM, 160 .podr = (void __iomem *) MCFGPIO_PODR_PWM,
161 .ppdr = MCFGPIO_PPDSDR_PWM, 161 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_PWM,
162 .setr = MCFGPIO_PPDSDR_PWM, 162 .setr = (void __iomem *) MCFGPIO_PPDSDR_PWM,
163 .clrr = MCFGPIO_PCLRR_PWM, 163 .clrr = (void __iomem *) MCFGPIO_PCLRR_PWM,
164 }, 164 },
165 { 165 {
166 .gpio_chip = { 166 .gpio_chip = {
@@ -174,11 +174,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
174 .base = 64, 174 .base = 64,
175 .ngpio = 4, 175 .ngpio = 4,
176 }, 176 },
177 .pddr = MCFGPIO_PDDR_FECI2C, 177 .pddr = (void __iomem *) MCFGPIO_PDDR_FECI2C,
178 .podr = MCFGPIO_PODR_FECI2C, 178 .podr = (void __iomem *) MCFGPIO_PODR_FECI2C,
179 .ppdr = MCFGPIO_PPDSDR_FECI2C, 179 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
180 .setr = MCFGPIO_PPDSDR_FECI2C, 180 .setr = (void __iomem *) MCFGPIO_PPDSDR_FECI2C,
181 .clrr = MCFGPIO_PCLRR_FECI2C, 181 .clrr = (void __iomem *) MCFGPIO_PCLRR_FECI2C,
182 }, 182 },
183 { 183 {
184 .gpio_chip = { 184 .gpio_chip = {
@@ -192,11 +192,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
192 .base = 72, 192 .base = 72,
193 .ngpio = 8, 193 .ngpio = 8,
194 }, 194 },
195 .pddr = MCFGPIO_PDDR_UART, 195 .pddr = (void __iomem *) MCFGPIO_PDDR_UART,
196 .podr = MCFGPIO_PODR_UART, 196 .podr = (void __iomem *) MCFGPIO_PODR_UART,
197 .ppdr = MCFGPIO_PPDSDR_UART, 197 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_UART,
198 .setr = MCFGPIO_PPDSDR_UART, 198 .setr = (void __iomem *) MCFGPIO_PPDSDR_UART,
199 .clrr = MCFGPIO_PCLRR_UART, 199 .clrr = (void __iomem *) MCFGPIO_PCLRR_UART,
200 }, 200 },
201 { 201 {
202 .gpio_chip = { 202 .gpio_chip = {
@@ -210,11 +210,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
210 .base = 80, 210 .base = 80,
211 .ngpio = 6, 211 .ngpio = 6,
212 }, 212 },
213 .pddr = MCFGPIO_PDDR_QSPI, 213 .pddr = (void __iomem *) MCFGPIO_PDDR_QSPI,
214 .podr = MCFGPIO_PODR_QSPI, 214 .podr = (void __iomem *) MCFGPIO_PODR_QSPI,
215 .ppdr = MCFGPIO_PPDSDR_QSPI, 215 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
216 .setr = MCFGPIO_PPDSDR_QSPI, 216 .setr = (void __iomem *) MCFGPIO_PPDSDR_QSPI,
217 .clrr = MCFGPIO_PCLRR_QSPI, 217 .clrr = (void __iomem *) MCFGPIO_PCLRR_QSPI,
218 }, 218 },
219 { 219 {
220 .gpio_chip = { 220 .gpio_chip = {
@@ -228,11 +228,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
228 .base = 88, 228 .base = 88,
229 .ngpio = 4, 229 .ngpio = 4,
230 }, 230 },
231 .pddr = MCFGPIO_PDDR_TIMER, 231 .pddr = (void __iomem *) MCFGPIO_PDDR_TIMER,
232 .podr = MCFGPIO_PODR_TIMER, 232 .podr = (void __iomem *) MCFGPIO_PODR_TIMER,
233 .ppdr = MCFGPIO_PPDSDR_TIMER, 233 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
234 .setr = MCFGPIO_PPDSDR_TIMER, 234 .setr = (void __iomem *) MCFGPIO_PPDSDR_TIMER,
235 .clrr = MCFGPIO_PCLRR_TIMER, 235 .clrr = (void __iomem *) MCFGPIO_PCLRR_TIMER,
236 }, 236 },
237 { 237 {
238 .gpio_chip = { 238 .gpio_chip = {
@@ -246,11 +246,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
246 .base = 96, 246 .base = 96,
247 .ngpio = 2, 247 .ngpio = 2,
248 }, 248 },
249 .pddr = MCFGPIO_PDDR_LCDDATAH, 249 .pddr = (void __iomem *) MCFGPIO_PDDR_LCDDATAH,
250 .podr = MCFGPIO_PODR_LCDDATAH, 250 .podr = (void __iomem *) MCFGPIO_PODR_LCDDATAH,
251 .ppdr = MCFGPIO_PPDSDR_LCDDATAH, 251 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAH,
252 .setr = MCFGPIO_PPDSDR_LCDDATAH, 252 .setr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAH,
253 .clrr = MCFGPIO_PCLRR_LCDDATAH, 253 .clrr = (void __iomem *) MCFGPIO_PCLRR_LCDDATAH,
254 }, 254 },
255 { 255 {
256 .gpio_chip = { 256 .gpio_chip = {
@@ -264,11 +264,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
264 .base = 104, 264 .base = 104,
265 .ngpio = 8, 265 .ngpio = 8,
266 }, 266 },
267 .pddr = MCFGPIO_PDDR_LCDDATAM, 267 .pddr = (void __iomem *) MCFGPIO_PDDR_LCDDATAM,
268 .podr = MCFGPIO_PODR_LCDDATAM, 268 .podr = (void __iomem *) MCFGPIO_PODR_LCDDATAM,
269 .ppdr = MCFGPIO_PPDSDR_LCDDATAM, 269 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAM,
270 .setr = MCFGPIO_PPDSDR_LCDDATAM, 270 .setr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAM,
271 .clrr = MCFGPIO_PCLRR_LCDDATAM, 271 .clrr = (void __iomem *) MCFGPIO_PCLRR_LCDDATAM,
272 }, 272 },
273 { 273 {
274 .gpio_chip = { 274 .gpio_chip = {
@@ -282,11 +282,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
282 .base = 112, 282 .base = 112,
283 .ngpio = 8, 283 .ngpio = 8,
284 }, 284 },
285 .pddr = MCFGPIO_PDDR_LCDDATAL, 285 .pddr = (void __iomem *) MCFGPIO_PDDR_LCDDATAL,
286 .podr = MCFGPIO_PODR_LCDDATAL, 286 .podr = (void __iomem *) MCFGPIO_PODR_LCDDATAL,
287 .ppdr = MCFGPIO_PPDSDR_LCDDATAL, 287 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAL,
288 .setr = MCFGPIO_PPDSDR_LCDDATAL, 288 .setr = (void __iomem *) MCFGPIO_PPDSDR_LCDDATAL,
289 .clrr = MCFGPIO_PCLRR_LCDDATAL, 289 .clrr = (void __iomem *) MCFGPIO_PCLRR_LCDDATAL,
290 }, 290 },
291 { 291 {
292 .gpio_chip = { 292 .gpio_chip = {
@@ -300,11 +300,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
300 .base = 120, 300 .base = 120,
301 .ngpio = 1, 301 .ngpio = 1,
302 }, 302 },
303 .pddr = MCFGPIO_PDDR_LCDCTLH, 303 .pddr = (void __iomem *) MCFGPIO_PDDR_LCDCTLH,
304 .podr = MCFGPIO_PODR_LCDCTLH, 304 .podr = (void __iomem *) MCFGPIO_PODR_LCDCTLH,
305 .ppdr = MCFGPIO_PPDSDR_LCDCTLH, 305 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_LCDCTLH,
306 .setr = MCFGPIO_PPDSDR_LCDCTLH, 306 .setr = (void __iomem *) MCFGPIO_PPDSDR_LCDCTLH,
307 .clrr = MCFGPIO_PCLRR_LCDCTLH, 307 .clrr = (void __iomem *) MCFGPIO_PCLRR_LCDCTLH,
308 }, 308 },
309 { 309 {
310 .gpio_chip = { 310 .gpio_chip = {
@@ -318,11 +318,11 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
318 .base = 128, 318 .base = 128,
319 .ngpio = 8, 319 .ngpio = 8,
320 }, 320 },
321 .pddr = MCFGPIO_PDDR_LCDCTLL, 321 .pddr = (void __iomem *) MCFGPIO_PDDR_LCDCTLL,
322 .podr = MCFGPIO_PODR_LCDCTLL, 322 .podr = (void __iomem *) MCFGPIO_PODR_LCDCTLL,
323 .ppdr = MCFGPIO_PPDSDR_LCDCTLL, 323 .ppdr = (void __iomem *) MCFGPIO_PPDSDR_LCDCTLL,
324 .setr = MCFGPIO_PPDSDR_LCDCTLL, 324 .setr = (void __iomem *) MCFGPIO_PPDSDR_LCDCTLL,
325 .clrr = MCFGPIO_PCLRR_LCDCTLL, 325 .clrr = (void __iomem *) MCFGPIO_PCLRR_LCDCTLL,
326 }, 326 },
327}; 327};
328 328
diff --git a/arch/m68knommu/platform/5407/gpio.c b/arch/m68knommu/platform/5407/gpio.c
index 8da5880e4066..5850612b4a38 100644
--- a/arch/m68knommu/platform/5407/gpio.c
+++ b/arch/m68knommu/platform/5407/gpio.c
@@ -32,9 +32,9 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = {
32 .set = mcf_gpio_set_value, 32 .set = mcf_gpio_set_value,
33 .ngpio = 16, 33 .ngpio = 16,
34 }, 34 },
35 .pddr = MCFSIM_PADDR, 35 .pddr = (void __iomem *) MCFSIM_PADDR,
36 .podr = MCFSIM_PADAT, 36 .podr = (void __iomem *) MCFSIM_PADAT,
37 .ppdr = MCFSIM_PADAT, 37 .ppdr = (void __iomem *) MCFSIM_PADAT,
38 }, 38 },
39}; 39};
40 40
diff --git a/arch/m68knommu/platform/54xx/Makefile b/arch/m68knommu/platform/54xx/Makefile
index e6035e7a2d3f..6cfd090ec3cd 100644
--- a/arch/m68knommu/platform/54xx/Makefile
+++ b/arch/m68knommu/platform/54xx/Makefile
@@ -15,4 +15,5 @@
15asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 15asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
16 16
17obj-y := config.o 17obj-y := config.o
18obj-$(CONFIG_FIREBEE) += firebee.o
18 19
diff --git a/arch/m68knommu/platform/54xx/firebee.c b/arch/m68knommu/platform/54xx/firebee.c
new file mode 100644
index 000000000000..46d50534f981
--- /dev/null
+++ b/arch/m68knommu/platform/54xx/firebee.c
@@ -0,0 +1,86 @@
1/***************************************************************************/
2
3/*
4 * firebee.c -- extra startup code support for the FireBee boards
5 *
6 * Copyright (C) 2011, Greg Ungerer (gerg@snapgear.com)
7 */
8
9/***************************************************************************/
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/io.h>
14#include <linux/platform_device.h>
15#include <linux/mtd/mtd.h>
16#include <linux/mtd/partitions.h>
17#include <linux/mtd/physmap.h>
18#include <asm/coldfire.h>
19#include <asm/mcfsim.h>
20
21/***************************************************************************/
22
23/*
24 * 8MB of NOR flash fitted to the FireBee board.
25 */
26#define FLASH_PHYS_ADDR 0xe0000000 /* Physical address of flash */
27#define FLASH_PHYS_SIZE 0x00800000 /* Size of flash */
28
29#define PART_BOOT_START 0x00000000 /* Start at bottom of flash */
30#define PART_BOOT_SIZE 0x00040000 /* 256k in size */
31#define PART_IMAGE_START 0x00040000 /* Start after boot loader */
32#define PART_IMAGE_SIZE 0x006c0000 /* Most of flash */
33#define PART_FPGA_START 0x00700000 /* Start at offset 7MB */
34#define PART_FPGA_SIZE 0x00100000 /* 1MB in size */
35
36static struct mtd_partition firebee_flash_parts[] = {
37 {
38 .name = "dBUG",
39 .offset = PART_BOOT_START,
40 .size = PART_BOOT_SIZE,
41 },
42 {
43 .name = "FPGA",
44 .offset = PART_FPGA_START,
45 .size = PART_FPGA_SIZE,
46 },
47 {
48 .name = "image",
49 .offset = PART_IMAGE_START,
50 .size = PART_IMAGE_SIZE,
51 },
52};
53
54static struct physmap_flash_data firebee_flash_data = {
55 .width = 2,
56 .nr_parts = ARRAY_SIZE(firebee_flash_parts),
57 .parts = firebee_flash_parts,
58};
59
60static struct resource firebee_flash_resource = {
61 .start = FLASH_PHYS_ADDR,
62 .end = FLASH_PHYS_ADDR + FLASH_PHYS_SIZE,
63 .flags = IORESOURCE_MEM,
64};
65
66static struct platform_device firebee_flash = {
67 .name = "physmap-flash",
68 .id = 0,
69 .dev = {
70 .platform_data = &firebee_flash_data,
71 },
72 .num_resources = 1,
73 .resource = &firebee_flash_resource,
74};
75
76/***************************************************************************/
77
78static int __init init_firebee(void)
79{
80 platform_device_register(&firebee_flash);
81 return 0;
82}
83
84arch_initcall(init_firebee);
85
86/***************************************************************************/
diff --git a/arch/m68knommu/platform/68328/ints.c b/arch/m68knommu/platform/68328/ints.c
index 2a3af193ccd3..e5631831a200 100644
--- a/arch/m68knommu/platform/68328/ints.c
+++ b/arch/m68knommu/platform/68328/ints.c
@@ -135,20 +135,20 @@ void process_int(int vec, struct pt_regs *fp)
135 } 135 }
136} 136}
137 137
138static void intc_irq_unmask(unsigned int irq) 138static void intc_irq_unmask(struct irq_data *d)
139{ 139{
140 IMR &= ~(1<<irq); 140 IMR &= ~(1 << d->irq);
141} 141}
142 142
143static void intc_irq_mask(unsigned int irq) 143static void intc_irq_mask(struct irq_data *d)
144{ 144{
145 IMR |= (1<<irq); 145 IMR |= (1 << d->irq);
146} 146}
147 147
148static struct irq_chip intc_irq_chip = { 148static struct irq_chip intc_irq_chip = {
149 .name = "M68K-INTC", 149 .name = "M68K-INTC",
150 .mask = intc_irq_mask, 150 .irq_mask = intc_irq_mask,
151 .unmask = intc_irq_unmask, 151 .irq_unmask = intc_irq_unmask,
152}; 152};
153 153
154/* 154/*
diff --git a/arch/m68knommu/platform/68360/ints.c b/arch/m68knommu/platform/68360/ints.c
index a29041c1a8a0..8de3feb568c6 100644
--- a/arch/m68knommu/platform/68360/ints.c
+++ b/arch/m68knommu/platform/68360/ints.c
@@ -37,26 +37,26 @@ extern void *_ramvec[];
37/* The number of spurious interrupts */ 37/* The number of spurious interrupts */
38volatile unsigned int num_spurious; 38volatile unsigned int num_spurious;
39 39
40static void intc_irq_unmask(unsigned int irq) 40static void intc_irq_unmask(struct irq_data *d)
41{ 41{
42 pquicc->intr_cimr |= (1 << irq); 42 pquicc->intr_cimr |= (1 << d->irq);
43} 43}
44 44
45static void intc_irq_mask(unsigned int irq) 45static void intc_irq_mask(struct irq_data *d)
46{ 46{
47 pquicc->intr_cimr &= ~(1 << irq); 47 pquicc->intr_cimr &= ~(1 << d->irq);
48} 48}
49 49
50static void intc_irq_ack(unsigned int irq) 50static void intc_irq_ack(struct irq_data *d)
51{ 51{
52 pquicc->intr_cisr = (1 << irq); 52 pquicc->intr_cisr = (1 << d->irq);
53} 53}
54 54
55static struct irq_chip intc_irq_chip = { 55static struct irq_chip intc_irq_chip = {
56 .name = "M68K-INTC", 56 .name = "M68K-INTC",
57 .mask = intc_irq_mask, 57 .irq_mask = intc_irq_mask,
58 .unmask = intc_irq_unmask, 58 .irq_unmask = intc_irq_unmask,
59 .ack = intc_irq_ack, 59 .irq_ack = intc_irq_ack,
60}; 60};
61 61
62/* 62/*
diff --git a/arch/m68knommu/platform/coldfire/dma.c b/arch/m68knommu/platform/coldfire/dma.c
index 2b30cf1b8f77..e88b95e2cc62 100644
--- a/arch/m68knommu/platform/coldfire/dma.c
+++ b/arch/m68knommu/platform/coldfire/dma.c
@@ -21,16 +21,16 @@
21 */ 21 */
22unsigned int dma_base_addr[MAX_M68K_DMA_CHANNELS] = { 22unsigned int dma_base_addr[MAX_M68K_DMA_CHANNELS] = {
23#ifdef MCFDMA_BASE0 23#ifdef MCFDMA_BASE0
24 MCF_MBAR + MCFDMA_BASE0, 24 MCFDMA_BASE0,
25#endif 25#endif
26#ifdef MCFDMA_BASE1 26#ifdef MCFDMA_BASE1
27 MCF_MBAR + MCFDMA_BASE1, 27 MCFDMA_BASE1,
28#endif 28#endif
29#ifdef MCFDMA_BASE2 29#ifdef MCFDMA_BASE2
30 MCF_MBAR + MCFDMA_BASE2, 30 MCFDMA_BASE2,
31#endif 31#endif
32#ifdef MCFDMA_BASE3 32#ifdef MCFDMA_BASE3
33 MCF_MBAR + MCFDMA_BASE3, 33 MCFDMA_BASE3,
34#endif 34#endif
35}; 35};
36 36
diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S
index d5977909ae5f..129bff4956b5 100644
--- a/arch/m68knommu/platform/coldfire/head.S
+++ b/arch/m68knommu/platform/coldfire/head.S
@@ -41,17 +41,17 @@
41 * DRAM controller is quite different. 41 * DRAM controller is quite different.
42 */ 42 */
43.macro GET_MEM_SIZE 43.macro GET_MEM_SIZE
44 movel MCF_MBAR+MCFSIM_DMR0,%d0 /* get mask for 1st bank */ 44 movel MCFSIM_DMR0,%d0 /* get mask for 1st bank */
45 btst #0,%d0 /* check if region enabled */ 45 btst #0,%d0 /* check if region enabled */
46 beq 1f 46 beq 1f
47 andl #0xfffc0000,%d0 47 andl #0xfffc0000,%d0
48 beq 1f 48 beq 1f
49 addl #0x00040000,%d0 /* convert mask to size */ 49 addl #0x00040000,%d0 /* convert mask to size */
501: 501:
51 movel MCF_MBAR+MCFSIM_DMR1,%d1 /* get mask for 2nd bank */ 51 movel MCFSIM_DMR1,%d1 /* get mask for 2nd bank */
52 btst #0,%d1 /* check if region enabled */ 52 btst #0,%d1 /* check if region enabled */
53 beq 2f 53 beq 2f
54 andl #0xfffc0000, %d1 54 andl #0xfffc0000,%d1
55 beq 2f 55 beq 2f
56 addl #0x00040000,%d1 56 addl #0x00040000,%d1
57 addl %d1,%d0 /* total mem size in d0 */ 57 addl %d1,%d0 /* total mem size in d0 */
@@ -68,14 +68,14 @@
68#elif defined(CONFIG_M520x) 68#elif defined(CONFIG_M520x)
69.macro GET_MEM_SIZE 69.macro GET_MEM_SIZE
70 clrl %d0 70 clrl %d0
71 movel MCF_MBAR+MCFSIM_SDCS0, %d2 /* Get SDRAM chip select 0 config */ 71 movel MCFSIM_SDCS0, %d2 /* Get SDRAM chip select 0 config */
72 andl #0x1f, %d2 /* Get only the chip select size */ 72 andl #0x1f, %d2 /* Get only the chip select size */
73 beq 3f /* Check if it is enabled */ 73 beq 3f /* Check if it is enabled */
74 addql #1, %d2 /* Form exponent */ 74 addql #1, %d2 /* Form exponent */
75 moveql #1, %d0 75 moveql #1, %d0
76 lsll %d2, %d0 /* 2 ^ exponent */ 76 lsll %d2, %d0 /* 2 ^ exponent */
773: 773:
78 movel MCF_MBAR+MCFSIM_SDCS1, %d2 /* Get SDRAM chip select 1 config */ 78 movel MCFSIM_SDCS1, %d2 /* Get SDRAM chip select 1 config */
79 andl #0x1f, %d2 /* Get only the chip select size */ 79 andl #0x1f, %d2 /* Get only the chip select size */
80 beq 4f /* Check if it is enabled */ 80 beq 4f /* Check if it is enabled */
81 addql #1, %d2 /* Form exponent */ 81 addql #1, %d2 /* Form exponent */
diff --git a/arch/m68knommu/platform/coldfire/intc-2.c b/arch/m68knommu/platform/coldfire/intc-2.c
index 85daa2b3001a..2cbfbf035db9 100644
--- a/arch/m68knommu/platform/coldfire/intc-2.c
+++ b/arch/m68knommu/platform/coldfire/intc-2.c
@@ -7,7 +7,10 @@
7 * family, the 5270, 5271, 5274, 5275, and the 528x family which have two such 7 * family, the 5270, 5271, 5274, 5275, and the 528x family which have two such
8 * controllers, and the 547x and 548x families which have only one of them. 8 * controllers, and the 547x and 548x families which have only one of them.
9 * 9 *
10 * (C) Copyright 2009, Greg Ungerer <gerg@snapgear.com> 10 * The external 7 fixed interrupts are part the the Edge Port unit of these
11 * ColdFire parts. They can be configured as level or edge triggered.
12 *
13 * (C) Copyright 2009-2011, Greg Ungerer <gerg@snapgear.com>
11 * 14 *
12 * This file is subject to the terms and conditions of the GNU General Public 15 * This file is subject to the terms and conditions of the GNU General Public
13 * License. See the file COPYING in the main directory of this archive 16 * License. See the file COPYING in the main directory of this archive
@@ -31,11 +34,12 @@
31#define MCFSIM_ICR_PRI(p) (p) /* Priority p intr */ 34#define MCFSIM_ICR_PRI(p) (p) /* Priority p intr */
32 35
33/* 36/*
34 * Each vector needs a unique priority and level associated with it. 37 * The EDGE Port interrupts are the fixed 7 external interrupts.
35 * We don't really care so much what they are, we don't rely on the 38 * They need some special treatment, for example they need to be acked.
36 * traditional priority interrupt scheme of the m68k/ColdFire.
37 */ 39 */
38static u8 intc_intpri = MCFSIM_ICR_LEVEL(6) | MCFSIM_ICR_PRI(6); 40#define EINT0 64 /* Is not actually used, but spot reserved for it */
41#define EINT1 65 /* EDGE Port interrupt 1 */
42#define EINT7 71 /* EDGE Port interrupt 7 */
39 43
40#ifdef MCFICM_INTC1 44#ifdef MCFICM_INTC1
41#define NR_VECS 128 45#define NR_VECS 128
@@ -43,66 +47,147 @@ static u8 intc_intpri = MCFSIM_ICR_LEVEL(6) | MCFSIM_ICR_PRI(6);
43#define NR_VECS 64 47#define NR_VECS 64
44#endif 48#endif
45 49
46static void intc_irq_mask(unsigned int irq) 50static void intc_irq_mask(struct irq_data *d)
47{ 51{
48 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) { 52 unsigned int irq = d->irq - MCFINT_VECBASE;
49 unsigned long imraddr; 53 unsigned long imraddr;
50 u32 val, imrbit; 54 u32 val, imrbit;
51 55
52 irq -= MCFINT_VECBASE;
53 imraddr = MCF_IPSBAR;
54#ifdef MCFICM_INTC1 56#ifdef MCFICM_INTC1
55 imraddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0; 57 imraddr = (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
56#else 58#else
57 imraddr += MCFICM_INTC0; 59 imraddr = MCFICM_INTC0;
58#endif 60#endif
59 imraddr += (irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL; 61 imraddr += (irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL;
60 imrbit = 0x1 << (irq & 0x1f); 62 imrbit = 0x1 << (irq & 0x1f);
61 63
62 val = __raw_readl(imraddr); 64 val = __raw_readl(imraddr);
63 __raw_writel(val | imrbit, imraddr); 65 __raw_writel(val | imrbit, imraddr);
64 } 66}
67
68static void intc_irq_unmask(struct irq_data *d)
69{
70 unsigned int irq = d->irq - MCFINT_VECBASE;
71 unsigned long imraddr;
72 u32 val, imrbit;
73
74#ifdef MCFICM_INTC1
75 imraddr = (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
76#else
77 imraddr = MCFICM_INTC0;
78#endif
79 imraddr += ((irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL);
80 imrbit = 0x1 << (irq & 0x1f);
81
82 /* Don't set the "maskall" bit! */
83 if ((irq & 0x20) == 0)
84 imrbit |= 0x1;
85
86 val = __raw_readl(imraddr);
87 __raw_writel(val & ~imrbit, imraddr);
88}
89
90/*
91 * Only the external (or EDGE Port) interrupts need to be acknowledged
92 * here, as part of the IRQ handler. They only really need to be ack'ed
93 * if they are in edge triggered mode, but there is no harm in doing it
94 * for all types.
95 */
96static void intc_irq_ack(struct irq_data *d)
97{
98 unsigned int irq = d->irq;
99
100 __raw_writeb(0x1 << (irq - EINT0), MCFEPORT_EPFR);
65} 101}
66 102
67static void intc_irq_unmask(unsigned int irq) 103/*
104 * Each vector needs a unique priority and level associated with it.
105 * We don't really care so much what they are, we don't rely on the
106 * traditional priority interrupt scheme of the m68k/ColdFire. This
107 * only needs to be set once for an interrupt, and we will never change
108 * these values once we have set them.
109 */
110static u8 intc_intpri = MCFSIM_ICR_LEVEL(6) | MCFSIM_ICR_PRI(6);
111
112static unsigned int intc_irq_startup(struct irq_data *d)
68{ 113{
69 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) { 114 unsigned int irq = d->irq - MCFINT_VECBASE;
70 unsigned long intaddr, imraddr, icraddr; 115 unsigned long icraddr;
71 u32 val, imrbit;
72 116
73 irq -= MCFINT_VECBASE;
74 intaddr = MCF_IPSBAR;
75#ifdef MCFICM_INTC1 117#ifdef MCFICM_INTC1
76 intaddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0; 118 icraddr = (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
77#else 119#else
78 intaddr += MCFICM_INTC0; 120 icraddr = MCFICM_INTC0;
79#endif 121#endif
80 imraddr = intaddr + ((irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL); 122 icraddr += MCFINTC_ICR0 + (irq & 0x3f);
81 icraddr = intaddr + MCFINTC_ICR0 + (irq & 0x3f); 123 if (__raw_readb(icraddr) == 0)
82 imrbit = 0x1 << (irq & 0x1f); 124 __raw_writeb(intc_intpri--, icraddr);
83 125
84 /* Don't set the "maskall" bit! */ 126 irq = d->irq;
85 if ((irq & 0x20) == 0) 127 if ((irq >= EINT1) && (irq <= EINT7)) {
86 imrbit |= 0x1; 128 u8 v;
87 129
88 if (__raw_readb(icraddr) == 0) 130 irq -= EINT0;
89 __raw_writeb(intc_intpri--, icraddr);
90 131
91 val = __raw_readl(imraddr); 132 /* Set EPORT line as input */
92 __raw_writel(val & ~imrbit, imraddr); 133 v = __raw_readb(MCFEPORT_EPDDR);
134 __raw_writeb(v & ~(0x1 << irq), MCFEPORT_EPDDR);
135
136 /* Set EPORT line as interrupt source */
137 v = __raw_readb(MCFEPORT_EPIER);
138 __raw_writeb(v | (0x1 << irq), MCFEPORT_EPIER);
93 } 139 }
140
141 intc_irq_unmask(d);
142 return 0;
94} 143}
95 144
96static int intc_irq_set_type(unsigned int irq, unsigned int type) 145static int intc_irq_set_type(struct irq_data *d, unsigned int type)
97{ 146{
147 unsigned int irq = d->irq;
148 u16 pa, tb;
149
150 switch (type) {
151 case IRQ_TYPE_EDGE_RISING:
152 tb = 0x1;
153 break;
154 case IRQ_TYPE_EDGE_FALLING:
155 tb = 0x2;
156 break;
157 case IRQ_TYPE_EDGE_BOTH:
158 tb = 0x3;
159 break;
160 default:
161 /* Level triggered */
162 tb = 0;
163 break;
164 }
165
166 if (tb)
167 set_irq_handler(irq, handle_edge_irq);
168
169 irq -= EINT0;
170 pa = __raw_readw(MCFEPORT_EPPAR);
171 pa = (pa & ~(0x3 << (irq * 2))) | (tb << (irq * 2));
172 __raw_writew(pa, MCFEPORT_EPPAR);
173
98 return 0; 174 return 0;
99} 175}
100 176
101static struct irq_chip intc_irq_chip = { 177static struct irq_chip intc_irq_chip = {
102 .name = "CF-INTC", 178 .name = "CF-INTC",
103 .mask = intc_irq_mask, 179 .irq_startup = intc_irq_startup,
104 .unmask = intc_irq_unmask, 180 .irq_mask = intc_irq_mask,
105 .set_type = intc_irq_set_type, 181 .irq_unmask = intc_irq_unmask,
182};
183
184static struct irq_chip intc_irq_chip_edge_port = {
185 .name = "CF-INTC-EP",
186 .irq_startup = intc_irq_startup,
187 .irq_mask = intc_irq_mask,
188 .irq_unmask = intc_irq_unmask,
189 .irq_ack = intc_irq_ack,
190 .irq_set_type = intc_irq_set_type,
106}; 191};
107 192
108void __init init_IRQ(void) 193void __init init_IRQ(void)
@@ -112,13 +197,16 @@ void __init init_IRQ(void)
112 init_vectors(); 197 init_vectors();
113 198
114 /* Mask all interrupt sources */ 199 /* Mask all interrupt sources */
115 __raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC0 + MCFINTC_IMRL); 200 __raw_writel(0x1, MCFICM_INTC0 + MCFINTC_IMRL);
116#ifdef MCFICM_INTC1 201#ifdef MCFICM_INTC1
117 __raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC1 + MCFINTC_IMRL); 202 __raw_writel(0x1, MCFICM_INTC1 + MCFINTC_IMRL);
118#endif 203#endif
119 204
120 for (irq = 0; (irq < NR_IRQS); irq++) { 205 for (irq = MCFINT_VECBASE; (irq < MCFINT_VECBASE + NR_VECS); irq++) {
121 set_irq_chip(irq, &intc_irq_chip); 206 if ((irq >= EINT1) && (irq <=EINT7))
207 set_irq_chip(irq, &intc_irq_chip_edge_port);
208 else
209 set_irq_chip(irq, &intc_irq_chip);
122 set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH); 210 set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
123 set_irq_handler(irq, handle_level_irq); 211 set_irq_handler(irq, handle_level_irq);
124 } 212 }
diff --git a/arch/m68knommu/platform/coldfire/intc-simr.c b/arch/m68knommu/platform/coldfire/intc-simr.c
index bb7048636140..e642b24ab729 100644
--- a/arch/m68knommu/platform/coldfire/intc-simr.c
+++ b/arch/m68knommu/platform/coldfire/intc-simr.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Interrupt controller code for the ColdFire 5208, 5207 & 532x parts. 4 * Interrupt controller code for the ColdFire 5208, 5207 & 532x parts.
5 * 5 *
6 * (C) Copyright 2009, Greg Ungerer <gerg@snapgear.com> 6 * (C) Copyright 2009-2011, Greg Ungerer <gerg@snapgear.com>
7 * 7 *
8 * This file is subject to the terms and conditions of the GNU General Public 8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file COPYING in the main directory of this archive 9 * License. See the file COPYING in the main directory of this archive
@@ -20,47 +20,156 @@
20#include <asm/mcfsim.h> 20#include <asm/mcfsim.h>
21#include <asm/traps.h> 21#include <asm/traps.h>
22 22
23static void intc_irq_mask(unsigned int irq) 23/*
24 * The EDGE Port interrupts are the fixed 7 external interrupts.
25 * They need some special treatment, for example they need to be acked.
26 */
27#ifdef CONFIG_M520x
28/*
29 * The 520x parts only support a limited range of these external
30 * interrupts, only 1, 4 and 7 (as interrupts 65, 66 and 67).
31 */
32#define EINT0 64 /* Is not actually used, but spot reserved for it */
33#define EINT1 65 /* EDGE Port interrupt 1 */
34#define EINT4 66 /* EDGE Port interrupt 4 */
35#define EINT7 67 /* EDGE Port interrupt 7 */
36
37static unsigned int irqebitmap[] = { 0, 1, 4, 7 };
38static unsigned int inline irq2ebit(unsigned int irq)
24{ 39{
25 if (irq >= MCFINT_VECBASE) { 40 return irqebitmap[irq - EINT0];
26 if (irq < MCFINT_VECBASE + 64) 41}
27 __raw_writeb(irq - MCFINT_VECBASE, MCFINTC0_SIMR); 42
28 else if ((irq < MCFINT_VECBASE + 128) && MCFINTC1_SIMR) 43#else
29 __raw_writeb(irq - MCFINT_VECBASE - 64, MCFINTC1_SIMR); 44
30 } 45/*
46 * Most of the ColdFire parts with the EDGE Port module just have
47 * a strait direct mapping of the 7 external interrupts. Although
48 * there is a bit reserved for 0, it is not used.
49 */
50#define EINT0 64 /* Is not actually used, but spot reserved for it */
51#define EINT1 65 /* EDGE Port interrupt 1 */
52#define EINT7 71 /* EDGE Port interrupt 7 */
53
54static unsigned int inline irq2ebit(unsigned int irq)
55{
56 return irq - EINT0;
57}
58
59#endif
60
61/*
62 * There maybe one or two interrupt control units, each has 64
63 * interrupts. If there is no second unit then MCFINTC1_* defines
64 * will be 0 (and code for them optimized away).
65 */
66
67static void intc_irq_mask(struct irq_data *d)
68{
69 unsigned int irq = d->irq - MCFINT_VECBASE;
70
71 if (MCFINTC1_SIMR && (irq > 64))
72 __raw_writeb(irq - 64, MCFINTC1_SIMR);
73 else
74 __raw_writeb(irq, MCFINTC0_SIMR);
31} 75}
32 76
33static void intc_irq_unmask(unsigned int irq) 77static void intc_irq_unmask(struct irq_data *d)
34{ 78{
35 if (irq >= MCFINT_VECBASE) { 79 unsigned int irq = d->irq - MCFINT_VECBASE;
36 if (irq < MCFINT_VECBASE + 64) 80
37 __raw_writeb(irq - MCFINT_VECBASE, MCFINTC0_CIMR); 81 if (MCFINTC1_CIMR && (irq > 64))
38 else if ((irq < MCFINT_VECBASE + 128) && MCFINTC1_CIMR) 82 __raw_writeb(irq - 64, MCFINTC1_CIMR);
39 __raw_writeb(irq - MCFINT_VECBASE - 64, MCFINTC1_CIMR); 83 else
84 __raw_writeb(irq, MCFINTC0_CIMR);
85}
86
87static void intc_irq_ack(struct irq_data *d)
88{
89 unsigned int ebit = irq2ebit(d->irq);
90
91 __raw_writeb(0x1 << ebit, MCFEPORT_EPFR);
92}
93
94static unsigned int intc_irq_startup(struct irq_data *d)
95{
96 unsigned int irq = d->irq;
97
98 if ((irq >= EINT1) && (irq <= EINT7)) {
99 unsigned int ebit = irq2ebit(irq);
100 u8 v;
101
102 /* Set EPORT line as input */
103 v = __raw_readb(MCFEPORT_EPDDR);
104 __raw_writeb(v & ~(0x1 << ebit), MCFEPORT_EPDDR);
105
106 /* Set EPORT line as interrupt source */
107 v = __raw_readb(MCFEPORT_EPIER);
108 __raw_writeb(v | (0x1 << ebit), MCFEPORT_EPIER);
40 } 109 }
110
111 irq -= MCFINT_VECBASE;
112 if (MCFINTC1_ICR0 && (irq > 64))
113 __raw_writeb(5, MCFINTC1_ICR0 + irq - 64);
114 else
115 __raw_writeb(5, MCFINTC0_ICR0 + irq);
116
117
118 intc_irq_unmask(d);
119 return 0;
41} 120}
42 121
43static int intc_irq_set_type(unsigned int irq, unsigned int type) 122static int intc_irq_set_type(struct irq_data *d, unsigned int type)
44{ 123{
45 if (irq >= MCFINT_VECBASE) { 124 unsigned int ebit, irq = d->irq;
46 if (irq < MCFINT_VECBASE + 64) 125 u16 pa, tb;
47 __raw_writeb(5, MCFINTC0_ICR0 + irq - MCFINT_VECBASE); 126
48 else if ((irq < MCFINT_VECBASE) && MCFINTC1_ICR0) 127 switch (type) {
49 __raw_writeb(5, MCFINTC1_ICR0 + irq - MCFINT_VECBASE - 64); 128 case IRQ_TYPE_EDGE_RISING:
129 tb = 0x1;
130 break;
131 case IRQ_TYPE_EDGE_FALLING:
132 tb = 0x2;
133 break;
134 case IRQ_TYPE_EDGE_BOTH:
135 tb = 0x3;
136 break;
137 default:
138 /* Level triggered */
139 tb = 0;
140 break;
50 } 141 }
142
143 if (tb)
144 set_irq_handler(irq, handle_edge_irq);
145
146 ebit = irq2ebit(irq) * 2;
147 pa = __raw_readw(MCFEPORT_EPPAR);
148 pa = (pa & ~(0x3 << ebit)) | (tb << ebit);
149 __raw_writew(pa, MCFEPORT_EPPAR);
150
51 return 0; 151 return 0;
52} 152}
53 153
54static struct irq_chip intc_irq_chip = { 154static struct irq_chip intc_irq_chip = {
55 .name = "CF-INTC", 155 .name = "CF-INTC",
56 .mask = intc_irq_mask, 156 .irq_startup = intc_irq_startup,
57 .unmask = intc_irq_unmask, 157 .irq_mask = intc_irq_mask,
58 .set_type = intc_irq_set_type, 158 .irq_unmask = intc_irq_unmask,
159};
160
161static struct irq_chip intc_irq_chip_edge_port = {
162 .name = "CF-INTC-EP",
163 .irq_startup = intc_irq_startup,
164 .irq_mask = intc_irq_mask,
165 .irq_unmask = intc_irq_unmask,
166 .irq_ack = intc_irq_ack,
167 .irq_set_type = intc_irq_set_type,
59}; 168};
60 169
61void __init init_IRQ(void) 170void __init init_IRQ(void)
62{ 171{
63 int irq; 172 int irq, eirq;
64 173
65 init_vectors(); 174 init_vectors();
66 175
@@ -69,8 +178,12 @@ void __init init_IRQ(void)
69 if (MCFINTC1_SIMR) 178 if (MCFINTC1_SIMR)
70 __raw_writeb(0xff, MCFINTC1_SIMR); 179 __raw_writeb(0xff, MCFINTC1_SIMR);
71 180
72 for (irq = 0; (irq < NR_IRQS); irq++) { 181 eirq = MCFINT_VECBASE + 64 + (MCFINTC1_ICR0 ? 64 : 0);
73 set_irq_chip(irq, &intc_irq_chip); 182 for (irq = MCFINT_VECBASE; (irq < eirq); irq++) {
183 if ((irq >= EINT1) && (irq <= EINT7))
184 set_irq_chip(irq, &intc_irq_chip_edge_port);
185 else
186 set_irq_chip(irq, &intc_irq_chip);
74 set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH); 187 set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
75 set_irq_handler(irq, handle_level_irq); 188 set_irq_handler(irq, handle_level_irq);
76 } 189 }
diff --git a/arch/m68knommu/platform/coldfire/intc.c b/arch/m68knommu/platform/coldfire/intc.c
index 60d2fcbe182b..d648081a63f6 100644
--- a/arch/m68knommu/platform/coldfire/intc.c
+++ b/arch/m68knommu/platform/coldfire/intc.c
@@ -111,28 +111,28 @@ void mcf_autovector(int irq)
111#endif 111#endif
112} 112}
113 113
114static void intc_irq_mask(unsigned int irq) 114static void intc_irq_mask(struct irq_data *d)
115{ 115{
116 if (mcf_irq2imr[irq]) 116 if (mcf_irq2imr[d->irq])
117 mcf_setimr(mcf_irq2imr[irq]); 117 mcf_setimr(mcf_irq2imr[d->irq]);
118} 118}
119 119
120static void intc_irq_unmask(unsigned int irq) 120static void intc_irq_unmask(struct irq_data *d)
121{ 121{
122 if (mcf_irq2imr[irq]) 122 if (mcf_irq2imr[d->irq])
123 mcf_clrimr(mcf_irq2imr[irq]); 123 mcf_clrimr(mcf_irq2imr[d->irq]);
124} 124}
125 125
126static int intc_irq_set_type(unsigned int irq, unsigned int type) 126static int intc_irq_set_type(struct irq_data *d, unsigned int type)
127{ 127{
128 return 0; 128 return 0;
129} 129}
130 130
131static struct irq_chip intc_irq_chip = { 131static struct irq_chip intc_irq_chip = {
132 .name = "CF-INTC", 132 .name = "CF-INTC",
133 .mask = intc_irq_mask, 133 .irq_mask = intc_irq_mask,
134 .unmask = intc_irq_unmask, 134 .irq_unmask = intc_irq_unmask,
135 .set_type = intc_irq_set_type, 135 .irq_set_type = intc_irq_set_type,
136}; 136};
137 137
138void __init init_IRQ(void) 138void __init init_IRQ(void)
diff --git a/arch/m68knommu/platform/coldfire/pit.c b/arch/m68knommu/platform/coldfire/pit.c
index aebea19abd78..c2b980926bec 100644
--- a/arch/m68knommu/platform/coldfire/pit.c
+++ b/arch/m68knommu/platform/coldfire/pit.c
@@ -31,7 +31,7 @@
31 * By default use timer1 as the system clock timer. 31 * By default use timer1 as the system clock timer.
32 */ 32 */
33#define FREQ ((MCF_CLK / 2) / 64) 33#define FREQ ((MCF_CLK / 2) / 64)
34#define TA(a) (MCF_IPSBAR + MCFPIT_BASE1 + (a)) 34#define TA(a) (MCFPIT_BASE1 + (a))
35#define PIT_CYCLES_PER_JIFFY (FREQ / HZ) 35#define PIT_CYCLES_PER_JIFFY (FREQ / HZ)
36 36
37static u32 pit_cnt; 37static u32 pit_cnt;
diff --git a/arch/m68knommu/platform/coldfire/timers.c b/arch/m68knommu/platform/coldfire/timers.c
index 2304d736c701..60242f65fea9 100644
--- a/arch/m68knommu/platform/coldfire/timers.c
+++ b/arch/m68knommu/platform/coldfire/timers.c
@@ -28,7 +28,7 @@
28 * By default use timer1 as the system clock timer. 28 * By default use timer1 as the system clock timer.
29 */ 29 */
30#define FREQ (MCF_BUSCLK / 16) 30#define FREQ (MCF_BUSCLK / 16)
31#define TA(a) (MCF_MBAR + MCFTIMER_BASE1 + (a)) 31#define TA(a) (MCFTIMER_BASE1 + (a))
32 32
33/* 33/*
34 * These provide the underlying interrupt vector support. 34 * These provide the underlying interrupt vector support.
@@ -126,7 +126,7 @@ void hw_timer_init(void)
126/* 126/*
127 * By default use timer2 as the profiler clock timer. 127 * By default use timer2 as the profiler clock timer.
128 */ 128 */
129#define PA(a) (MCF_MBAR + MCFTIMER_BASE2 + (a)) 129#define PA(a) (MCFTIMER_BASE2 + (a))
130 130
131/* 131/*
132 * Choose a reasonably fast profile timer. Make it an odd value to 132 * Choose a reasonably fast profile timer. Make it an odd value to