···377377378378 If unsure, choose "PC-compatible" instead.379379380380+config X86_INTEL_CE381381+ bool "CE4100 TV platform"382382+ depends on PCI383383+ depends on PCI_GODIRECT384384+ depends on X86_32385385+ depends on X86_EXTENDED_PLATFORM386386+ select X86_REBOOTFIXUPS387387+ ---help---388388+ Select for the Intel CE media processor (CE4100) SOC.389389+ This option compiles in support for the CE4100 SOC for settop390390+ boxes and media devices.391391+380392config X86_MRST381393 bool "Moorestown MID platform"382394 depends on PCI···397385 depends on X86_EXTENDED_PLATFORM398386 depends on X86_IO_APIC399387 select APB_TIMER388388+ select I2C389389+ select SPI390390+ select INTEL_SCU_IPC391391+ select X86_PLATFORM_DEVICES400392 ---help---401393 Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin402394 Internet Device(MID) platform. Moorestown consists of two chips:···481465 ---help---482466 Support for Unisys ES7000 systems. Say 'Y' here if this kernel is483467 supposed to run on an IA32-based Unisys ES7000 system.468468+469469+config X86_32_IRIS470470+ tristate "Eurobraille/Iris poweroff module"471471+ depends on X86_32472472+ ---help---473473+ The Iris machines from EuroBraille do not have APM or ACPI support474474+ to shut themselves down properly. A special I/O sequence is475475+ needed to do so, which is what this module does at476476+ kernel shutdown.477477+478478+ This is only for Iris machines from EuroBraille.479479+480480+ If unused, say N.484481485482config SCHED_OMIT_FRAME_POINTER486483 def_bool y
···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,120120+121121+#ifdef CONFIG_X86_MRST122122+ FIX_LNW_VRTC,123123+#endif120124 /*121125 * 256 temporary boot-time mappings, used by early_ioremap(),122126 * before ioremap() is functional.
+9
arch/x86/include/asm/mrst-vrtc.h
···11+#ifndef _MRST_VRTC_H22+#define _MRST_VRTC_H33+44+extern unsigned char vrtc_cmos_read(unsigned char reg);55+extern void vrtc_cmos_write(unsigned char val, unsigned char reg);66+extern unsigned long vrtc_get_time(void);77+extern int vrtc_set_mmss(unsigned long nowtime);88+99+#endif
+13-1
arch/x86/include/asm/mrst.h
···1414#include <linux/sfi.h>15151616extern int pci_mrst_init(void);1717-int __init sfi_parse_mrtc(struct sfi_table_header *table);1717+extern int __init sfi_parse_mrtc(struct sfi_table_header *table);1818+extern int sfi_mrtc_num;1919+extern struct sfi_rtc_table_entry sfi_mrtc_array[];18201921/*2022 * Medfield is the follow-up of Moorestown, it combines two chip solution into···52505351extern struct console early_hsu_console;5452extern void hsu_early_console_init(void);5353+5454+extern void intel_scu_devices_create(void);5555+extern void intel_scu_devices_destroy(void);5656+5757+/* VRTC timer */5858+#define MRST_VRTC_MAP_SZ (1024)5959+/*#define MRST_VRTC_PGOFFSET (0xc00) */6060+6161+extern void mrst_rtc_init(void);6262+5563#endif /* _ASM_X86_MRST_H */
···315315316316 if (system_state == SYSTEM_BOOTING) {317317 irq_modify_status(adev->irq, 0, IRQ_MOVE_PCNTXT);318318+ 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,
···11+/*22+ * Intel CE4100 platform specific setup code33+ *44+ * (C) Copyright 2010 Intel Corporation55+ *66+ * This program is free software; you can redistribute it and/or77+ * modify it under the terms of the GNU General Public License88+ * as published by the Free Software Foundation; version 299+ * of the License.1010+ */1111+#include <linux/init.h>1212+#include <linux/kernel.h>1313+#include <linux/irq.h>1414+#include <linux/module.h>1515+#include <linux/serial_reg.h>1616+#include <linux/serial_8250.h>1717+1818+#include <asm/setup.h>1919+#include <asm/io.h>2020+2121+static int ce4100_i8042_detect(void)2222+{2323+ return 0;2424+}2525+2626+static void __init sdv_find_smp_config(void)2727+{2828+}2929+3030+#ifdef CONFIG_SERIAL_82503131+3232+3333+static unsigned int mem_serial_in(struct uart_port *p, int offset)3434+{3535+ offset = offset << p->regshift;3636+ return readl(p->membase + offset);3737+}3838+3939+/*4040+ * The UART Tx interrupts are not set under some conditions and therefore serial4141+ * transmission hangs. This is a silicon issue and has not been root caused. The4242+ * workaround for this silicon issue checks UART_LSR_THRE bit and UART_LSR_TEMT4343+ * bit of LSR register in interrupt handler to see whether at least one of these4444+ * two bits is set, if so then process the transmit request. If this workaround4545+ * is not applied, then the serial transmission may hang. This workaround is for4646+ * errata number 9 in Errata - B step.4747+*/4848+4949+static unsigned int ce4100_mem_serial_in(struct uart_port *p, int offset)5050+{5151+ unsigned int ret, ier, lsr;5252+5353+ if (offset == UART_IIR) {5454+ offset = offset << p->regshift;5555+ ret = readl(p->membase + offset);5656+ if (ret & UART_IIR_NO_INT) {5757+ /* see if the TX interrupt should have really set */5858+ ier = mem_serial_in(p, UART_IER);5959+ /* see if the UART's XMIT interrupt is enabled */6060+ if (ier & UART_IER_THRI) {6161+ lsr = mem_serial_in(p, UART_LSR);6262+ /* now check to see if the UART should be6363+ generating an interrupt (but isn't) */6464+ if (lsr & (UART_LSR_THRE | UART_LSR_TEMT))6565+ ret &= ~UART_IIR_NO_INT;6666+ }6767+ }6868+ } else6969+ ret = mem_serial_in(p, offset);7070+ return ret;7171+}7272+7373+static void ce4100_mem_serial_out(struct uart_port *p, int offset, int value)7474+{7575+ offset = offset << p->regshift;7676+ writel(value, p->membase + offset);7777+}7878+7979+static void ce4100_serial_fixup(int port, struct uart_port *up,8080+ unsigned short *capabilites)8181+{8282+#ifdef CONFIG_EARLY_PRINTK8383+ /*8484+ * Over ride the legacy port configuration that comes from8585+ * asm/serial.h. Using the ioport driver then switching to the8686+ * PCI memmaped driver hangs the IOAPIC8787+ */8888+ if (up->iotype != UPIO_MEM32) {8989+ up->uartclk = 14745600;9090+ up->mapbase = 0xdffe0200;9191+ set_fixmap_nocache(FIX_EARLYCON_MEM_BASE,9292+ up->mapbase & PAGE_MASK);9393+ up->membase =9494+ (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);9595+ up->membase += up->mapbase & ~PAGE_MASK;9696+ up->iotype = UPIO_MEM32;9797+ up->regshift = 2;9898+ }9999+#endif100100+ up->iobase = 0;101101+ up->serial_in = ce4100_mem_serial_in;102102+ up->serial_out = ce4100_mem_serial_out;103103+104104+ *capabilites |= (1 << 12);105105+}106106+107107+static __init void sdv_serial_fixup(void)108108+{109109+ serial8250_set_isa_configurator(ce4100_serial_fixup);110110+}111111+112112+#else113113+static inline void sdv_serial_fixup(void);114114+#endif115115+116116+static void __init sdv_arch_setup(void)117117+{118118+ sdv_serial_fixup();119119+}120120+121121+/*122122+ * CE4100 specific x86_init function overrides and early setup123123+ * calls.124124+ */125125+void __init x86_ce4100_early_setup(void)126126+{127127+ x86_init.oem.arch_setup = sdv_arch_setup;128128+ x86_platform.i8042_detect = ce4100_i8042_detect;129129+ x86_init.resources.probe_roms = x86_init_noop;130130+ x86_init.mpparse.get_smp_config = x86_init_uint_noop;131131+ x86_init.mpparse.find_smp_config = sdv_find_smp_config;132132+}
···11+/*22+ * Eurobraille/Iris power off support.33+ *44+ * Eurobraille's Iris machine is a PC with no APM or ACPI support.55+ * It is shutdown by a special I/O sequence which this module provides.66+ *77+ * Copyright (C) Shérab <Sebastien.Hinderer@ens-lyon.org>88+ *99+ * This program is free software ; you can redistribute it and/or modify1010+ * it under the terms of the GNU General Public License as published by1111+ * the Free Software Foundation ; either version 2 of the License, or1212+ * (at your option) any later version.1313+ *1414+ * This program is distributed in the hope that it will be useful,1515+ * but WITHOUT ANY WARRANTY ; without even the implied warranty of1616+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1717+ * GNU General Public License for more details.1818+ *1919+ * You should have received a copy of the GNU General Public License2020+ * along with the program ; if not, write to the Free Software2121+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.2222+ */2323+2424+#include <linux/moduleparam.h>2525+#include <linux/module.h>2626+#include <linux/kernel.h>2727+#include <linux/errno.h>2828+#include <linux/delay.h>2929+#include <linux/init.h>3030+#include <linux/pm.h>3131+#include <asm/io.h>3232+3333+#define IRIS_GIO_BASE 0x3403434+#define IRIS_GIO_INPUT IRIS_GIO_BASE3535+#define IRIS_GIO_OUTPUT (IRIS_GIO_BASE + 1)3636+#define IRIS_GIO_PULSE 0x80 /* First byte to send */3737+#define IRIS_GIO_REST 0x00 /* Second byte to send */3838+#define IRIS_GIO_NODEV 0xff /* Likely not an Iris */3939+4040+MODULE_LICENSE("GPL");4141+MODULE_AUTHOR("Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>");4242+MODULE_DESCRIPTION("A power_off handler for Iris devices from EuroBraille");4343+MODULE_SUPPORTED_DEVICE("Eurobraille/Iris");4444+4545+static int force;4646+4747+module_param(force, bool, 0);4848+MODULE_PARM_DESC(force, "Set to one to force poweroff handler installation.");4949+5050+static void (*old_pm_power_off)(void);5151+5252+static void iris_power_off(void)5353+{5454+ outb(IRIS_GIO_PULSE, IRIS_GIO_OUTPUT);5555+ msleep(850);5656+ outb(IRIS_GIO_REST, IRIS_GIO_OUTPUT);5757+}5858+5959+/*6060+ * Before installing the power_off handler, try to make sure the OS is6161+ * running on an Iris. Since Iris does not support DMI, this is done6262+ * by reading its input port and seeing whether the read value is6363+ * meaningful.6464+ */6565+static int iris_init(void)6666+{6767+ unsigned char status;6868+ if (force != 1) {6969+ printk(KERN_ERR "The force parameter has not been set to 1 so the Iris poweroff handler will not be installed.\n");7070+ return -ENODEV;7171+ }7272+ status = inb(IRIS_GIO_INPUT);7373+ if (status == IRIS_GIO_NODEV) {7474+ printk(KERN_ERR "This machine does not seem to be an Iris. Power_off handler not installed.\n");7575+ return -ENODEV;7676+ }7777+ old_pm_power_off = pm_power_off;7878+ pm_power_off = &iris_power_off;7979+ printk(KERN_INFO "Iris power_off handler installed.\n");8080+8181+ return 0;8282+}8383+8484+static void iris_exit(void)8585+{8686+ pm_power_off = old_pm_power_off;8787+ printk(KERN_INFO "Iris power_off handler uninstalled.\n");8888+}8989+9090+module_init(iris_init);9191+module_exit(iris_exit);
···463463 This driver can also be built as a module. If so, the module464464 will be called rtc-cmos.465465466466+config RTC_DRV_VRTC467467+ tristate "Virtual RTC for Moorestown platforms"468468+ depends on X86_MRST469469+ default y if X86_MRST470470+471471+ help472472+ Say "yes" here to get direct support for the real time clock473473+ found on Moorestown platforms. The VRTC is a emulated RTC that474474+ derives its clock source from a real RTC in the PMIC. The MC146818475475+ style programming interface is mostly conserved, but any476476+ updates are done via IPC calls to the system controller FW.477477+466478config RTC_DRV_DS1216467479 tristate "Dallas DS1216"468480 depends on SNI_RM