Skip to content

Commit b4c6e2e

Browse files
committed
Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, earlyprintk: Move mrst early console to platform/ and fix a typo x86, apbt: Setup affinity for apb timers acting as per-cpu timer ce4100: Add errata fixes for UART on CE4100 x86: platform: Move iris to x86/platform where it belongs x86, mrst: Check platform_device_register() return code x86/platform: Add Eurobraille/Iris power off support x86, mrst: Add explanation for using 1960 as the year offset for vrtc x86, mrst: Fix dependencies of "select INTEL_SCU_IPC" x86, mrst: The shutdown for MRST requires the SCU IPC mechanism x86: Ce4100: Add reboot_fixup() for CE4100 ce4100: Add PCI register emulation for CE4100 x86: Add CE4100 platform support x86: mrst: Set vRTC's IRQ to level trigger type x86: mrst: Add audio driver bindings rtc: Add drivers/rtc/rtc-mrst.c x86: mrst: Add vrtc driver which serves as a wall clock device x86: mrst: Add Moorestown specific reboot/shutdown support x86: mrst: Parse SFI timer table for all timer configs x86/mrst: Add SFI platform device parsing code
2 parents 6f46b12 + 991cfff commit b4c6e2e

File tree

28 files changed

+1934
-18
lines changed

28 files changed

+1934
-18
lines changed

Documentation/x86/boot.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,7 @@ Protocol: 2.07+
600600
0x00000001 lguest
601601
0x00000002 Xen
602602
0x00000003 Moorestown MID
603+
0x00000004 CE4100 TV Platform
603604

604605
Field name: hardware_subarch_data
605606
Type: write (subarch-dependent)

arch/x86/Kconfig

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,18 @@ config X86_ELAN
377377

378378
If unsure, choose "PC-compatible" instead.
379379

380+
config X86_INTEL_CE
381+
bool "CE4100 TV platform"
382+
depends on PCI
383+
depends on PCI_GODIRECT
384+
depends on X86_32
385+
depends on X86_EXTENDED_PLATFORM
386+
select X86_REBOOTFIXUPS
387+
---help---
388+
Select for the Intel CE media processor (CE4100) SOC.
389+
This option compiles in support for the CE4100 SOC for settop
390+
boxes and media devices.
391+
380392
config X86_MRST
381393
bool "Moorestown MID platform"
382394
depends on PCI
@@ -385,6 +397,10 @@ config X86_MRST
385397
depends on X86_EXTENDED_PLATFORM
386398
depends on X86_IO_APIC
387399
select APB_TIMER
400+
select I2C
401+
select SPI
402+
select INTEL_SCU_IPC
403+
select X86_PLATFORM_DEVICES
388404
---help---
389405
Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin
390406
Internet Device(MID) platform. Moorestown consists of two chips:
@@ -466,6 +482,19 @@ config X86_ES7000
466482
Support for Unisys ES7000 systems. Say 'Y' here if this kernel is
467483
supposed to run on an IA32-based Unisys ES7000 system.
468484

485+
config X86_32_IRIS
486+
tristate "Eurobraille/Iris poweroff module"
487+
depends on X86_32
488+
---help---
489+
The Iris machines from EuroBraille do not have APM or ACPI support
490+
to shut themselves down properly. A special I/O sequence is
491+
needed to do so, which is what this module does at
492+
kernel shutdown.
493+
494+
This is only for Iris machines from EuroBraille.
495+
496+
If unused, say N.
497+
469498
config SCHED_OMIT_FRAME_POINTER
470499
def_bool y
471500
prompt "Single-depth WCHAN output"

arch/x86/include/asm/bootparam.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ enum {
124124
X86_SUBARCH_LGUEST,
125125
X86_SUBARCH_XEN,
126126
X86_SUBARCH_MRST,
127+
X86_SUBARCH_CE4100,
127128
X86_NR_SUBARCHS,
128129
};
129130

