DS3231RealTimeClock.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /** @file
  2. *
  3. * Copyright (c) 2011, ARM Limited. All rights reserved.
  4. * Copyright (c) 2015, Hisilicon Limited. All rights reserved.
  5. * Copyright (c) 2015, Linaro Limited. All rights reserved.
  6. *
  7. * SPDX-License-Identifier: BSD-2-Clause-Patent
  8. *
  9. * Based on the files under ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
  10. **/
  11. #ifndef __DS3231_REAL_TIME_CLOCK_H__
  12. #define __DS3231_REAL_TIME_CLOCK_H__
  13. #define DS3231_REGADDR_SECONDS 0x00
  14. #define DS3231_REGADDR_MIUTES 0x01
  15. #define DS3231_REGADDR_HOURS 0x02
  16. #define DS3231_REGADDR_DAY 0x03
  17. #define DS3231_REGADDR_DATE 0x04
  18. #define DS3231_REGADDR_MONTH 0x05
  19. #define DS3231_REGADDR_YEAR 0x06
  20. #define DS3231_REGADDR_ALARM1SEC 0x07
  21. #define DS3231_REGADDR_ALARM1MIN 0x08
  22. #define DS3231_REGADDR_ALARM1HOUR 0x09
  23. #define DS3231_REGADDR_ALARM1DAY 0x0A
  24. #define DS3231_REGADDR_ALARM2MIN 0x0B
  25. #define DS3231_REGADDR_ALARM2HOUR 0x0C
  26. #define DS3231_REGADDR_ALARM2DAY 0x0D
  27. #define DS3231_REGADDR_CONTROL 0x0E
  28. #define DS3231_REGADDR_STATUS 0x0F
  29. #define DS3231_REGADDR_AGOFFSET 0x10
  30. #define DS3231_REGADDR_TEMPMSB 0x11
  31. #define DS3231_REGADDR_TEMPLSB 0x12
  32. typedef union {
  33. struct{
  34. UINT8 A1IE:1;
  35. UINT8 A2IE:1;
  36. UINT8 INTCN:1;
  37. UINT8 RSV:2;
  38. UINT8 CONV:1;
  39. UINT8 BBSQW:1;
  40. UINT8 EOSC_N:1;
  41. }bits;
  42. UINT8 u8;
  43. }RTC_DS3231_CONTROL;
  44. typedef union {
  45. struct{
  46. UINT8 A1F:1;
  47. UINT8 A2F:1;
  48. UINT8 BSY:1;
  49. UINT8 EN32KHZ:2;
  50. UINT8 Rsv:3;
  51. UINT8 OSF:1;
  52. }bits;
  53. UINT8 u8;
  54. }RTC_DS3231_STATUS;
  55. typedef union {
  56. struct{
  57. UINT8 Data:7;
  58. UINT8 Sign:1;
  59. }bits;
  60. UINT8 u8;
  61. }RTC_DS3231_AGOFFSET;
  62. typedef union {
  63. struct{
  64. UINT8 Data:7;
  65. UINT8 Sign:1;
  66. }bits;
  67. UINT8 u8;
  68. }RTC_DS3231_TEMPMSB;
  69. typedef union {
  70. struct{
  71. UINT8 Rsv:6;
  72. UINT8 Data:2;
  73. }bits;
  74. UINT8 u8;
  75. }RTC_DS3231_TEMPLSB;
  76. typedef union {
  77. struct{
  78. UINT8 Seconds:4;
  79. UINT8 Seconds10:3;
  80. UINT8 Rsv:1;
  81. }bits;
  82. UINT8 u8;
  83. }RTC_DS3231_SECONDS;
  84. typedef union {
  85. struct{
  86. UINT8 Minutes:4;
  87. UINT8 Minutes10:3;
  88. UINT8 Rsv:1;
  89. }bits;
  90. UINT8 u8;
  91. }RTC_DS3231_MINUTES;
  92. typedef union {
  93. struct{
  94. UINT8 Hour:4;
  95. UINT8 Hours10:1;
  96. UINT8 PM_20Hours:1;
  97. UINT8 Hour24_n:1;
  98. UINT8 Rsv:1;
  99. }bits;
  100. UINT8 u8;
  101. }RTC_DS3231_HOURS;
  102. typedef union {
  103. struct{
  104. UINT8 Day:3;
  105. UINT8 Rsv:5;
  106. }bits;
  107. UINT8 u8;
  108. }RTC_DS3231_DAY;
  109. typedef union {
  110. struct{
  111. UINT8 Month:4;
  112. UINT8 Month10:1;
  113. UINT8 Rsv:2;
  114. UINT8 Century:1;
  115. }bits;
  116. UINT8 u8;
  117. }RTC_DS3231_MONTH;
  118. typedef union {
  119. struct{
  120. UINT8 Year:4;
  121. UINT8 Year10:4;
  122. }bits;
  123. UINT8 u8;
  124. }RTC_DS3231_YEAR;
  125. typedef union {
  126. struct{
  127. UINT8 Seconds:4;
  128. UINT8 Seconds10:3;
  129. UINT8 A1M1:1;
  130. }bits;
  131. UINT8 u8;
  132. }RTC_DS3231_ALARM1SEC;
  133. typedef union {
  134. struct{
  135. UINT8 Minutes:4;
  136. UINT8 Minutes10:3;
  137. UINT8 A1M2:1;
  138. }bits;
  139. UINT8 u8;
  140. }RTC_DS3231_ALARM1MIN;
  141. typedef union {
  142. struct{
  143. UINT8 Hour:4;
  144. UINT8 Hours10:1;
  145. UINT8 PM_20Hours:1;
  146. UINT8 Hours24:1;
  147. UINT8 A1M3:1;
  148. }bits;
  149. UINT8 u8;
  150. }RTC_DS3231_ALARM1HOUR;
  151. #endif