linux/include/asm-ppc/rtc.h
<<
>>
Prefs
   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__ */
  96