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 | } | ||