diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-24 20:01:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-24 20:01:45 -0400 |
commit | 317ec6cd00f25d05d153a780bc178c5335f320ee (patch) | |
tree | ebeab6da87789807d1852edd7228a73cafe4e493 /arch | |
parent | 0fa7d868ca456ddf4f41b700fd9dee186f8f4e12 (diff) | |
parent | 53698d2537bc8c2b8fedc788b8b927da9a004f9b (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 4278/1: configure pxa27x I2C SCL as "input"
[ARM] 4272/1: Missing symbol h1940_pm_return fix
[ARM] 4235/1: ns9xxx: declare the clock functions as "const"
[ARM] 4271/1: iop32x: fix ep80219 detection (support iq80219 platforms)
[ARM] 4270/2: mach-s3c2443/irq.c off by one error in dma irqs
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-iop32x/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/mach-iop32x/iq31244.c | 59 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/mach-h1940.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-s3c2440/mach-rx3715.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-s3c2443/irq.c | 2 |
5 files changed, 60 insertions, 9 deletions
diff --git a/arch/arm/mach-iop32x/Kconfig b/arch/arm/mach-iop32x/Kconfig index c072d94070da..9dd49cff21ff 100644 --- a/arch/arm/mach-iop32x/Kconfig +++ b/arch/arm/mach-iop32x/Kconfig | |||
@@ -4,6 +4,9 @@ menu "IOP32x Implementation Options" | |||
4 | 4 | ||
5 | comment "IOP32x Platform Types" | 5 | comment "IOP32x Platform Types" |
6 | 6 | ||
7 | config MACH_EP80219 | ||
8 | bool | ||
9 | |||
7 | config MACH_GLANTANK | 10 | config MACH_GLANTANK |
8 | bool "Enable support for the IO-Data GLAN Tank" | 11 | bool "Enable support for the IO-Data GLAN Tank" |
9 | help | 12 | help |
@@ -19,6 +22,7 @@ config ARCH_IQ80321 | |||
19 | 22 | ||
20 | config ARCH_IQ31244 | 23 | config ARCH_IQ31244 |
21 | bool "Enable support for EP80219/IQ31244" | 24 | bool "Enable support for EP80219/IQ31244" |
25 | select MACH_EP80219 | ||
22 | help | 26 | help |
23 | Say Y here if you want to run your kernel on the Intel EP80219 | 27 | Say Y here if you want to run your kernel on the Intel EP80219 |
24 | evaluation kit for the Intel 80219 processor (a IOP321 variant) | 28 | evaluation kit for the Intel 80219 processor (a IOP321 variant) |
diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c index 571ac35bc2c7..60e74309a458 100644 --- a/arch/arm/mach-iop32x/iq31244.c +++ b/arch/arm/mach-iop32x/iq31244.c | |||
@@ -39,22 +39,35 @@ | |||
39 | #include <asm/arch/time.h> | 39 | #include <asm/arch/time.h> |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * The EP80219 and IQ31244 use the same machine ID. To find out | 42 | * Until March of 2007 iq31244 platforms and ep80219 platforms shared the |
43 | * which of the two we're running on, we look at the processor ID. | 43 | * same machine id, and the processor type was used to select board type. |
44 | * However this assumption breaks for an iq80219 board which is an iop219 | ||
45 | * processor on an iq31244 board. The force_ep80219 flag has been added | ||
46 | * for old boot loaders using the iq31244 machine id for an ep80219 platform. | ||
44 | */ | 47 | */ |
48 | static int force_ep80219; | ||
49 | |||
45 | static int is_80219(void) | 50 | static int is_80219(void) |
46 | { | 51 | { |
47 | extern int processor_id; | 52 | extern int processor_id; |
48 | return !!((processor_id & 0xffffffe0) == 0x69052e20); | 53 | return !!((processor_id & 0xffffffe0) == 0x69052e20); |
49 | } | 54 | } |
50 | 55 | ||
56 | static int is_ep80219(void) | ||
57 | { | ||
58 | if (machine_is_ep80219() || force_ep80219) | ||
59 | return 1; | ||
60 | else | ||
61 | return 0; | ||
62 | } | ||
63 | |||
51 | 64 | ||
52 | /* | 65 | /* |
53 | * EP80219/IQ31244 timer tick configuration. | 66 | * EP80219/IQ31244 timer tick configuration. |
54 | */ | 67 | */ |
55 | static void __init iq31244_timer_init(void) | 68 | static void __init iq31244_timer_init(void) |
56 | { | 69 | { |
57 | if (is_80219()) { | 70 | if (is_ep80219()) { |
58 | /* 33.333 MHz crystal. */ | 71 | /* 33.333 MHz crystal. */ |
59 | iop_init_time(200000000); | 72 | iop_init_time(200000000); |
60 | } else { | 73 | } else { |
@@ -165,12 +178,18 @@ static struct hw_pci iq31244_pci __initdata = { | |||
165 | 178 | ||
166 | static int __init iq31244_pci_init(void) | 179 | static int __init iq31244_pci_init(void) |
167 | { | 180 | { |
168 | if (machine_is_iq31244()) { | 181 | if (is_ep80219()) |
182 | pci_common_init(&ep80219_pci); | ||
183 | else if (machine_is_iq31244()) { | ||
169 | if (is_80219()) { | 184 | if (is_80219()) { |
170 | pci_common_init(&ep80219_pci); | 185 | printk("note: iq31244 board type has been selected\n"); |
171 | } else { | 186 | printk("note: to select ep80219 operation:\n"); |
172 | pci_common_init(&iq31244_pci); | 187 | printk("\t1/ specify \"force_ep80219\" on the kernel" |
188 | " command line\n"); | ||
189 | printk("\t2/ update boot loader to pass" | ||
190 | " the ep80219 id: %d\n", MACH_TYPE_EP80219); | ||
173 | } | 191 | } |
192 | pci_common_init(&iq31244_pci); | ||
174 | } | 193 | } |
175 | 194 | ||
176 | return 0; | 195 | return 0; |
@@ -277,10 +296,18 @@ static void __init iq31244_init_machine(void) | |||
277 | platform_device_register(&iq31244_flash_device); | 296 | platform_device_register(&iq31244_flash_device); |
278 | platform_device_register(&iq31244_serial_device); | 297 | platform_device_register(&iq31244_serial_device); |
279 | 298 | ||
280 | if (is_80219()) | 299 | if (is_ep80219()) |
281 | pm_power_off = ep80219_power_off; | 300 | pm_power_off = ep80219_power_off; |
282 | } | 301 | } |
283 | 302 | ||
303 | static int __init force_ep80219_setup(char *str) | ||
304 | { | ||
305 | force_ep80219 = 1; | ||
306 | return 1; | ||
307 | } | ||
308 | |||
309 | __setup("force_ep80219", force_ep80219_setup); | ||
310 | |||
284 | MACHINE_START(IQ31244, "Intel IQ31244") | 311 | MACHINE_START(IQ31244, "Intel IQ31244") |
285 | /* Maintainer: Intel Corp. */ | 312 | /* Maintainer: Intel Corp. */ |
286 | .phys_io = IQ31244_UART, | 313 | .phys_io = IQ31244_UART, |
@@ -291,3 +318,19 @@ MACHINE_START(IQ31244, "Intel IQ31244") | |||
291 | .timer = &iq31244_timer, | 318 | .timer = &iq31244_timer, |
292 | .init_machine = iq31244_init_machine, | 319 | .init_machine = iq31244_init_machine, |
293 | MACHINE_END | 320 | MACHINE_END |
321 | |||
322 | /* There should have been an ep80219 machine identifier from the beginning. | ||
323 | * Boot roms older than March 2007 do not know the ep80219 machine id. Pass | ||
324 | * "force_ep80219" on the kernel command line, otherwise iq31244 operation | ||
325 | * will be selected. | ||
326 | */ | ||
327 | MACHINE_START(EP80219, "Intel EP80219") | ||
328 | /* Maintainer: Intel Corp. */ | ||
329 | .phys_io = IQ31244_UART, | ||
330 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, | ||
331 | .boot_params = 0xa0000100, | ||
332 | .map_io = iq31244_map_io, | ||
333 | .init_irq = iop32x_init_irq, | ||
334 | .timer = &iq31244_timer, | ||
335 | .init_machine = iq31244_init_machine, | ||
336 | MACHINE_END | ||
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 01c60d0923cd..d052ab2d9377 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -202,7 +202,9 @@ static void __init h1940_map_io(void) | |||
202 | 202 | ||
203 | /* setup PM */ | 203 | /* setup PM */ |
204 | 204 | ||
205 | #ifdef CONFIG_PM_H1940 | ||
205 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); | 206 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); |
207 | #endif | ||
206 | s3c2410_pm_init(); | 208 | s3c2410_pm_init(); |
207 | } | 209 | } |
208 | 210 | ||
diff --git a/arch/arm/mach-s3c2440/mach-rx3715.c b/arch/arm/mach-s3c2440/mach-rx3715.c index 480ccde63fb4..ae1d0a81fd6a 100644 --- a/arch/arm/mach-s3c2440/mach-rx3715.c +++ b/arch/arm/mach-s3c2440/mach-rx3715.c | |||
@@ -224,7 +224,9 @@ static void __init rx3715_init_irq(void) | |||
224 | 224 | ||
225 | static void __init rx3715_init_machine(void) | 225 | static void __init rx3715_init_machine(void) |
226 | { | 226 | { |
227 | #ifdef CONFIG_PM_H1940 | ||
227 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); | 228 | memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024); |
229 | #endif | ||
228 | s3c2410_pm_init(); | 230 | s3c2410_pm_init(); |
229 | 231 | ||
230 | s3c24xx_fb_set_platdata(&rx3715_lcdcfg); | 232 | s3c24xx_fb_set_platdata(&rx3715_lcdcfg); |
diff --git a/arch/arm/mach-s3c2443/irq.c b/arch/arm/mach-s3c2443/irq.c index 7a45b6dcb73e..756573595b88 100644 --- a/arch/arm/mach-s3c2443/irq.c +++ b/arch/arm/mach-s3c2443/irq.c | |||
@@ -137,7 +137,7 @@ static struct irq_chip s3c2443_irq_lcd = { | |||
137 | 137 | ||
138 | static void s3c2443_irq_demux_dma(unsigned int irq, struct irq_desc *desc) | 138 | static void s3c2443_irq_demux_dma(unsigned int irq, struct irq_desc *desc) |
139 | { | 139 | { |
140 | s3c2443_irq_demux(IRQ_S3C2443_DMA1, 6); | 140 | s3c2443_irq_demux(IRQ_S3C2443_DMA0, 6); |
141 | } | 141 | } |
142 | 142 | ||
143 | #define INTMSK_DMA (1UL << (IRQ_S3C2443_DMA - IRQ_EINT0)) | 143 | #define INTMSK_DMA (1UL << (IRQ_S3C2443_DMA - IRQ_EINT0)) |