Root/
1 | /* rtc-starfire.c: Starfire platform RTC driver. |
2 | * |
3 | * Copyright (C) 2008 David S. Miller <davem@davemloft.net> |
4 | */ |
5 | |
6 | #include <linux/kernel.h> |
7 | #include <linux/module.h> |
8 | #include <linux/init.h> |
9 | #include <linux/rtc.h> |
10 | #include <linux/platform_device.h> |
11 | |
12 | #include <asm/oplib.h> |
13 | |
14 | MODULE_AUTHOR("David S. Miller <davem@davemloft.net>"); |
15 | MODULE_DESCRIPTION("Starfire RTC driver"); |
16 | MODULE_LICENSE("GPL"); |
17 | |
18 | static u32 starfire_get_time(void) |
19 | { |
20 | static char obp_gettod[32]; |
21 | static u32 unix_tod; |
22 | |
23 | sprintf(obp_gettod, "h# %08x unix-gettod", |
24 | (unsigned int) (long) &unix_tod); |
25 | prom_feval(obp_gettod); |
26 | |
27 | return unix_tod; |
28 | } |
29 | |
30 | static int starfire_read_time(struct device *dev, struct rtc_time *tm) |
31 | { |
32 | rtc_time_to_tm(starfire_get_time(), tm); |
33 | return rtc_valid_tm(tm); |
34 | } |
35 | |
36 | static const struct rtc_class_ops starfire_rtc_ops = { |
37 | .read_time = starfire_read_time, |
38 | }; |
39 | |
40 | static int __init starfire_rtc_probe(struct platform_device *pdev) |
41 | { |
42 | struct rtc_device *rtc = rtc_device_register("starfire", &pdev->dev, |
43 | &starfire_rtc_ops, THIS_MODULE); |
44 | if (IS_ERR(rtc)) |
45 | return PTR_ERR(rtc); |
46 | |
47 | platform_set_drvdata(pdev, rtc); |
48 | |
49 | return 0; |
50 | } |
51 | |
52 | static int __exit starfire_rtc_remove(struct platform_device *pdev) |
53 | { |
54 | struct rtc_device *rtc = platform_get_drvdata(pdev); |
55 | |
56 | rtc_device_unregister(rtc); |
57 | |
58 | return 0; |
59 | } |
60 | |
61 | static struct platform_driver starfire_rtc_driver = { |
62 | .driver = { |
63 | .name = "rtc-starfire", |
64 | .owner = THIS_MODULE, |
65 | }, |
66 | .remove = __exit_p(starfire_rtc_remove), |
67 | }; |
68 | |
69 | static int __init starfire_rtc_init(void) |
70 | { |
71 | return platform_driver_probe(&starfire_rtc_driver, starfire_rtc_probe); |
72 | } |
73 | |
74 | static void __exit starfire_rtc_exit(void) |
75 | { |
76 | platform_driver_unregister(&starfire_rtc_driver); |
77 | } |
78 | |
79 | module_init(starfire_rtc_init); |
80 | module_exit(starfire_rtc_exit); |
81 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9