diff options
| -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 | ||||
| -rw-r--r-- | include/asm-arm/arch-ns9xxx/clock.h | 10 | ||||
| -rw-r--r-- | include/asm-arm/arch-pxa/pxa-regs.h | 2 |
7 files changed, 68 insertions, 13 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)) |
diff --git a/include/asm-arm/arch-ns9xxx/clock.h b/include/asm-arm/arch-ns9xxx/clock.h index 4371a485db47..a7c5ab3d9011 100644 --- a/include/asm-arm/arch-ns9xxx/clock.h +++ b/include/asm-arm/arch-ns9xxx/clock.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #ifndef __ASM_ARCH_CLOCK_H | 11 | #ifndef __ASM_ARCH_CLOCK_H |
| 12 | #define __ASM_ARCH_CLOCK_H | 12 | #define __ASM_ARCH_CLOCK_H |
| 13 | 13 | ||
| 14 | static inline u32 ns9xxx_systemclock(void) __attribute__((const)); | ||
| 14 | static inline u32 ns9xxx_systemclock(void) | 15 | static inline u32 ns9xxx_systemclock(void) |
| 15 | { | 16 | { |
| 16 | /* | 17 | /* |
| @@ -19,17 +20,20 @@ static inline u32 ns9xxx_systemclock(void) | |||
| 19 | return 353894400; | 20 | return 353894400; |
| 20 | } | 21 | } |
| 21 | 22 | ||
| 22 | static inline const u32 ns9xxx_cpuclock(void) | 23 | static inline u32 ns9xxx_cpuclock(void) __attribute__((const)); |
| 24 | static inline u32 ns9xxx_cpuclock(void) | ||
| 23 | { | 25 | { |
| 24 | return ns9xxx_systemclock() / 2; | 26 | return ns9xxx_systemclock() / 2; |
| 25 | } | 27 | } |
| 26 | 28 | ||
| 27 | static inline const u32 ns9xxx_ahbclock(void) | 29 | static inline u32 ns9xxx_ahbclock(void) __attribute__((const)); |
| 30 | static inline u32 ns9xxx_ahbclock(void) | ||
| 28 | { | 31 | { |
| 29 | return ns9xxx_systemclock() / 4; | 32 | return ns9xxx_systemclock() / 4; |
| 30 | } | 33 | } |
| 31 | 34 | ||
| 32 | static inline const u32 ns9xxx_bbusclock(void) | 35 | static inline u32 ns9xxx_bbusclock(void) __attribute__((const)); |
| 36 | static inline u32 ns9xxx_bbusclock(void) | ||
| 33 | { | 37 | { |
| 34 | return ns9xxx_systemclock() / 8; | 38 | return ns9xxx_systemclock() / 8; |
| 35 | } | 39 | } |
diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h index aec835b6f057..139c9d954818 100644 --- a/include/asm-arm/arch-pxa/pxa-regs.h +++ b/include/asm-arm/arch-pxa/pxa-regs.h | |||
| @@ -1476,7 +1476,7 @@ | |||
| 1476 | #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT) | 1476 | #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT) |
| 1477 | #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT) | 1477 | #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT) |
| 1478 | #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT) | 1478 | #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT) |
| 1479 | #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_OUT) | 1479 | #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_IN) |
| 1480 | #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN) | 1480 | #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN) |
| 1481 | 1481 | ||
| 1482 | /* | 1482 | /* |