arch/x86/include/asm/fixmap.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ enum fixed_addresses {
117117
FIX_TEXT_POKE1, /* reserve 2 pages for text_poke() */
118118
FIX_TEXT_POKE0, /* first page is last, because allocation is backward */
119119
__end_of_permanent_fixed_addresses,
120+
121+
#ifdef CONFIG_X86_MRST
122+
FIX_LNW_VRTC,
123+
#endif
120124
/*
121125
* 256 temporary boot-time mappings, used by early_ioremap(),
122126
* before ioremap() is functional.

arch/x86/include/asm/mrst-vrtc.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#ifndef _MRST_VRTC_H
2+
#define _MRST_VRTC_H
3+
4+
extern unsigned char vrtc_cmos_read(unsigned char reg);
5+
extern void vrtc_cmos_write(unsigned char val, unsigned char reg);
6+
extern unsigned long vrtc_get_time(void);
7+
extern int vrtc_set_mmss(unsigned long nowtime);
8+
9+
#endif

arch/x86/include/asm/mrst.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
#include <linux/sfi.h>
1515

1616
extern int pci_mrst_init(void);
17-
int __init sfi_parse_mrtc(struct sfi_table_header *table);
17+
extern int __init sfi_parse_mrtc(struct sfi_table_header *table);
18+
extern int sfi_mrtc_num;
19+
extern struct sfi_rtc_table_entry sfi_mrtc_array[];
1820

1921
/*
2022
* Medfield is the follow-up of Moorestown, it combines two chip solution into
@@ -50,4 +52,14 @@ extern void mrst_early_console_init(void);
5052

5153
extern struct console early_hsu_console;
5254
extern void hsu_early_console_init(void);
55+
56+
extern void intel_scu_devices_create(void);
57+
extern void intel_scu_devices_destroy(void);
58+
59+
/* VRTC timer */
60+
#define MRST_VRTC_MAP_SZ (1024)
61+
/*#define MRST_VRTC_PGOFFSET (0xc00) */
62+
63+
extern void mrst_rtc_init(void);
64+
5365
#endif /* _ASM_X86_MRST_H */

arch/x86/include/asm/setup.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ extern void x86_mrst_early_setup(void);
5353
static inline void x86_mrst_early_setup(void) { }
5454
#endif
5555

56+
#ifdef CONFIG_X86_INTEL_CE
57+
extern void x86_ce4100_early_setup(void);
58+
#else
59+
static inline void x86_ce4100_early_setup(void) { }
60+
#endif
61+
5662
#ifndef _SETUP
5763

5864
/*

arch/x86/kernel/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ obj-$(CONFIG_DOUBLEFAULT) += doublefault_32.o
8585
obj-$(CONFIG_KGDB) += kgdb.o
8686
obj-$(CONFIG_VM86) += vm86_32.o
8787
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
88-
obj-$(CONFIG_EARLY_PRINTK_MRST) += early_printk_mrst.o
8988

9089
obj-$(CONFIG_HPET_TIMER) += hpet.o
9190
obj-$(CONFIG_APB_TIMER) += apb_timer.o

arch/x86/kernel/apb_timer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ static void apbt_setup_irq(struct apbt_dev *adev)
315315

316316
if (system_state == SYSTEM_BOOTING) {
317317
irq_modify_status(adev->irq, 0, IRQ_MOVE_PCNTXT);
318+
irq_set_affinity(adev->irq, cpumask_of(adev->cpu));
318319
/* APB timer irqs are set up as mp_irqs, timer is edge type */
319320
__set_irq_handler(adev->irq, handle_edge_irq, 0, "edge");
320321
if (request_irq(adev->irq, apbt_interrupt_handler,

arch/x86/kernel/early_printk.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ static int __init setup_early_printk(char *buf)
240240
if (!strncmp(buf, "xen", 3))
241241
early_console_register(&xenboot_console, keep);
242242
#endif
243-
#ifdef CONFIG_X86_MRST_EARLY_PRINTK
243+
#ifdef CONFIG_EARLY_PRINTK_MRST
244244
if (!strncmp(buf, "mrst", 4)) {
245245
mrst_early_console_init();
246246
early_console_register(&early_mrst_console, keep);
@@ -250,7 +250,6 @@ static int __init setup_early_printk(char *buf)
250250
hsu_early_console_init();
251251
early_console_register(&early_hsu_console, keep);
252252
}
253-
254253
#endif
255254
buf++;
256255
}

arch/x86/kernel/head32.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ void __init i386_start_kernel(void)
6161
case X86_SUBARCH_MRST:
6262
x86_mrst_early_setup();
6363
break;
64+
case X86_SUBARCH_CE4100:
65+
x86_ce4100_early_setup();
66+
break;
6467
default:
6568
i386_default_early_setup();
6669
break;

arch/x86/kernel/reboot_fixups_32.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,33 @@ static void rdc321x_reset(struct pci_dev *dev)
4343
outb(1, 0x92);
4444
}
4545

46+
static void ce4100_reset(struct pci_dev *dev)
47+
{
48+
int i;
49+
50+
for (i = 0; i < 10; i++) {
51+
outb(0x2, 0xcf9);
52+
udelay(50);
53+
}
54+
}
55+
4656
struct device_fixup {
4757
unsigned int vendor;
4858
unsigned int device;
4959
void (*reboot_fixup)(struct pci_dev *);
5060
};
5161

62+
/*
63+
* PCI ids solely used for fixups_table go here
64+
*/
65+
#define PCI_DEVICE_ID_INTEL_CE4100 0x0708
66+
5267
static const struct device_fixup fixups_table[] = {
5368
{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset },
5469
{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset },
5570
{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset },
5671
{ PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, rdc321x_reset },
72+
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CE4100, ce4100_reset },
5773
};
5874

5975
/*

arch/x86/pci/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ obj-$(CONFIG_PCI_OLPC) += olpc.o
77
obj-$(CONFIG_PCI_XEN) += xen.o
88

99
obj-y += fixup.o
10+
obj-$(CONFIG_X86_INTEL_CE) += ce4100.o
1011
obj-$(CONFIG_ACPI) += acpi.o
1112
obj-y += legacy.o irq.o
1213

0 commit comments

Comments
 (0)