--- a/drivers/rtc/Kconfig 2009-03-28 04:25:33.000000000 -0400 +++ b/drivers/rtc/Kconfig 2009-03-26 12:53:59.000000000 -0400 @@ -442,7 +442,7 @@ config RTC_DRV_DS1742 config RTC_DRV_EFI tristate "EFI RTC" - depends on IA64 + depends on IA64 || (X86 && EFI) || (X86_64 && EFI) help If you say yes here you will get support for the EFI Real Time Clock. --- a/arch/x86/kernel/time_32.c 2009-03-12 22:39:28.000000000 -0400 +++ b/arch/x86/kernel/time_32.c 2009-03-27 12:08:58.000000000 -0400 @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -135,3 +136,24 @@ void __init time_init(void) tsc_init(); late_time_init = choose_time_init(); } + +#ifdef CONFIG_EFI +extern int efi_enabled; + +static struct platform_device rtc_efi_dev = { + .name = "rtc-efi", + .id = -1, +}; + +static int __init rtc_init(void) +{ + if (efi_enabled) { + if (platform_device_register(&rtc_efi_dev) < 0) + printk(KERN_ERR "unable to register rtc device...\n"); + } + /* not necessarily an error */ + return 0; +} +module_init(rtc_init); +#endif + --- a/arch/x86/kernel/time_64.c 2009-03-12 22:39:28.000000000 -0400 +++ b/arch/x86/kernel/time_64.c 2009-03-27 12:09:39.000000000 -0400 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -135,3 +136,24 @@ void __init time_init(void) late_time_init = choose_time_init(); } + +#ifdef CONFIG_EFI +extern int efi_enabled; + +static struct platform_device rtc_efi_dev = { + .name = "rtc-efi", + .id = -1, +}; + +static int __init rtc_init(void) +{ + if (efi_enabled) { + if (platform_device_register(&rtc_efi_dev) < 0) + printk(KERN_ERR "unable to register rtc device...\n"); + } + /* not necessarily an error */ + return 0; +} +module_init(rtc_init); +#endif +