Blame view

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