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 */ | ||
