1 /* rtc-parisc: RTC for HP PA-RISC firmware
3 * Copyright (C) 2008 Kyle McMartin <kyle@mcmartin.ca>
6 #include <linux/kernel.h>
7 #include <linux/module.h>
8 #include <linux/time.h>
9 #include <linux/platform_device.h>
10 #include <linux/rtc.h>
14 static int parisc_get_time(struct device *dev, struct rtc_time *tm)
18 ret = get_rtc_time(tm);
20 if (ret & RTC_BATT_BAD)
26 static int parisc_set_time(struct device *dev, struct rtc_time *tm)
30 ret = set_rtc_time(tm);
38 static const struct rtc_class_ops parisc_rtc_ops = {
39 .read_time = parisc_get_time,
40 .set_time = parisc_set_time,
43 static int __devinit parisc_rtc_probe(struct platform_device *dev)
47 p = kzalloc(sizeof (*p), GFP_KERNEL);
51 p = rtc_device_register("rtc-parisc", &dev->dev, &parisc_rtc_ops,
59 platform_set_drvdata(dev, p);
64 static int __devexit parisc_rtc_remove(struct platform_device *dev)
66 struct rtc_device *p = platform_get_drvdata(dev);
68 rtc_device_unregister(p);
74 static struct platform_driver parisc_rtc_driver = {
79 .probe = parisc_rtc_probe,
80 .remove = __devexit_p(parisc_rtc_remove),
83 static int __init parisc_rtc_init(void)
85 return platform_driver_register(&parisc_rtc_driver);
88 static void __exit parisc_rtc_fini(void)
90 platform_driver_unregister(&parisc_rtc_driver);
93 module_init(parisc_rtc_init);
94 module_exit(parisc_rtc_fini);
96 MODULE_AUTHOR("Kyle McMartin <kyle@mcmartin.ca>");
97 MODULE_LICENSE("GPL");
98 MODULE_DESCRIPTION("HP PA-RISC RTC driver");