x86/platform changes for v3.4
Subsystems (7)
Linus,
Please pull the latest x86-platform-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-platform-for-linus
HEAD: fa63030e9c79e37b4d4e63b39ffb09cfb7aa0fe4 x86/platform: Move APIC ID validity check into platform APIC code
out-of-topic modifications in x86-platform-for-linus:
-----------------------------------------------------
drivers/leds/Kconfig # da4e330: x86/geode/net5501: Add platform d
drivers/leds/Makefile # da4e330: x86/geode/net5501: Add platform d
drivers/leds/leds-net5501.c # da4e330: x86/geode/net5501: Add platform d
drivers/platform/x86/Kconfig # 0f48d34: x86/mid/thermal: Convert to use I
# 33e9970: x86/mid: Kill off Moorestown
drivers/platform/x86/Makefile # 33e9970: x86/mid: Kill off Moorestown
drivers/platform/x86/intel_mid_powerbtn.c# 8bee7ce: x86/mid/powerbtn: Use MSIC read/w
drivers/platform/x86/intel_mid_thermal.c# 1b7ccab: x86/mid/thermal: Turn off thermis
# 6348307: x86/mid/thermal: Add msic_thermal
# 0f48d34: x86/mid/thermal: Convert to use Idrivers/platform/x86/intel_rar_register.c# 33e9970: x86/mid: Kill off Moorestown drivers/platform/x86/intel_scu_ipc.c# 4707375: x86/mid/scu_ipc: Remove Moorestow drivers/platform/x86/intel_scu_ipcutil.c# 4707375: x86/mid/scu_ipc: Remove Moorestowinclude/linux/rar_register.h # 33e9970: x86/mid: Kill off Moorestown
Thanks,
Ingo
------------------>
Alan Cox (3):
x86/mid: Remove Intel Moorestown
x86/mid: Kill off Moorestown
x86/mid/scu_ipc: Remove Moorestown support
Daniel Drake (1):
x86/olpc/xo15/sci: Enable lid close wakeup control
Daniel J Blueman (1):
x86/platform: Move APIC ID validity check into platform APIC code
Jacob Pan (2):
x86/ioapic: Use legacy_pic to set correct gsi-irq mapping x86/mrst: Set ISA bus type for fake MP IRQs
Michael Demeter (1):
x86/mid/powerbtn: Use MSIC read/write instead of ipc_scu
Mika Westerberg (5):
x86/config: Select MSIC MFD driver on Intel Medfield platform x86/mrst: Add msic_thermal platform support x86/mid/thermal: Convert to use Intel MSIC API x86/mid/thermal: Add msic_thermal alias x86/mid/thermal: Turn off thermistor
Philip Prindeville (2):
x86/geode/alix2: Supplement driver to include GPIO button support x86/geode/net5501: Add platform driver for Soekris Engineering net5501
arch/x86/Kconfig | 28 +- arch/x86/include/asm/apic.h | 6 + arch/x86/include/asm/mrst.h | 4 +- arch/x86/kernel/apic/apic_flat_64.c | 2 + arch/x86/kernel/apic/apic_noop.c | 1 + arch/x86/kernel/apic/apic_numachip.c | 10 +- arch/x86/kernel/apic/bigsmp_32.c | 1 + arch/x86/kernel/apic/es7000_32.c | 2 + arch/x86/kernel/apic/numaq_32.c | 1 + arch/x86/kernel/apic/probe_32.c | 1 + arch/x86/kernel/apic/summit_32.c | 1 + arch/x86/kernel/apic/x2apic_cluster.c | 1 + arch/x86/kernel/apic/x2apic_phys.c | 1 + arch/x86/kernel/apic/x2apic_uv_x.c | 1 + arch/x86/kernel/smpboot.c | 2 +- arch/x86/platform/geode/Makefile | 1 + arch/x86/platform/geode/alix.c | 76 +++- arch/x86/platform/geode/net5501.c | 154 ++++++ arch/x86/platform/mrst/Makefile | 1 - arch/x86/platform/mrst/mrst.c | 70 +-- arch/x86/platform/mrst/pmu.c | 817 ----------------------------- arch/x86/platform/mrst/pmu.h | 234 -------- arch/x86/platform/olpc/olpc-xo15-sci.c | 72 +++- drivers/leds/Kconfig | 10 - drivers/leds/Makefile | 1 - drivers/leds/leds-net5501.c | 97 ---- drivers/platform/x86/Kconfig | 24 +- drivers/platform/x86/Makefile | 1 - drivers/platform/x86/intel_mid_powerbtn.c | 32 +- drivers/platform/x86/intel_mid_thermal.c | 47 +- drivers/platform/x86/intel_rar_register.c | 669 ----------------------- drivers/platform/x86/intel_scu_ipc.c | 208 +------- drivers/platform/x86/intel_scu_ipcutil.c | 32 +- include/linux/rar_register.h | 60 --- 34 files changed, 442 insertions(+), 2226 deletions(-) create mode 100644 arch/x86/platform/geode/net5501.c delete mode 100644 arch/x86/platform/mrst/pmu.c delete mode 100644 arch/x86/platform/mrst/pmu.h delete mode 100644 drivers/leds/leds-net5501.c delete mode 100644 drivers/platform/x86/intel_rar_register.c delete mode 100644 include/linux/rar_register.h
arch/x86/Kconfig +7 -21
@@ -417,27 +417,6 @@ if X86_WANT_INTEL_MID config X86_INTEL_MID bool -config X86_MRST - bool "Moorestown MID platform" - depends on PCI - depends on PCI_GOANY - depends on X86_IO_APIC - select X86_INTEL_MID - select SFI - select DW_APB_TIMER - select APB_TIMER - select I2C - select SPI - select INTEL_SCU_IPC - select X86_PLATFORM_DEVICES - ---help--- - Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin - Internet Device(MID) platform. Moorestown consists of two chips: - Lincroft (CPU core, graphics, and memory controller) and Langwell IOH. - Unlike standard x86 PCs, Moorestown does not have many legacy devices - nor standard legacy replacement devices/features. e.g. Moorestown does - not contain i8259, i8254, HPET, legacy BIOS, most of the io ports. - config X86_MDFLD bool "Medfield MID platform" depends on PCI
@@ -451,6 +430,7 @@ config X86_MDFLD select SPI select INTEL_SCU_IPC select X86_PLATFORM_DEVICES + select MFD_INTEL_MSIC ---help--- Medfield is Intel's Low Power Intel Architecture (LPIA) based Moblin Internet Device(MID) platform.
@@ -2133,6 +2113,12 @@ config ALIX Note: You have to set alix.force=1 for boards with Award BIOS. +config NET5501 + bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)" + select GPIOLIB + ---help--- + This option enables system support for the Soekris Engineering net5501. + endif # X86_32 config AMD_NB
arch/x86/include/asm/apic.h +6 -0
@@ -288,6 +288,7 @@ struct apic {int (*probe)(void );int (*acpi_madt_oem_check)(char *oem_id,char *oem_table_id); +int (*apic_id_valid)(int apicid);int (*apic_id_registered)(void );u32 irq_delivery_mode;
@@ -532,6 +533,11 @@ static inline unsigned int read_apic_id(void)return apic->get_apic_id (reg); } +static inline int default_apic_id_valid (int apicid) +{ +return x2apic_mode || (apicid <255 ); +} +extern void default_setup_apic_routing (void );extern struct apic apic_noop;
arch/x86/include/asm/mrst.h +2 -2
@@ -26,8 +26,8 @@ extern struct sfi_rtc_table_entry sfi_mrtc_array[];* identified via MSRs. */ enum mrst_cpu_type { -MRST_CPU_CHIP_LINCROFT =1 , -MRST_CPU_CHIP_PENWELL , +/* 1 was Moorestown */ +MRST_CPU_CHIP_PENWELL =2 , };extern enum mrst_cpu_type __mrst_cpu_chip;
arch/x86/kernel/apic/apic_flat_64.c +2 -0
@@ -180,6 +180,7 @@ static struct apic apic_flat = { .name = "flat", .probe = flat_probe, .acpi_madt_oem_check = flat_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = flat_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
@@ -337,6 +338,7 @@ static struct apic apic_physflat = { .name = "physical flat", .probe = physflat_probe, .acpi_madt_oem_check = physflat_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = flat_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/apic/apic_noop.c +1 -0
@@ -124,6 +124,7 @@ struct apic apic_noop = { .probe = noop_probe, .acpi_madt_oem_check = NULL, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = noop_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
arch/x86/kernel/apic/apic_numachip.c +9 -1
@@ -56,6 +56,12 @@ static unsigned int read_xapic_id(void)return get_apic_id (apic_read (APIC_ID )); } +static int numachip_apic_id_valid (int apicid) +{ +/* Trust what bootloader passes in MADT */ +return 1 ; +} +static int numachip_apic_id_registered (void ) {return physid_isset (read_xapic_id (), phys_cpu_present_map);
@@ -223,10 +229,11 @@ static int __init numachip_system_init(void) }early_initcall (numachip_system_init); -static int numachip_acpi_madt_oem_check (char *oem_id,char *oem_table_id) +static int __cpuinit numachip_acpi_madt_oem_check (char *oem_id,char *oem_table_id) {if (!strncmp (oem_id,"NUMASC" ,6 )) { numachip_system =1 ; +setup_force_cpu_cap (X86_FEATURE_X2APIC );return 1 ; }
@@ -238,6 +245,7 @@ static struct apic apic_numachip __refconst = { .name = "NumaConnect system", .probe = numachip_probe, .acpi_madt_oem_check = numachip_acpi_madt_oem_check, + .apic_id_valid = numachip_apic_id_valid, .apic_id_registered = numachip_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/apic/bigsmp_32.c +1 -0
@@ -198,6 +198,7 @@ static struct apic apic_bigsmp = { .name = "bigsmp", .probe = probe_bigsmp, .acpi_madt_oem_check = NULL, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = bigsmp_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/apic/es7000_32.c +2 -0
@@ -625,6 +625,7 @@ static struct apic __refdata apic_es7000_cluster = { .name = "es7000", .probe = probe_es7000, .acpi_madt_oem_check = es7000_acpi_madt_oem_check_cluster, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = es7000_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
@@ -690,6 +691,7 @@ static struct apic __refdata apic_es7000 = { .name = "es7000", .probe = probe_es7000, .acpi_madt_oem_check = es7000_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = es7000_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/apic/numaq_32.c +1 -0
@@ -478,6 +478,7 @@ static struct apic __refdata apic_numaq = { .name = "NUMAQ", .probe = probe_numaq, .acpi_madt_oem_check = NULL, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = numaq_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
arch/x86/kernel/apic/probe_32.c +1 -0
@@ -92,6 +92,7 @@ static struct apic apic_default = { .name = "default", .probe = probe_default, .acpi_madt_oem_check = NULL, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = default_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
arch/x86/kernel/apic/summit_32.c +1 -0
@@ -496,6 +496,7 @@ static struct apic apic_summit = { .name = "summit", .probe = probe_summit, .acpi_madt_oem_check = summit_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = summit_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
arch/x86/kernel/apic/x2apic_cluster.c +1 -0
@@ -213,6 +213,7 @@ static struct apic apic_x2apic_cluster = { .name = "cluster x2apic", .probe = x2apic_cluster_probe, .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = x2apic_apic_id_registered, .irq_delivery_mode = dest_LowestPrio,
arch/x86/kernel/apic/x2apic_phys.c +1 -0
@@ -119,6 +119,7 @@ static struct apic apic_x2apic_phys = { .name = "physical x2apic", .probe = x2apic_phys_probe, .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = x2apic_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/apic/x2apic_uv_x.c +1 -0
@@ -351,6 +351,7 @@ static struct apic __refdata apic_x2apic_uv_x = { .name = "UV large system", .probe = uv_probe, .acpi_madt_oem_check = uv_acpi_madt_oem_check, + .apic_id_valid = default_apic_id_valid, .apic_id_registered = uv_apic_id_registered, .irq_delivery_mode = dest_Fixed,
arch/x86/kernel/smpboot.c +1 -1
@@ -847,7 +847,7 @@ int __cpuinit native_cpu_up(unsigned int cpu)if (apicid ==BAD_APICID || apicid == boot_cpu_physical_apicid || !physid_isset (apicid, phys_cpu_present_map) || - (!x2apic_mode && apicid >=255 )) { + !apic->apic_id_valid (apicid)) {printk (KERN_ERR "%s: bad cpu %d\n" , __func__, cpu);return -EINVAL ; }
arch/x86/platform/geode/Makefile +1 -0
@@ -1 +1,2 @@ obj-$(CONFIG_ALIX) += alix.o +obj-$(CONFIG_NET5501) += net5501.o
arch/x86/platform/geode/alix.c +67 -9
134 lines not on this page · raw message
arch/x86/platform/geode/net5501.c new file +154 -0
154 lines not on this page · raw message
arch/x86/platform/mrst/Makefile +0 -1
@@ -1,4 +1,3 @@ obj-$(CONFIG_X86_INTEL_MID) += mrst.o obj-$(CONFIG_X86_INTEL_MID) += vrtc.o obj-$(CONFIG_EARLY_PRINTK_INTEL_MID) += early_printk_mrst.o -obj-$(CONFIG_X86_MRST) += pmu.o
arch/x86/platform/mrst/mrst.c +30 -40
108 lines not on this page · raw message
arch/x86/platform/mrst/pmu.c deleted +0 -817
817 lines not on this page · raw message
arch/x86/platform/mrst/pmu.h deleted +0 -234
234 lines not on this page · raw message
arch/x86/platform/olpc/olpc-xo15-sci.c +71 -1
102 lines not on this page · raw message
drivers/leds/Kconfig +0 -10
@@ -89,16 +89,6 @@ config LEDS_NET48XX This option enables support for the Soekris net4801 and net4826 error LED. -config LEDS_NET5501 - tristate "LED Support for Soekris net5501 series Error LED" - depends on LEDS_TRIGGERS - depends on X86 && GPIO_CS5535 - select LEDS_TRIGGER_DEFAULT_ON - default n - help - Add support for the Soekris net5501 board (detection, error led - and GPIO). - config LEDS_FSG tristate "LED Support for the Freecom FSG-3" depends on LEDS_CLASS
drivers/leds/Makefile +0 -1
@@ -14,7 +14,6 @@ obj-$(CONFIG_LEDS_MIKROTIK_RB532) += leds-rb532.o obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o -obj-$(CONFIG_LEDS_NET5501) += leds-net5501.o obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
drivers/leds/leds-net5501.c deleted +0 -97
97 lines not on this page · raw message
drivers/platform/x86/Kconfig +1 -23
@@ -672,33 +672,11 @@ config INTEL_MID_POWER_BUTTON config INTEL_MFLD_THERMAL tristate "Thermal driver for Intel Medfield platform" - depends on INTEL_SCU_IPC && THERMAL + depends on MFD_INTEL_MSIC && THERMAL help Say Y here to enable thermal driver support for the Intel Medfield platform. -config RAR_REGISTER - bool "Restricted Access Region Register Driver" - depends on PCI && X86_MRST - default n - ---help--- - This driver allows other kernel drivers access to the - contents of the restricted access region control registers. - - The restricted access region control registers - (rar_registers) are used to pass address and - locking information on restricted access regions - to other drivers that use restricted access regions. - - The restricted access regions are regions of memory - on the Intel MID Platform that are not accessible to - the x86 processor, but are accessible to dedicated - processors on board peripheral devices. - - The purpose of the restricted access regions is to - protect sensitive data from compromise by unauthorized - programs running on the x86 processor. - config INTEL_IPS tristate "Intel Intelligent Power Sharing" depends on ACPI
drivers/platform/x86/Makefile +0 -1
@@ -34,7 +34,6 @@ obj-$(CONFIG_TOSHIBA_BT_RFKILL) += toshiba_bluetooth.o obj-$(CONFIG_INTEL_SCU_IPC) += intel_scu_ipc.o obj-$(CONFIG_INTEL_SCU_IPC_UTIL) += intel_scu_ipcutil.o obj-$(CONFIG_INTEL_MFLD_THERMAL) += intel_mid_thermal.o -obj-$(CONFIG_RAR_REGISTER) += intel_rar_register.o obj-$(CONFIG_INTEL_IPS) += intel_ips.o obj-$(CONFIG_GPIO_INTEL_PMIC) += intel_pmic_gpio.o obj-$(CONFIG_XO1_RFKILL) += xo1-rfkill.o
drivers/platform/x86/intel_mid_powerbtn.c +28 -4
@@ -23,21 +23,27 @@#include <linux/slab.h> #include <linux/platform_device.h> #include <linux/input.h> - -#include <asm/intel_scu_ipc.h> +#include <linux/mfd/intel_msic.h> #define DRIVER_NAME "msic_power_btn" -#define MSIC_PB_STATUS 0x3f#define MSIC_PB_LEVEL (1 << 3)/* 1 - release, 0 - press */ +/* +* MSIC document ti_datasheet defines the 1st bit reg 0x21 is used to mask +* power button interrupt +*/ +#define MSIC_PWRBTNM (1 << 0) +static irqreturn_t mfld_pb_isr (int irq,void *dev_id) {struct input_dev *input = dev_id;int ret;u8 pbstat; - ret =intel_scu_ipc_ioread8 (MSIC_PB_STATUS , &pbstat); + ret =intel_msic_reg_read (INTEL_MSIC_PBSTATUS , &pbstat); +dev_dbg (input->dev.parent,"PB_INT status= %d\n" , pbstat); +if (ret <0 ) {dev_err (input->dev.parent,"Read error %d while reading" " MSIC_PB_STATUS\n" , ret);
@@ -88,6 +94,24 @@ static int __devinit mfld_pb_probe(struct platform_device *pdev) }platform_set_drvdata (pdev, input); + +/* +* SCU firmware might send power button interrupts to IA core before +* kernel boots and doesn't get EOI from IA core. The first bit of +* MSIC reg 0x21 is kept masked, and SCU firmware doesn't send new +* power interrupt to Android kernel. Unmask the bit when probing +* power button in kernel. +* There is a very narrow race between irq handler and power button +* initialization. The race happens rarely. So we needn't worry +* about it. +*/ + error =intel_msic_reg_update (INTEL_MSIC_IRQLVL1MSK ,0 ,MSIC_PWRBTNM ); +if (error) { +dev_err (&pdev->dev,"Unable to clear power button interrupt, " +"error: %d\n" , error); + goto err_free_irq; + } +return 0 ; err_free_irq:
drivers/platform/x86/intel_mid_thermal.c +23 -24
152 lines not on this page · raw message
drivers/platform/x86/intel_rar_register.c deleted +0 -669
669 lines not on this page · raw message
drivers/platform/x86/intel_scu_ipc.c +22 -186
211 lines not on this page · raw message
drivers/platform/x86/intel_scu_ipcutil.c +8 -24
Lines of this file are not shown. View the raw message.
include/linux/rar_register.h deleted +0 -60
60 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.