rtc.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: rtc.h,v 1.5 2002/08/14 11:04:10 sebsjo Exp $ */
  2. #ifndef __RTC_H__
  3. #define __RTC_H__
  4. #include <linux/config.h>
  5. #ifdef CONFIG_ETRAX_DS1302
  6.    /* Dallas DS1302 clock/calendar register numbers. */
  7. #  define RTC_SECONDS      0
  8. #  define RTC_MINUTES      1
  9. #  define RTC_HOURS        2
  10. #  define RTC_DAY_OF_MONTH 3
  11. #  define RTC_MONTH        4
  12. #  define RTC_WEEKDAY      5
  13. #  define RTC_YEAR         6
  14. #  define RTC_CONTROL      7
  15.    /* Bits in CONTROL register. */
  16. #  define RTC_CONTROL_WRITEPROTECT  0x80
  17. #  define RTC_TRICKLECHARGER  8
  18.   
  19.   /* Bits in TRICKLECHARGER register TCS TCS TCS TCS DS DS RS RS. */
  20. #  define RTC_TCR_PATTERN  0xA0 /* 1010xxxx */
  21. #  define RTC_TCR_1DIOD  0x04 /* xxxx01xx */
  22. #  define RTC_TCR_2DIOD  0x08 /* xxxx10xx */
  23. #  define RTC_TCR_DISABLED  0x00 /* xxxxxx00 Disabled */
  24. #  define RTC_TCR_2KOHM  0x01 /* xxxxxx01 2KOhm */
  25. #  define RTC_TCR_4KOHM  0x02 /* xxxxxx10 4kOhm */
  26. #  define RTC_TCR_8KOHM  0x03 /* xxxxxx11 8kOhm */
  27. #elif defined(CONFIG_ETRAX_PCF8563)
  28.    /* I2C bus slave registers. */
  29. #  define RTC_I2C_READ 0xa3
  30. #  define RTC_I2C_WRITE 0xa2
  31.    /* Phillips PCF8563 registers. */
  32. #  define RTC_CONTROL1 0x00 /* Control/Status register 1. */
  33. #  define RTC_CONTROL2 0x01 /* Control/Status register 2. */
  34. #  define RTC_CLOCKOUT_FREQ 0x0d /* CLKOUT frequency. */
  35. #  define RTC_TIMER_CONTROL 0x0e /* Timer control. */
  36. #  define RTC_TIMER_CNTDOWN 0x0f /* Timer countdown. */
  37.    /* BCD encoded clock registers. */
  38. #  define RTC_SECONDS 0x02
  39. #  define RTC_MINUTES 0x03
  40. #  define RTC_HOURS 0x04
  41. #  define RTC_DAY_OF_MONTH 0x05
  42. #  define RTC_WEEKDAY 0x06 /* Not coded in BCD! */
  43. #  define RTC_MONTH 0x07
  44. #  define RTC_YEAR 0x08
  45. #  define RTC_MINUTE_ALARM 0x09
  46. #  define RTC_HOUR_ALARM 0x0a
  47. #  define RTC_DAY_ALARM 0x0b
  48. #  define RTC_WEEKDAY_ALARM 0x0c
  49. #endif
  50. #ifdef CONFIG_ETRAX_DS1302
  51. #  define CMOS_READ(x) ds1302_readreg(x)
  52. #  define CMOS_WRITE(val,reg) ds1302_writereg(reg,val)
  53. #  define RTC_INIT() ds1302_init()
  54. #elif defined(CONFIG_ETRAX_PCF8563)
  55. #  define CMOS_READ(x) i2c_readreg(RTC_I2C_READ, x)
  56. #  define CMOS_WRITE(val,reg) i2c_writereg(RTC_I2C_WRITE,reg,val)
  57. #  define RTC_INIT() pcf8563_init()
  58. #else
  59.   /* No RTC configured so we shouldn't try to access any. */
  60. #  define CMOS_READ(x) 42
  61. #  define CMOS_WRITE(x,y)
  62. #  define RTC_INIT() (-1)
  63. #endif
  64. /* Conversions to and from the RTC BCD encoded format. */
  65. #define BCD_TO_BIN(x) ((x)=((x)&15) + ((x)>>4)*10)
  66. #define BIN_TO_BCD(x) ((x)=(((x)/10)<<4) + (x)%10)
  67. /*
  68.  * The struct used to pass data via the following ioctl. Similar to the
  69.  * struct tm in <time.h>, but it needs to be here so that the kernel 
  70.  * source is self contained, allowing cross-compiles, etc. etc.
  71.  */
  72. struct rtc_time {
  73. int tm_sec;
  74. int tm_min;
  75. int tm_hour;
  76. int tm_mday;
  77. int tm_mon;
  78. int tm_year;
  79. int tm_wday;
  80. int tm_yday;
  81. int tm_isdst;
  82. };
  83. /* ioctl() calls that are permitted to the /dev/rtc interface. */
  84. #ifdef CONFIG_ETRAX_DS1302
  85. #  define DS1302_MAGIC 'p'
  86. #  define RTC_RD_TIME _IOR(DS1302_MAGIC, 0x09, struct rtc_time)  /* Read RTC time. */
  87. #  define RTC_SET_TIME _IOW(DS1302_MAGIC, 0x0a, struct rtc_time)  /* Set RTC time. */
  88. #  define RTC_SET_CHARGE   _IOW(DS1302_MAGIC, 0x0b, int)  /* Set CHARGE mode. */
  89. #elif defined(CONFIG_ETRAX_PCF8563)
  90. #  define PCF8563_MAGIC 'T'
  91. #  define RTC_RD_TIME _IOR(PCF8563_MAGIC, 0x01, struct rtc_time) /* Read RTC time. */
  92. #  define RTC_SET_TIME _IOW(PCF8563_MAGIC, 0x02, struct rtc_time) /* Set RTC time. */
  93. #  define RTC_SET_CHARGE   _IOW(PCF8563_MAGIC, 0x03, int) 
  94. #  define RTC_MAX_IOCTL 3
  95. #endif
  96. #endif /* __RTC_H__ */