x86/platform changes for v3.3
Subsystems (4)
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
out-of-topic modifications in x86-platform-for-linus:
-----------------------------------------------------
drivers/platform/x86/Kconfig # c95aaef: x86/intel/scu/ipc: Match the chan drivers/rtc/Kconfig # 933b946: x86/intel config: Revamp configur init/calibrate.c # b565201: x86: Reduce clock calibration tim
Thanks,
Ingo
------------------>
Alan Cox (7):
x86/sfi: Kill the IRQ as id hack
x86/config: Revamp configuration for MID devices
x86: Fix INTEL_MID silly
x86/apb: Fix configuration constraints
x86/intel/scu/ipc: Match the changes in the x86 configuration x86/intel config: Revamp configuration to allow for Moorestown and Medfield x86/intel config: Fix the APB_TIMER selection
Alessandro Rubini (1):
x86/Kconfig: Cyclone-timer depends on x86-summit
Jack Steiner (1):
x86: Reduce clock calibration time during slave cpu startup
Michael Demeter (1):
x86/mrst: Add additional debug prints for pb_keys
arch/x86/Kconfig | 31 +++++++++++++++++++++++++++---- arch/x86/Kconfig.debug | 6 +++--- arch/x86/include/asm/fixmap.h | 2 +- arch/x86/include/asm/setup.h | 2 +- arch/x86/kernel/early_printk.c | 2 +- arch/x86/kernel/smpboot.c | 16 +++++++++++----- arch/x86/kernel/tsc.c | 20 ++++++++++++++++++++ arch/x86/pci/Makefile | 2 +- arch/x86/platform/mrst/Makefile | 6 +++--- arch/x86/platform/mrst/mrst.c | 4 ++-- drivers/platform/x86/Kconfig | 2 +- drivers/rtc/Kconfig | 6 +++--- init/calibrate.c | 15 +++++++++++++++ 13 files changed, 89 insertions(+), 25 deletions(-)
arch/x86/Kconfig +27 -4
@@ -409,12 +409,14 @@ config X86_MRST 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 - select X86_INTEL_MID ---help--- Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin Internet Device(MID) platform. Moorestown consists of two chips:
@@ -423,6 +425,26 @@ config X86_MRST 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 + 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--- + Medfield is Intel's Low Power Intel Architecture (LPIA) based Moblin + Internet Device(MID) platform. + Unlike standard x86 PCs, Medfield does not have many legacy devices + nor standard legacy replacement devices/features. e.g. Medfield does + not contain i8259, i8254, HPET, legacy BIOS, most of the io ports. + endif config X86_RDC321X
@@ -620,7 +642,7 @@ config X86_SUMMIT_NUMA config X86_CYCLONE_TIMER def_bool y - depends on X86_32_NON_STANDARD + depends on X86_SUMMIT source "arch/x86/Kconfig.cpu"
@@ -648,9 +670,10 @@ config HPET_EMULATE_RTC depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y) config APB_TIMER - def_bool y if MRST - prompt "Langwell APB Timer Support" if X86_MRST + def_bool y if X86_INTEL_MID + prompt "Intel MID APB Timer Support" if X86_INTEL_MID select DW_APB_TIMER + depends on X86_INTEL_MID && SFI help APB timer is the replacement for 8254, HPET on X86 MID platforms. The APBT provides a stable time base on SMP
arch/x86/Kconfig.debug +3 -3
@@ -43,9 +43,9 @@ config EARLY_PRINTK with klogd/syslogd or the X server. You should normally N here, unless you want to debug such a crash. -config EARLY_PRINTK_MRST - bool "Early printk for MRST platform support" - depends on EARLY_PRINTK && X86_MRST +config EARLY_PRINTK_INTEL_MID + bool "Early printk for Intel MID platform support" + depends on EARLY_PRINTK && X86_INTEL_MID config EARLY_PRINTK_DBGP bool "Early printk via EHCI debug port"
arch/x86/include/asm/fixmap.h +1 -1
@@ -117,7 +117,7 @@ enum fixed_addresses {#endif FIX_TEXT_POKE1, /* reserve 2 pages for text_poke() */ FIX_TEXT_POKE0, /* first page is last, because allocation is backward */ -#ifdef CONFIG_X86_MRST +#ifdef CONFIG_X86_INTEL_MID FIX_LNW_VRTC , #endif __end_of_permanent_fixed_addresses,
arch/x86/include/asm/setup.h +1 -1
@@ -47,7 +47,7 @@ extern void reserve_standard_io_resources(void);extern void i386_reserve_resources (void );extern void setup_default_timer_irq (void ); -#ifdef CONFIG_X86_MRST +#ifdef CONFIG_X86_INTEL_MID extern void x86_mrst_early_setup (void );#else static inline void x86_mrst_early_setup (void ) { }
arch/x86/kernel/early_printk.c +1 -1
@@ -240,7 +240,7 @@ static int __init setup_early_printk(char *buf)if (!strncmp (buf,"xen" ,3 ))early_console_register (&xenboot_console, keep);#endif -#ifdef CONFIG_EARLY_PRINTK_MRST +#ifdef CONFIG_EARLY_PRINTK_INTEL_MID if (!strncmp (buf,"mrst" ,4 )) {mrst_early_console_init ();early_console_register (&early_mrst_console, keep);
arch/x86/kernel/smpboot.c +11 -5
@@ -207,23 +207,29 @@ static void __cpuinit smp_callin(void)* Need to setup vector mappings before we enable interrupts. */ setup_vector_irq (smp_processor_id ()); + +/* +* Save our processor parameters. Note: this information +* is needed for clock calibration. +*/ +smp_store_cpu_info (cpuid); +/* * Get our bogomips. +* Update loops_per_jiffy in cpu_data. Previous call to +* smp_store_cpu_info() stored a value that is close but not as +* accurate as the value just calculated. * * Need to enable IRQs because it can take longer and then * the NMI watchdog might kill us. */ local_irq_enable ();calibrate_delay (); +cpu_data (cpuid).loops_per_jiffy = loops_per_jiffy;local_irq_disable ();pr_debug ("Stack at about %p\n" , &cpuid);/* -* Save our processor parameters -*/ -smp_store_cpu_info (cpuid); - -/* * This must be done before setting cpu_online_mask * or calling notify_cpu_starting. */
arch/x86/kernel/tsc.c +20 -0
@@ -995,3 +995,23 @@ void __init tsc_init(void)check_system_tsc_reliable (); } +#ifdef CONFIG_SMP +/* +* If we have a constant TSC and are using the TSC for the delay loop, +* we can skip clock calibration if another cpu in the same socket has already +* been calibrated. This assumes that CONSTANT_TSC applies to all +* cpus in the socket - this should be a safe assumption. +*/ +unsigned long __cpuinit calibrate_delay_is_known (void ) +{ +int i, cpu =smp_processor_id (); + +if (!tsc_disabled && !cpu_has (&cpu_data (cpu),X86_FEATURE_CONSTANT_TSC )) +return 0 ; + +for_each_online_cpu (i) +if (cpu_data (i).phys_proc_id ==cpu_data (cpu).phys_proc_id) +return cpu_data (i).loops_per_jiffy; +return 0 ; +} +#endif
arch/x86/pci/Makefile +1 -1
@@ -15,7 +15,7 @@ obj-$(CONFIG_X86_VISWS) += visws.o obj-$(CONFIG_X86_NUMAQ) += numaq_32.o -obj-$(CONFIG_X86_MRST) += mrst.o +obj-$(CONFIG_X86_INTEL_MID) += mrst.o obj-y += common.o early.o obj-y += amd_bus.o bus_numa.o
arch/x86/platform/mrst/Makefile +3 -3
@@ -1,4 +1,4 @@ -obj-$(CONFIG_X86_MRST) += mrst.o -obj-$(CONFIG_X86_MRST) += vrtc.o -obj-$(CONFIG_EARLY_PRINTK_MRST) += early_printk_mrst.o +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 +2 -2
@@ -848,8 +848,7 @@ static void __init sfi_handle_ipc_dev(struct sfi_device_table_entry *entry)if (mrst_has_msic ())return ; -/* ID as IRQ is a hack that will go away */ - pdev =platform_device_alloc (entry->name, entry->irq); + pdev =platform_device_alloc (entry->name,0 );if (pdev ==NULL ) {pr_err ("out of memory for SFI platform device '%s'.\n" , entry->name);
@@ -1030,6 +1029,7 @@ static int __init pb_keys_init(void) num =sizeof (gpio_button) /sizeof (struct gpio_keys_button );for (i =0 ; i < num; i++) { gb[i].gpio =get_gpio_by_name (gb[i].desc); +pr_debug ("info[%2d]: name = %s, gpio = %d\n" , i, gb[i].desc, gb[i].gpio);if (gb[i].gpio ==-1 )continue ;
drivers/platform/x86/Kconfig +1 -1
@@ -639,7 +639,7 @@ config ACPI_CMPC config INTEL_SCU_IPC bool "Intel SCU IPC Support" - depends on X86_MRST + depends on X86_INTEL_MID default y ---help--- IPC is used to bridge the communications between kernel and SCU on
drivers/rtc/Kconfig +3 -3
@@ -498,9 +498,9 @@ config RTC_DRV_CMOS will be called rtc-cmos. config RTC_DRV_VRTC - tristate "Virtual RTC for Moorestown platforms" - depends on X86_MRST - default y if X86_MRST + tristate "Virtual RTC for Intel MID platforms" + depends on X86_INTEL_MID + default y if X86_INTEL_MID help Say "yes" here to get direct support for the real time clock
init/calibrate.c +15 -0
@@ -246,6 +246,19 @@ recalibrate: static DEFINE_PER_CPU(unsigned long, cpu_loops_per_jiffy) = { 0 }; +/* +* Check if cpu calibration delay is already known. For example, +* some processors with multi-core sockets may have all cores +* with the same calibration delay. +* +* Architectures should override this function if a faster calibration +* method is available. +*/ +unsigned long __attribute__((weak))__cpuinit calibrate_delay_is_known (void ) +{ +return 0 ; +} +void __cpuinit calibrate_delay (void ) {unsigned long lpj;
@@ -265,6 +278,8 @@ void __cpuinit calibrate_delay(void) lpj = lpj_fine;pr_info ("Calibrating delay loop (skipped), " "value calculated using timer frequency.. " ); + }else if ((lpj =calibrate_delay_is_known ())) { + ; }else if ((lpj =calibrate_delay_direct ()) !=0 ) {if (!printed) pr_info("Calibrating delay using timer "
Quoted 4 lines · Ingo Molnar
Please pull the latest x86-platform-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitx86-platform-for-linus
Ingo, there's something *seriously* wrong with your pull requests. This is now the third totally buggered pull request I encounter.
This one is also just some stale crap from six months ago with TS-5500 GPIO support etc.
Please. Go back and double-check every single pull request you wrote for me that I haven't merged yet. In fact, just in case, check the ones I merged too, just to make sure that I merged what you really intended me to merge, and not some stale crap. Because you clearly haven't checked what's actually on the tree on kernel.org.
And while at it, I'd suggest you make your pull request script actually verify the tree you are asking me to pull, so that this doesn't continue to happen.
Linus
Quoted 9 lines · Linus Torvalds
Quoted 4 lines · Ingo Molnar
Please pull the latest x86-platform-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitx86-platform-for-linusIngo, there's something *seriously* wrong with your pull requests. This is now the third totally buggered pull request I encounter.
Sigh, sorry about that. Same problem as with x86/mm, the stale x86-platform-for-linus branch did not get reset after a forced rebase, which was not caught by automated nor by my manual checks.
Quoted 9 lines
This one is also just some stale crap from six months ago with TS-5500 GPIO support etc.
Please. Go back and double-check every single pull request you wrote for me that I haven't merged yet. In fact, just in case, check the ones I merged too, just to make sure that I merged what you really intended me to merge, and not some stale crap. Because you clearly haven't checked what's actually on the tree on kernel.org.
Should have thought of that myself. I've double checked all the sha1's:
core-debugobjects-for-linus : dc4218bd0fe499fce2896f88101ea42dac1f60fc core-locking-for-linus : f07fdec50a13f134ea9608c8fb3f6408c58ef55e core-memblock-for-linus : 45aa0663cc408617b79a2b53f0a5f50e94688a48 core-printk-for-linus : 1a9a8aefa8f0530c97f4606ab7a2fc01fe31e9c1 core-rcu-for-linus : 919b83452b2e7c1dbced0456015508b4b9585db3 perf-core-for-linus : 9e183426bfb52bb44bf3c443d6587e4d02478603 sched-core-for-linus : 1ac9bc6943edf7d181b4b1cc734981350d4f6bae timers-core-for-linus : 0518469d0a32be1e6dd8850ff274d52d72cdb52d x86-apic-for-linus : c284b42abadbb22083bfde24d308899c08d44ffa x86-asm-for-linus : ceb7b40b65539a771d1bfaf47660ac0ee57e0c4f x86-cleanups-for-linus : 1affc46cffad9f2bc7c9ffec85726446903a58f9 x86-cpu-for-linus : cb3f718de8301a969f8169d7d4160e73baff0b86 x86-efi-for-linus : 2d2da60fb40a80cc59383121ccf763e0e0e8a42a x86-mce-for-linus : a228b5892b0527b8574c06edc72cacaf8c25418d x86-microcode-for-linus : 304fb45374918b166233855bcf498b02586afd80 x86-platform-for-linus : 7c9c3a1e5fc8728e948b8fa3cbcfcfb86db3afda [unmerged] x86-rdrand-for-linus : cf833d0b9937874b50ef2867c4e8badfd64948ce x86-mm-for-linus : 54eed6cb16ec315565aaaf8e34252ca253a68b7b [unmerged] x86-debug-for-linus : e58d429209105e698e9d0357481d62b37fe9a7dd [unmerged]
all already merged ones were fine, and there are no broken ones beyond x86-mm-for-linus and x86-platform-for-linus (both fixed meanwhile).
Quoted 3 lines
And while at it, I'd suggest you make your pull request script actually verify the tree you are asking me to pull, so that this doesn't continue to happen.
Yes, i've already fixed the script after the x86-mm-for-linus incident - but sadly and stupidly did not think of checking the remaining pending trees ...
Beyond the scripted check i also added another manual verification step as a precaution, to hopefully prevent future mishaps. (I did this extra checking step for all three pending trees, and they seem to be fine.)
Sorry again, and below is the refreshed pull request.
I guess the fears about 2012 were right after all.
Ingo
----------------------->
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: 7c9c3a1e5fc8728e948b8fa3cbcfcfb86db3afda x86/intel config: Fix the APB_TIMER selection
out-of-topic modifications in x86-platform-for-linus:
-----------------------------------------------------
drivers/platform/x86/Kconfig # c95aaef: x86/intel/scu/ipc: Match the chan drivers/rtc/Kconfig # 933b946: x86/intel config: Revamp configur init/calibrate.c # b565201: x86: Reduce clock calibration tim
Thanks,
Ingo
------------------>
Alan Cox (7):
x86/sfi: Kill the IRQ as id hack
x86/config: Revamp configuration for MID devices
x86: Fix INTEL_MID silly
x86/apb: Fix configuration constraints
x86/intel/scu/ipc: Match the changes in the x86 configuration x86/intel config: Revamp configuration to allow for Moorestown and Medfield x86/intel config: Fix the APB_TIMER selection
Alessandro Rubini (1):
x86/Kconfig: Cyclone-timer depends on x86-summit
Jack Steiner (1):
x86: Reduce clock calibration time during slave cpu startup
Michael Demeter (1):
x86/mrst: Add additional debug prints for pb_keys
arch/x86/Kconfig | 31 +++++++++++++++++++++++++++---- arch/x86/Kconfig.debug | 6 +++--- arch/x86/include/asm/fixmap.h | 2 +- arch/x86/include/asm/setup.h | 2 +- arch/x86/kernel/early_printk.c | 2 +- arch/x86/kernel/smpboot.c | 16 +++++++++++----- arch/x86/kernel/tsc.c | 20 ++++++++++++++++++++ arch/x86/pci/Makefile | 2 +- arch/x86/platform/mrst/Makefile | 6 +++--- arch/x86/platform/mrst/mrst.c | 4 ++-- drivers/platform/x86/Kconfig | 2 +- drivers/rtc/Kconfig | 6 +++--- init/calibrate.c | 15 +++++++++++++++ 13 files changed, 89 insertions(+), 25 deletions(-)
arch/x86/Kconfig +27 -4
@@ -409,12 +409,14 @@ config X86_MRST 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 - select X86_INTEL_MID ---help--- Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin Internet Device(MID) platform. Moorestown consists of two chips:
@@ -423,6 +425,26 @@ config X86_MRST 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 + 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--- + Medfield is Intel's Low Power Intel Architecture (LPIA) based Moblin + Internet Device(MID) platform. + Unlike standard x86 PCs, Medfield does not have many legacy devices + nor standard legacy replacement devices/features. e.g. Medfield does + not contain i8259, i8254, HPET, legacy BIOS, most of the io ports. + endif config X86_RDC321X
@@ -620,7 +642,7 @@ config X86_SUMMIT_NUMA config X86_CYCLONE_TIMER def_bool y - depends on X86_32_NON_STANDARD + depends on X86_SUMMIT source "arch/x86/Kconfig.cpu"
@@ -648,9 +670,10 @@ config HPET_EMULATE_RTC depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y) config APB_TIMER - def_bool y if MRST - prompt "Langwell APB Timer Support" if X86_MRST + def_bool y if X86_INTEL_MID + prompt "Intel MID APB Timer Support" if X86_INTEL_MID select DW_APB_TIMER + depends on X86_INTEL_MID && SFI help APB timer is the replacement for 8254, HPET on X86 MID platforms. The APBT provides a stable time base on SMP
arch/x86/Kconfig.debug +3 -3
@@ -43,9 +43,9 @@ config EARLY_PRINTK with klogd/syslogd or the X server. You should normally N here, unless you want to debug such a crash. -config EARLY_PRINTK_MRST - bool "Early printk for MRST platform support" - depends on EARLY_PRINTK && X86_MRST +config EARLY_PRINTK_INTEL_MID + bool "Early printk for Intel MID platform support" + depends on EARLY_PRINTK && X86_INTEL_MID config EARLY_PRINTK_DBGP bool "Early printk via EHCI debug port"
arch/x86/include/asm/fixmap.h +1 -1
@@ -117,7 +117,7 @@ enum fixed_addresses {#endif FIX_TEXT_POKE1, /* reserve 2 pages for text_poke() */ FIX_TEXT_POKE0, /* first page is last, because allocation is backward */ -#ifdef CONFIG_X86_MRST +#ifdef CONFIG_X86_INTEL_MID FIX_LNW_VRTC , #endif __end_of_permanent_fixed_addresses,
arch/x86/include/asm/setup.h +1 -1
@@ -47,7 +47,7 @@ extern void reserve_standard_io_resources(void);extern void i386_reserve_resources (void );extern void setup_default_timer_irq (void ); -#ifdef CONFIG_X86_MRST +#ifdef CONFIG_X86_INTEL_MID extern void x86_mrst_early_setup (void );#else static inline void x86_mrst_early_setup (void ) { }
arch/x86/kernel/early_printk.c +1 -1
@@ -240,7 +240,7 @@ static int __init setup_early_printk(char *buf)if (!strncmp (buf,"xen" ,3 ))early_console_register (&xenboot_console, keep);#endif -#ifdef CONFIG_EARLY_PRINTK_MRST +#ifdef CONFIG_EARLY_PRINTK_INTEL_MID if (!strncmp (buf,"mrst" ,4 )) {mrst_early_console_init ();early_console_register (&early_mrst_console, keep);
arch/x86/kernel/smpboot.c +11 -5
@@ -207,23 +207,29 @@ static void __cpuinit smp_callin(void)* Need to setup vector mappings before we enable interrupts. */ setup_vector_irq (smp_processor_id ()); + +/* +* Save our processor parameters. Note: this information +* is needed for clock calibration. +*/ +smp_store_cpu_info (cpuid); +/* * Get our bogomips. +* Update loops_per_jiffy in cpu_data. Previous call to +* smp_store_cpu_info() stored a value that is close but not as +* accurate as the value just calculated. * * Need to enable IRQs because it can take longer and then * the NMI watchdog might kill us. */ local_irq_enable ();calibrate_delay (); +cpu_data (cpuid).loops_per_jiffy = loops_per_jiffy;local_irq_disable ();pr_debug ("Stack at about %p\n" , &cpuid);/* -* Save our processor parameters -*/ -smp_store_cpu_info (cpuid); - -/* * This must be done before setting cpu_online_mask * or calling notify_cpu_starting. */
arch/x86/kernel/tsc.c +20 -0
@@ -995,3 +995,23 @@ void __init tsc_init(void)check_system_tsc_reliable (); } +#ifdef CONFIG_SMP +/* +* If we have a constant TSC and are using the TSC for the delay loop, +* we can skip clock calibration if another cpu in the same socket has already +* been calibrated. This assumes that CONSTANT_TSC applies to all +* cpus in the socket - this should be a safe assumption. +*/ +unsigned long __cpuinit calibrate_delay_is_known (void ) +{ +int i, cpu =smp_processor_id (); + +if (!tsc_disabled && !cpu_has (&cpu_data (cpu),X86_FEATURE_CONSTANT_TSC )) +return 0 ; + +for_each_online_cpu (i) +if (cpu_data (i).phys_proc_id ==cpu_data (cpu).phys_proc_id) +return cpu_data (i).loops_per_jiffy; +return 0 ; +} +#endif
arch/x86/pci/Makefile +1 -1
@@ -15,7 +15,7 @@ obj-$(CONFIG_X86_VISWS) += visws.o obj-$(CONFIG_X86_NUMAQ) += numaq_32.o -obj-$(CONFIG_X86_MRST) += mrst.o +obj-$(CONFIG_X86_INTEL_MID) += mrst.o obj-y += common.o early.o obj-y += amd_bus.o bus_numa.o
arch/x86/platform/mrst/Makefile +3 -3
@@ -1,4 +1,4 @@ -obj-$(CONFIG_X86_MRST) += mrst.o -obj-$(CONFIG_X86_MRST) += vrtc.o -obj-$(CONFIG_EARLY_PRINTK_MRST) += early_printk_mrst.o +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 +2 -2
@@ -848,8 +848,7 @@ static void __init sfi_handle_ipc_dev(struct sfi_device_table_entry *entry)if (mrst_has_msic ())return ; -/* ID as IRQ is a hack that will go away */ - pdev =platform_device_alloc (entry->name, entry->irq); + pdev =platform_device_alloc (entry->name,0 );if (pdev ==NULL ) {pr_err ("out of memory for SFI platform device '%s'.\n" , entry->name);
@@ -1030,6 +1029,7 @@ static int __init pb_keys_init(void) num =sizeof (gpio_button) /sizeof (struct gpio_keys_button );for (i =0 ; i < num; i++) { gb[i].gpio =get_gpio_by_name (gb[i].desc); +pr_debug ("info[%2d]: name = %s, gpio = %d\n" , i, gb[i].desc, gb[i].gpio);if (gb[i].gpio ==-1 )continue ;
drivers/platform/x86/Kconfig +1 -1
@@ -639,7 +639,7 @@ config ACPI_CMPC config INTEL_SCU_IPC bool "Intel SCU IPC Support" - depends on X86_MRST + depends on X86_INTEL_MID default y ---help--- IPC is used to bridge the communications between kernel and SCU on
drivers/rtc/Kconfig +3 -3
@@ -498,9 +498,9 @@ config RTC_DRV_CMOS will be called rtc-cmos. config RTC_DRV_VRTC - tristate "Virtual RTC for Moorestown platforms" - depends on X86_MRST - default y if X86_MRST + tristate "Virtual RTC for Intel MID platforms" + depends on X86_INTEL_MID + default y if X86_INTEL_MID help Say "yes" here to get direct support for the real time clock
init/calibrate.c +15 -0
@@ -246,6 +246,19 @@ recalibrate: static DEFINE_PER_CPU(unsigned long, cpu_loops_per_jiffy) = { 0 }; +/* +* Check if cpu calibration delay is already known. For example, +* some processors with multi-core sockets may have all cores +* with the same calibration delay. +* +* Architectures should override this function if a faster calibration +* method is available. +*/ +unsigned long __attribute__((weak))__cpuinit calibrate_delay_is_known (void ) +{ +return 0 ; +} +void __cpuinit calibrate_delay (void ) {unsigned long lpj;
@@ -265,6 +278,8 @@ void __cpuinit calibrate_delay(void) lpj = lpj_fine;pr_info ("Calibrating delay loop (skipped), " "value calculated using timer frequency.. " ); + }else if ((lpj =calibrate_delay_is_known ())) { + ; }else if ((lpj =calibrate_delay_direct ()) !=0 ) {if (!printed) pr_info("Calibrating delay using timer "