diff options
Diffstat (limited to 'arch/m68k/include/asm/rtc.h')
-rw-r--r-- | arch/m68k/include/asm/rtc.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/rtc.h b/arch/m68k/include/asm/rtc.h new file mode 100644 index 000000000000..5d3e03859844 --- /dev/null +++ b/arch/m68k/include/asm/rtc.h | |||
@@ -0,0 +1,76 @@ | |||
1 | /* include/asm-m68k/rtc.h | ||
2 | * | ||
3 | * Copyright Richard Zidlicky | ||
4 | * implementation details for genrtc/q40rtc driver | ||
5 | */ | ||
6 | /* permission is hereby granted to copy, modify and redistribute this code | ||
7 | * in terms of the GNU Library General Public License, Version 2 or later, | ||
8 | * at your option. | ||
9 | */ | ||
10 | |||
11 | #ifndef _ASM_RTC_H | ||
12 | #define _ASM_RTC_H | ||
13 | |||
14 | #ifdef __KERNEL__ | ||
15 | |||
16 | #include <linux/rtc.h> | ||
17 | #include <asm/errno.h> | ||
18 | #include <asm/machdep.h> | ||
19 | |||
20 | #define RTC_PIE 0x40 /* periodic interrupt enable */ | ||
21 | #define RTC_AIE 0x20 /* alarm interrupt enable */ | ||
22 | #define RTC_UIE 0x10 /* update-finished interrupt enable */ | ||
23 | |||
24 | /* some dummy definitions */ | ||
25 | #define RTC_BATT_BAD 0x100 /* battery bad */ | ||
26 | #define RTC_SQWE 0x08 /* enable square-wave output */ | ||
27 | #define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */ | ||
28 | #define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */ | ||
29 | #define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */ | ||
30 | |||
31 | static inline unsigned int get_rtc_time(struct rtc_time *time) | ||
32 | { | ||
33 | /* | ||
34 | * Only the values that we read from the RTC are set. We leave | ||
35 | * tm_wday, tm_yday and tm_isdst untouched. Even though the | ||
36 | * RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated | ||
37 | * by the RTC when initially set to a non-zero value. | ||
38 | */ | ||
39 | mach_hwclk(0, time); | ||
40 | return RTC_24H; | ||
41 | } | ||
42 | |||
43 | static inline int set_rtc_time(struct rtc_time *time) | ||
44 | { | ||
45 | return mach_hwclk(1, time); | ||
46 | } | ||
47 | |||
48 | static inline unsigned int get_rtc_ss(void) | ||
49 | { | ||
50 | if (mach_get_ss) | ||
51 | return mach_get_ss(); | ||
52 | else{ | ||
53 | struct rtc_time h; | ||
54 | |||
55 | get_rtc_time(&h); | ||
56 | return h.tm_sec; | ||
57 | } | ||
58 | } | ||
59 | |||
60 | static inline int get_rtc_pll(struct rtc_pll_info *pll) | ||
61 | { | ||
62 | if (mach_get_rtc_pll) | ||
63 | return mach_get_rtc_pll(pll); | ||
64 | else | ||
65 | return -EINVAL; | ||
66 | } | ||
67 | static inline int set_rtc_pll(struct rtc_pll_info *pll) | ||
68 | { | ||
69 | if (mach_set_rtc_pll) | ||
70 | return mach_set_rtc_pll(pll); | ||
71 | else | ||
72 | return -EINVAL; | ||
73 | } | ||
74 | #endif /* __KERNEL__ */ | ||
75 | |||
76 | #endif /* _ASM__RTC_H */ | ||