diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-29 08:54:20 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-31 05:09:40 -0400 |
| commit | 3f4110a48a749a1aa1c54fb807afb3f32f49711c (patch) | |
| tree | 5c0cab75bbb0868b59ee9a5b9f76fb2f5d325211 | |
| parent | 162bc7ab01a00eba1c5d614e64a51e1268ee3f96 (diff) | |
x86: Add Moorestown early detection
Moorestown MID devices need to be detected early in the boot process
to setup and do not call x86_default_early_setup as there is no EBDA
region to reserve.
[ Copied the minimal code from Jacobs latest MRST series ]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jacob Pan <jacob.jun.pan@intel.com>
| -rw-r--r-- | arch/x86/Kconfig | 13 | ||||
| -rw-r--r-- | arch/x86/include/asm/setup.h | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/Makefile | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/head32.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/mrst.c | 24 |
5 files changed, 47 insertions, 0 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 13ffa5df37d7..586d84557f75 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -318,6 +318,7 @@ config X86_EXTENDED_PLATFORM | |||
| 318 | SGI 320/540 (Visual Workstation) | 318 | SGI 320/540 (Visual Workstation) |
| 319 | Summit/EXA (IBM x440) | 319 | Summit/EXA (IBM x440) |
| 320 | Unisys ES7000 IA32 series | 320 | Unisys ES7000 IA32 series |
| 321 | Moorestown MID devices | ||
| 321 | 322 | ||
| 322 | If you have one of these systems, or if you want to build a | 323 | If you have one of these systems, or if you want to build a |
| 323 | generic distribution kernel, say Y here - otherwise say N. | 324 | generic distribution kernel, say Y here - otherwise say N. |
| @@ -377,6 +378,18 @@ config X86_ELAN | |||
| 377 | 378 | ||
| 378 | If unsure, choose "PC-compatible" instead. | 379 | If unsure, choose "PC-compatible" instead. |
| 379 | 380 | ||
| 381 | config X86_MRST | ||
| 382 | bool "Moorestown MID platform" | ||
| 383 | depends on X86_32 | ||
| 384 | depends on X86_EXTENDED_PLATFORM | ||
| 385 | ---help--- | ||
| 386 | Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin | ||
| 387 | Internet Device(MID) platform. Moorestown consists of two chips: | ||
| 388 | Lincroft (CPU core, graphics, and memory controller) and Langwell IOH. | ||
| 389 | Unlike standard x86 PCs, Moorestown does not have many legacy devices | ||
| 390 | nor standard legacy replacement devices/features. e.g. Moorestown does | ||
| 391 | not contain i8259, i8254, HPET, legacy BIOS, most of the io ports. | ||
| 392 | |||
| 380 | config X86_RDC321X | 393 | config X86_RDC321X |
| 381 | bool "RDC R-321x SoC" | 394 | bool "RDC R-321x SoC" |
| 382 | depends on X86_32 | 395 | depends on X86_32 |
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h index 861e1fe2303b..18e496c98ff0 100644 --- a/arch/x86/include/asm/setup.h +++ b/arch/x86/include/asm/setup.h | |||
| @@ -49,6 +49,12 @@ extern void reserve_standard_io_resources(void); | |||
| 49 | extern void i386_reserve_resources(void); | 49 | extern void i386_reserve_resources(void); |
| 50 | extern void setup_default_timer_irq(void); | 50 | extern void setup_default_timer_irq(void); |
| 51 | 51 | ||
| 52 | #ifdef CONFIG_X86_MRST | ||
| 53 | extern void x86_mrst_early_setup(void); | ||
| 54 | #else | ||
| 55 | static inline void x86_mrst_early_setup(void) { } | ||
| 56 | #endif | ||
| 57 | |||
| 52 | #ifndef _SETUP | 58 | #ifndef _SETUP |
| 53 | 59 | ||
| 54 | /* | 60 | /* |
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index ccf3db607c2d..5f33316610dc 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
| @@ -104,6 +104,7 @@ obj-$(CONFIG_SCx200) += scx200.o | |||
| 104 | scx200-y += scx200_32.o | 104 | scx200-y += scx200_32.o |
| 105 | 105 | ||
| 106 | obj-$(CONFIG_OLPC) += olpc.o | 106 | obj-$(CONFIG_OLPC) += olpc.o |
| 107 | obj-$(CONFIG_X86_MRST) += mrst.o | ||
| 107 | 108 | ||
| 108 | microcode-y := microcode_core.o | 109 | microcode-y := microcode_core.o |
| 109 | microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o | 110 | microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o |
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 441c075e2b80..4f8e2507e8f3 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c | |||
| @@ -45,6 +45,9 @@ void __init i386_start_kernel(void) | |||
| 45 | 45 | ||
| 46 | /* Call the subarch specific early setup function */ | 46 | /* Call the subarch specific early setup function */ |
| 47 | switch (boot_params.hdr.hardware_subarch) { | 47 | switch (boot_params.hdr.hardware_subarch) { |
| 48 | case X86_SUBARCH_MRST: | ||
| 49 | x86_mrst_early_setup(); | ||
| 50 | break; | ||
| 48 | default: | 51 | default: |
| 49 | i386_default_early_setup(); | 52 | i386_default_early_setup(); |
| 50 | break; | 53 | break; |
diff --git a/arch/x86/kernel/mrst.c b/arch/x86/kernel/mrst.c new file mode 100644 index 000000000000..3b7078abc871 --- /dev/null +++ b/arch/x86/kernel/mrst.c | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | /* | ||
| 2 | * mrst.c: Intel Moorestown platform specific setup code | ||
| 3 | * | ||
| 4 | * (C) Copyright 2008 Intel Corporation | ||
| 5 | * Author: Jacob Pan (jacob.jun.pan@intel.com) | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License | ||
| 9 | * as published by the Free Software Foundation; version 2 | ||
| 10 | * of the License. | ||
| 11 | */ | ||
| 12 | #include <linux/init.h> | ||
| 13 | |||
| 14 | #include <asm/setup.h> | ||
| 15 | |||
| 16 | /* | ||
| 17 | * Moorestown specific x86_init function overrides and early setup | ||
| 18 | * calls. | ||
| 19 | */ | ||
| 20 | void __init x86_mrst_early_setup(void) | ||
| 21 | { | ||
| 22 | x86_init.resources.probe_roms = x86_init_noop; | ||
| 23 | x86_init.resources.reserve_resources = x86_init_noop; | ||
| 24 | } | ||
