Skip to content

Commit 3f4110a

Browse files
committed
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>
1 parent 162bc7a commit 3f4110a

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

arch/x86/Kconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ config X86_EXTENDED_PLATFORM
318318
SGI 320/540 (Visual Workstation)
319319
Summit/EXA (IBM x440)
320320
Unisys ES7000 IA32 series
321+
Moorestown MID devices
321322

322323
If you have one of these systems, or if you want to build a
323324
generic distribution kernel, say Y here - otherwise say N.
@@ -377,6 +378,18 @@ config X86_ELAN
377378

378379
If unsure, choose "PC-compatible" instead.
379380

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+
380393
config X86_RDC321X
381394
bool "RDC R-321x SoC"
382395
depends on X86_32

arch/x86/include/asm/setup.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ extern void reserve_standard_io_resources(void);
4949
extern void i386_reserve_resources(void);
5050
extern void setup_default_timer_irq(void);
5151

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+
5258
#ifndef _SETUP
5359

5460
/*

arch/x86/kernel/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ obj-$(CONFIG_SCx200) += scx200.o
104104
scx200-y += scx200_32.o
105105

106106
obj-$(CONFIG_OLPC) += olpc.o
107+
obj-$(CONFIG_X86_MRST) += mrst.o
107108

108109
microcode-y := microcode_core.o
109110
microcode-$(CONFIG_MICROCODE_INTEL) += microcode_intel.o

arch/x86/kernel/head32.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ void __init i386_start_kernel(void)
4545

4646
/* Call the subarch specific early setup function */
4747
switch (boot_params.hdr.hardware_subarch) {
48+
case X86_SUBARCH_MRST:
49+
x86_mrst_early_setup();
50+
break;
4851
default:
4952
i386_default_early_setup();
5053
break;

arch/x86/kernel/mrst.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

0 commit comments

Comments
 (0)