Merge branch 'x86-mrst-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
Linus Torvalds [Fri, 6 Aug 2010 17:06:28 +0000 (10:06 -0700)]
* 'x86-mrst-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, mrst: make mrst_timer_options an enum
  x86, mrst: make mrst_identify_cpu() an inline returning enum
  x86, mrst: add more timer config options
  x86, mrst: add cpu type detection
  x86: detect scattered cpuid features earlier

1  2 
arch/x86/kernel/cpu/common.c
arch/x86/kernel/mrst.c

Simple merge
@@@ -205,23 -234,22 +234,28 @@@ void __init mrst_rtc_init(void
        sfi_table_parse(SFI_SIG_MRTC, NULL, NULL, sfi_parse_mrtc);
  }
  
- /*
-  * if we use per cpu apb timer, the bootclock already setup. if we use lapic
-  * timer and one apbt timer for broadcast, we need to set up lapic boot clock.
-  */
- static void __init mrst_setup_boot_clock(void)
+ void __cpuinit mrst_arch_setup(void)
  {
-       pr_info("%s: per cpu apbt flag %d \n", __func__, disable_apbt_percpu);
-       if (disable_apbt_percpu)
-               setup_boot_APIC_clock();
- };
+       if (boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 0x27)
+               __mrst_cpu_chip = MRST_CPU_CHIP_PENWELL;
+       else if (boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 0x26)
+               __mrst_cpu_chip = MRST_CPU_CHIP_LINCROFT;
+       else {
+               pr_err("Unknown Moorestown CPU (%d:%d), default to Lincroft\n",
+                       boot_cpu_data.x86, boot_cpu_data.x86_model);
+               __mrst_cpu_chip = MRST_CPU_CHIP_LINCROFT;
+       }
+       pr_debug("Moorestown CPU %s identified\n",
+               (__mrst_cpu_chip == MRST_CPU_CHIP_LINCROFT) ?
+               "Lincroft" : "Penwell");
+ }
  
 +/* MID systems don't have i8042 controller */
 +static int mrst_i8042_detect(void)
 +{
 +      return 0;
 +}
 +
  /*
   * Moorestown specific x86_init function overrides and early setup
   * calls.
@@@ -236,10 -264,11 +270,12 @@@ void __init x86_mrst_early_setup(void
  
        x86_init.irqs.pre_vector_init = x86_init_noop;
  
-       x86_cpuinit.setup_percpu_clockev = mrst_setup_secondary_clock;
+       x86_init.oem.arch_setup = mrst_arch_setup;
+       x86_cpuinit.setup_percpu_clockev = apbt_setup_secondary_clock;
  
        x86_platform.calibrate_tsc = mrst_calibrate_tsc;
 +      x86_platform.i8042_detect = mrst_i8042_detect;
        x86_init.pci.init = pci_mrst_init;
        x86_init.pci.fixup_irqs = x86_init_noop;