Enable HPET later during boot, after the force detect in PCI quirks. Signed-off-by: Venkatesh Pallipadi <[EMAIL PROTECTED]>
Index: linux-2.6.21-rc-mm-hpet/include/asm-i386/hpet.h =================================================================== --- linux-2.6.21-rc-mm-hpet.orig/include/asm-i386/hpet.h 2007-04-17 14:09:06.000000000 -0700 +++ linux-2.6.21-rc-mm-hpet/include/asm-i386/hpet.h 2007-04-18 10:03:47.000000000 -0700 @@ -91,6 +91,7 @@ #define HPET_TICK_RATE (HZ * 100000UL) extern unsigned long hpet_address; /* hpet memory map physical address */ +extern unsigned long force_hpet_address;/* hpet address as detected by quirks */ extern int is_hpet_enabled(void); #ifdef CONFIG_X86_64 Index: linux-2.6.21-rc-mm-hpet/arch/i386/kernel/hpet.c =================================================================== --- linux-2.6.21-rc-mm-hpet.orig/arch/i386/kernel/hpet.c 2007-04-17 15:51:34.000000000 -0700 +++ linux-2.6.21-rc-mm-hpet/arch/i386/kernel/hpet.c 2007-04-18 10:00:20.000000000 -0700 @@ -125,6 +125,7 @@ .set_next_event = hpet_legacy_next_event, .shift = 32, .irq = 0, + .rating = 50, }; static void hpet_start_counter(void) @@ -285,6 +286,9 @@ { unsigned long id; + if (hpet_virt_address) + return 0; + if (!is_hpet_capable()) return 0; @@ -329,6 +333,26 @@ } +static int __init hpet_late_init(void) +{ + if (boot_hpet_disable) + return -ENODEV; + + if (!hpet_address) { + if (!force_hpet_address) + return -ENODEV; + + hpet_address = force_hpet_address; + hpet_enable(); + if (!hpet_virt_address) + return -ENODEV; + } + + return 0; +} +module_init(hpet_late_init); + + #ifdef CONFIG_HPET_EMULATE_RTC /* HPET in LegacyReplacement Mode eats up RTC interrupt line. When, HPET - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/