Patchwork Re: [PATCH] rtc: add x86 support for rtc-efi

login
register
mail settings
Submitter Brian Maly
Date April 6, 2009, 7:47 p.m.
Message ID <49DA5C56.8070104@redhat.com>
Download mbox | patch
Permalink /patch/25651/
State Changes Requested
Headers show

Comments

Brian Maly - April 6, 2009, 7:47 p.m.
dann frazier wrote:
> [Adding rtc list to the CC]
>
> On Mon, Apr 06, 2009 at 01:49:45PM -0400, Brian Maly wrote:
>   
>> This patch adds support for rtc-efi (RTC Class Driver for EFI-based  
>> systems) to x86.
>>
>> This patch is based on dann frazier patch [add rtc platform driver for  
>> EFI -> http://lkml.org/lkml/2009/1/8/434], and also depends on dann's  
>> patch. Dann's patch was in the mm tree, though I think its been merged  
>> already.
>>
>> This patch has been tested and works perfectly on every x86 EFI system I  
>> could find, though all have been EL64 systems. I would appreciate any  
>> testing feedback from EL32 systems from anyone that has one and can test.
>>
>> Signed-off-by: Brian Maly <bmaly@redhat.com>
>>     
>
> hey Brian,
>  Thanks for working on this. You might want to resubmit with the patch
> inlined instead of as an attachment to make it easier to review.
>
>   

Good point. My mailer corrupts inline resulting in patch breakage and 
headaches. But for point of reference (human readable):

 arch/x86/kernel/time_32.c |   22 ++++++++++++++++++++++
 arch/x86/kernel/time_64.c |   22 ++++++++++++++++++++++
 drivers/rtc/Kconfig       |    2 +-
 3 files changed, 45 insertions(+), 1 deletion(-)





--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
-~----------~----~----~----~------~----~------~--~---

Patch

--- 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 <linux/interrupt.h>
 #include <linux/time.h>
 #include <linux/mca.h>
+#include <linux/platform_device.h>
 
 #include <asm/arch_hooks.h>
 #include <asm/hpet.h>
@@ -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 <linux/time.h>
 #include <linux/mca.h>
 #include <linux/nmi.h>
+#include <linux/platform_device.h>
 
 #include <asm/i8253.h>
 #include <asm/hpet.h>
@@ -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
+