···377378 If unsure, choose "PC-compatible" instead.379000000000000380config X86_MRST381 bool "Moorestown MID platform"382 depends on PCI···397 depends on X86_EXTENDED_PLATFORM398 depends on X86_IO_APIC399 select APB_TIMER0000400 ---help---401 Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin402 Internet Device(MID) platform. Moorestown consists of two chips:···481 ---help---482 Support for Unisys ES7000 systems. Say 'Y' here if this kernel is483 supposed to run on an IA32-based Unisys ES7000 system.0000000000000484485config SCHED_OMIT_FRAME_POINTER486 def_bool y
···377378 If unsure, choose "PC-compatible" instead.379380+config X86_INTEL_CE381+ bool "CE4100 TV platform"382+ depends on PCI383+ depends on PCI_GODIRECT384+ depends on X86_32385+ depends on X86_EXTENDED_PLATFORM386+ select X86_REBOOTFIXUPS387+ ---help---388+ Select for the Intel CE media processor (CE4100) SOC.389+ This option compiles in support for the CE4100 SOC for settop390+ boxes and media devices.391+392config X86_MRST393 bool "Moorestown MID platform"394 depends on PCI···385 depends on X86_EXTENDED_PLATFORM386 depends on X86_IO_APIC387 select APB_TIMER388+ select I2C389+ select SPI390+ select INTEL_SCU_IPC391+ select X86_PLATFORM_DEVICES392 ---help---393 Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin394 Internet Device(MID) platform. Moorestown consists of two chips:···465 ---help---466 Support for Unisys ES7000 systems. Say 'Y' here if this kernel is467 supposed to run on an IA32-based Unisys ES7000 system.468+469+config X86_32_IRIS470+ tristate "Eurobraille/Iris poweroff module"471+ depends on X86_32472+ ---help---473+ The Iris machines from EuroBraille do not have APM or ACPI support474+ to shut themselves down properly. A special I/O sequence is475+ needed to do so, which is what this module does at476+ kernel shutdown.477+478+ This is only for Iris machines from EuroBraille.479+480+ If unused, say N.481482config SCHED_OMIT_FRAME_POINTER483 def_bool y
···117 FIX_TEXT_POKE1, /* reserve 2 pages for text_poke() */118 FIX_TEXT_POKE0, /* first page is last, because allocation is backward */119 __end_of_permanent_fixed_addresses,0000120 /*121 * 256 temporary boot-time mappings, used by early_ioremap(),122 * before ioremap() is functional.
···117 FIX_TEXT_POKE1, /* reserve 2 pages for text_poke() */118 FIX_TEXT_POKE0, /* first page is last, because allocation is backward */119 __end_of_permanent_fixed_addresses,120+121+#ifdef CONFIG_X86_MRST122+ FIX_LNW_VRTC,123+#endif124 /*125 * 256 temporary boot-time mappings, used by early_ioremap(),126 * before ioremap() is functional.
+9
arch/x86/include/asm/mrst-vrtc.h
···000000000
···1+#ifndef _MRST_VRTC_H2+#define _MRST_VRTC_H3+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
+13-1
arch/x86/include/asm/mrst.h
···14#include <linux/sfi.h>1516extern int pci_mrst_init(void);17-int __init sfi_parse_mrtc(struct sfi_table_header *table);001819/*20 * Medfield is the follow-up of Moorestown, it combines two chip solution into···5253extern struct console early_hsu_console;54extern void hsu_early_console_init(void);000000000055#endif /* _ASM_X86_MRST_H */
···14#include <linux/sfi.h>1516extern int pci_mrst_init(void);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[];2021/*22 * Medfield is the follow-up of Moorestown, it combines two chip solution into···5051extern struct console early_hsu_console;52extern void hsu_early_console_init(void);53+54+extern void intel_scu_devices_create(void);55+extern void intel_scu_devices_destroy(void);56+57+/* VRTC timer */58+#define MRST_VRTC_MAP_SZ (1024)59+/*#define MRST_VRTC_PGOFFSET (0xc00) */60+61+extern void mrst_rtc_init(void);62+63#endif /* _ASM_X86_MRST_H */
···315316 if (system_state == SYSTEM_BOOTING) {317 irq_modify_status(adev->irq, 0, IRQ_MOVE_PCNTXT);0318 /* APB timer irqs are set up as mp_irqs, timer is edge type */319 __set_irq_handler(adev->irq, handle_edge_irq, 0, "edge");320 if (request_irq(adev->irq, apbt_interrupt_handler,
···315316 if (system_state == SYSTEM_BOOTING) {317 irq_modify_status(adev->irq, 0, IRQ_MOVE_PCNTXT);318+ irq_set_affinity(adev->irq, cpumask_of(adev->cpu));319 /* APB timer irqs are set up as mp_irqs, timer is edge type */320 __set_irq_handler(adev->irq, handle_edge_irq, 0, "edge");321 if (request_irq(adev->irq, apbt_interrupt_handler,
···1+/*2+ * Intel CE4100 platform specific setup code3+ *4+ * (C) Copyright 2010 Intel Corporation5+ *6+ * This program is free software; you can redistribute it and/or7+ * modify it under the terms of the GNU General Public License8+ * as published by the Free Software Foundation; version 29+ * of the License.10+ */11+#include <linux/init.h>12+#include <linux/kernel.h>13+#include <linux/irq.h>14+#include <linux/module.h>15+#include <linux/serial_reg.h>16+#include <linux/serial_8250.h>17+18+#include <asm/setup.h>19+#include <asm/io.h>20+21+static int ce4100_i8042_detect(void)22+{23+ return 0;24+}25+26+static void __init sdv_find_smp_config(void)27+{28+}29+30+#ifdef CONFIG_SERIAL_825031+32+33+static unsigned int mem_serial_in(struct uart_port *p, int offset)34+{35+ offset = offset << p->regshift;36+ return readl(p->membase + offset);37+}38+39+/*40+ * The UART Tx interrupts are not set under some conditions and therefore serial41+ * transmission hangs. This is a silicon issue and has not been root caused. The42+ * workaround for this silicon issue checks UART_LSR_THRE bit and UART_LSR_TEMT43+ * bit of LSR register in interrupt handler to see whether at least one of these44+ * two bits is set, if so then process the transmit request. If this workaround45+ * is not applied, then the serial transmission may hang. This workaround is for46+ * errata number 9 in Errata - B step.47+*/48+49+static unsigned int ce4100_mem_serial_in(struct uart_port *p, int offset)50+{51+ unsigned int ret, ier, lsr;52+53+ if (offset == UART_IIR) {54+ offset = offset << p->regshift;55+ ret = readl(p->membase + offset);56+ if (ret & UART_IIR_NO_INT) {57+ /* see if the TX interrupt should have really set */58+ ier = mem_serial_in(p, UART_IER);59+ /* see if the UART's XMIT interrupt is enabled */60+ if (ier & UART_IER_THRI) {61+ lsr = mem_serial_in(p, UART_LSR);62+ /* now check to see if the UART should be63+ generating an interrupt (but isn't) */64+ if (lsr & (UART_LSR_THRE | UART_LSR_TEMT))65+ ret &= ~UART_IIR_NO_INT;66+ }67+ }68+ } else69+ ret = mem_serial_in(p, offset);70+ return ret;71+}72+73+static void ce4100_mem_serial_out(struct uart_port *p, int offset, int value)74+{75+ offset = offset << p->regshift;76+ writel(value, p->membase + offset);77+}78+79+static void ce4100_serial_fixup(int port, struct uart_port *up,80+ unsigned short *capabilites)81+{82+#ifdef CONFIG_EARLY_PRINTK83+ /*84+ * Over ride the legacy port configuration that comes from85+ * asm/serial.h. Using the ioport driver then switching to the86+ * PCI memmaped driver hangs the IOAPIC87+ */88+ if (up->iotype != UPIO_MEM32) {89+ up->uartclk = 14745600;90+ up->mapbase = 0xdffe0200;91+ set_fixmap_nocache(FIX_EARLYCON_MEM_BASE,92+ up->mapbase & PAGE_MASK);93+ up->membase =94+ (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);95+ up->membase += up->mapbase & ~PAGE_MASK;96+ up->iotype = UPIO_MEM32;97+ up->regshift = 2;98+ }99+#endif100+ up->iobase = 0;101+ up->serial_in = ce4100_mem_serial_in;102+ up->serial_out = ce4100_mem_serial_out;103+104+ *capabilites |= (1 << 12);105+}106+107+static __init void sdv_serial_fixup(void)108+{109+ serial8250_set_isa_configurator(ce4100_serial_fixup);110+}111+112+#else113+static inline void sdv_serial_fixup(void);114+#endif115+116+static void __init sdv_arch_setup(void)117+{118+ sdv_serial_fixup();119+}120+121+/*122+ * CE4100 specific x86_init function overrides and early setup123+ * calls.124+ */125+void __init x86_ce4100_early_setup(void)126+{127+ x86_init.oem.arch_setup = sdv_arch_setup;128+ x86_platform.i8042_detect = ce4100_i8042_detect;129+ x86_init.resources.probe_roms = x86_init_noop;130+ x86_init.mpparse.get_smp_config = x86_init_uint_noop;131+ x86_init.mpparse.find_smp_config = sdv_find_smp_config;132+}
···1+/*2+ * Eurobraille/Iris power off support.3+ *4+ * Eurobraille's Iris machine is a PC with no APM or ACPI support.5+ * It is shutdown by a special I/O sequence which this module provides.6+ *7+ * Copyright (C) Shérab <Sebastien.Hinderer@ens-lyon.org>8+ *9+ * This program is free software ; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License as published by11+ * the Free Software Foundation ; either version 2 of the License, or12+ * (at your option) any later version.13+ *14+ * This program is distributed in the hope that it will be useful,15+ * but WITHOUT ANY WARRANTY ; without even the implied warranty of16+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the17+ * GNU General Public License for more details.18+ *19+ * You should have received a copy of the GNU General Public License20+ * along with the program ; if not, write to the Free Software21+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.22+ */23+24+#include <linux/moduleparam.h>25+#include <linux/module.h>26+#include <linux/kernel.h>27+#include <linux/errno.h>28+#include <linux/delay.h>29+#include <linux/init.h>30+#include <linux/pm.h>31+#include <asm/io.h>32+33+#define IRIS_GIO_BASE 0x34034+#define IRIS_GIO_INPUT IRIS_GIO_BASE35+#define IRIS_GIO_OUTPUT (IRIS_GIO_BASE + 1)36+#define IRIS_GIO_PULSE 0x80 /* First byte to send */37+#define IRIS_GIO_REST 0x00 /* Second byte to send */38+#define IRIS_GIO_NODEV 0xff /* Likely not an Iris */39+40+MODULE_LICENSE("GPL");41+MODULE_AUTHOR("Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>");42+MODULE_DESCRIPTION("A power_off handler for Iris devices from EuroBraille");43+MODULE_SUPPORTED_DEVICE("Eurobraille/Iris");44+45+static int force;46+47+module_param(force, bool, 0);48+MODULE_PARM_DESC(force, "Set to one to force poweroff handler installation.");49+50+static void (*old_pm_power_off)(void);51+52+static void iris_power_off(void)53+{54+ outb(IRIS_GIO_PULSE, IRIS_GIO_OUTPUT);55+ msleep(850);56+ outb(IRIS_GIO_REST, IRIS_GIO_OUTPUT);57+}58+59+/*60+ * Before installing the power_off handler, try to make sure the OS is61+ * running on an Iris. Since Iris does not support DMI, this is done62+ * by reading its input port and seeing whether the read value is63+ * meaningful.64+ */65+static int iris_init(void)66+{67+ unsigned char status;68+ if (force != 1) {69+ printk(KERN_ERR "The force parameter has not been set to 1 so the Iris poweroff handler will not be installed.\n");70+ return -ENODEV;71+ }72+ status = inb(IRIS_GIO_INPUT);73+ if (status == IRIS_GIO_NODEV) {74+ printk(KERN_ERR "This machine does not seem to be an Iris. Power_off handler not installed.\n");75+ return -ENODEV;76+ }77+ old_pm_power_off = pm_power_off;78+ pm_power_off = &iris_power_off;79+ printk(KERN_INFO "Iris power_off handler installed.\n");80+81+ return 0;82+}83+84+static void iris_exit(void)85+{86+ pm_power_off = old_pm_power_off;87+ printk(KERN_INFO "Iris power_off handler uninstalled.\n");88+}89+90+module_init(iris_init);91+module_exit(iris_exit);
···463 This driver can also be built as a module. If so, the module464 will be called rtc-cmos.465000000000000466config RTC_DRV_DS1216467 tristate "Dallas DS1216"468 depends on SNI_RM
···463 This driver can also be built as a module. If so, the module464 will be called rtc-cmos.465466+config RTC_DRV_VRTC467+ tristate "Virtual RTC for Moorestown platforms"468+ depends on X86_MRST469+ default y if X86_MRST470+471+ help472+ Say "yes" here to get direct support for the real time clock473+ found on Moorestown platforms. The VRTC is a emulated RTC that474+ derives its clock source from a real RTC in the PMIC. The MC146818475+ style programming interface is mostly conserved, but any476+ updates are done via IPC calls to the system controller FW.477+478config RTC_DRV_DS1216479 tristate "Dallas DS1216"480 depends on SNI_RM