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
)
23 return rtc_valid_tm(tm
);
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");