at v2.6.21 95 lines 2.3 kB view raw
1/* 2 * include/asm-ppc/rtc.h 3 * 4 * Author: Tom Rini <trini@mvista.com> 5 * 6 * 2002 (c) MontaVista, Software, Inc. This file is licensed under 7 * the terms of the GNU General Public License version 2. This program 8 * is licensed "as is" without any warranty of any kind, whether express 9 * or implied. 10 * 11 * Based on: 12 * include/asm-m68k/rtc.h 13 * 14 * Copyright Richard Zidlicky 15 * implementation details for genrtc/q40rtc driver 16 * 17 * And the old drivers/macintosh/rtc.c which was heavily based on: 18 * Linux/SPARC Real Time Clock Driver 19 * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) 20 * 21 * With additional work by Paul Mackerras and Franz Sirl. 22 */ 23 24#ifndef __ASM_RTC_H__ 25#define __ASM_RTC_H__ 26 27#ifdef __KERNEL__ 28 29#include <linux/rtc.h> 30 31#include <asm/machdep.h> 32#include <asm/time.h> 33 34#define RTC_PIE 0x40 /* periodic interrupt enable */ 35#define RTC_AIE 0x20 /* alarm interrupt enable */ 36#define RTC_UIE 0x10 /* update-finished interrupt enable */ 37 38/* some dummy definitions */ 39#define RTC_BATT_BAD 0x100 /* battery bad */ 40#define RTC_SQWE 0x08 /* enable square-wave output */ 41#define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */ 42#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */ 43#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */ 44 45static inline unsigned int get_rtc_time(struct rtc_time *time) 46{ 47 if (ppc_md.get_rtc_time) { 48 unsigned long nowtime; 49 50 nowtime = (ppc_md.get_rtc_time)(); 51 52 to_tm(nowtime, time); 53 54 time->tm_year -= 1900; 55 time->tm_mon -= 1; /* Make sure userland has a 0-based month */ 56 } 57 return RTC_24H; 58} 59 60/* Set the current date and time in the real time clock. */ 61static inline int set_rtc_time(struct rtc_time *time) 62{ 63 if (ppc_md.get_rtc_time) { 64 unsigned long nowtime; 65 66 nowtime = mktime(time->tm_year+1900, time->tm_mon+1, 67 time->tm_mday, time->tm_hour, time->tm_min, 68 time->tm_sec); 69 70 (ppc_md.set_rtc_time)(nowtime); 71 72 return 0; 73 } else 74 return -EINVAL; 75} 76 77static inline unsigned int get_rtc_ss(void) 78{ 79 struct rtc_time h; 80 81 get_rtc_time(&h); 82 return h.tm_sec; 83} 84 85static inline int get_rtc_pll(struct rtc_pll_info *pll) 86{ 87 return -EINVAL; 88} 89static inline int set_rtc_pll(struct rtc_pll_info *pll) 90{ 91 return -EINVAL; 92} 93 94#endif /* __KERNEL__ */ 95#endif /* __ASM_RTC_H__ */