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 * This program and the accompanying materials 8 * are licensed and made available under the terms and conditions of the BSD License 9 * which accompanies this distribution. The full text of the license may be found at 10 * http://opensource.org/licenses/bsd-license.php 11 * 12 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 * 15 * Based on the files under ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf 16 **/ 17 18 19 #ifndef __DS3231_REAL_TIME_CLOCK_H__ 20 #define __DS3231_REAL_TIME_CLOCK_H__ 21 22 #define DS3231_REGADDR_SECONDS 0x00 23 #define DS3231_REGADDR_MIUTES 0x01 24 #define DS3231_REGADDR_HOURS 0x02 25 #define DS3231_REGADDR_DAY 0x03 26 #define DS3231_REGADDR_DATE 0x04 27 #define DS3231_REGADDR_MONTH 0x05 28 #define DS3231_REGADDR_YEAR 0x06 29 #define DS3231_REGADDR_ALARM1SEC 0x07 30 #define DS3231_REGADDR_ALARM1MIN 0x08 31 #define DS3231_REGADDR_ALARM1HOUR 0x09 32 #define DS3231_REGADDR_ALARM1DAY 0x0A 33 #define DS3231_REGADDR_ALARM2MIN 0x0B 34 #define DS3231_REGADDR_ALARM2HOUR 0x0C 35 #define DS3231_REGADDR_ALARM2DAY 0x0D 36 #define DS3231_REGADDR_CONTROL 0x0E 37 #define DS3231_REGADDR_STATUS 0x0F 38 #define DS3231_REGADDR_AGOFFSET 0x10 39 #define DS3231_REGADDR_TEMPMSB 0x11 40 #define DS3231_REGADDR_TEMPLSB 0x12 41 42 43 typedef union { 44 struct{ 45 UINT8 A1IE:1; 46 UINT8 A2IE:1; 47 UINT8 INTCN:1; 48 UINT8 RSV:2; 49 UINT8 CONV:1; 50 UINT8 BBSQW:1; 51 UINT8 EOSC_N:1; 52 }bits; 53 UINT8 u8; 54 }RTC_DS3231_CONTROL; 55 56 typedef union { 57 struct{ 58 UINT8 A1F:1; 59 UINT8 A2F:1; 60 UINT8 BSY:1; 61 UINT8 EN32KHZ:2; 62 UINT8 Rsv:3; 63 UINT8 OSF:1; 64 }bits; 65 UINT8 u8; 66 }RTC_DS3231_STATUS; 67 68 69 typedef union { 70 struct{ 71 UINT8 Data:7; 72 UINT8 Sign:1; 73 }bits; 74 UINT8 u8; 75 }RTC_DS3231_AGOFFSET; 76 77 typedef union { 78 struct{ 79 UINT8 Data:7; 80 UINT8 Sign:1; 81 }bits; 82 UINT8 u8; 83 }RTC_DS3231_TEMPMSB; 84 85 86 typedef union { 87 struct{ 88 UINT8 Rsv:6; 89 UINT8 Data:2; 90 }bits; 91 UINT8 u8; 92 }RTC_DS3231_TEMPLSB; 93 94 typedef union { 95 struct{ 96 UINT8 Seconds:4; 97 UINT8 Seconds10:3; 98 UINT8 Rsv:1; 99 }bits; 100 UINT8 u8; 101 }RTC_DS3231_SECONDS; 102 103 typedef union { 104 struct{ 105 UINT8 Minutes:4; 106 UINT8 Minutes10:3; 107 UINT8 Rsv:1; 108 }bits; 109 UINT8 u8; 110 }RTC_DS3231_MINUTES; 111 112 typedef union { 113 struct{ 114 UINT8 Hour:4; 115 UINT8 Hours10:1; 116 UINT8 PM_20Hours:1; 117 UINT8 Hour24_n:1; 118 UINT8 Rsv:1; 119 }bits; 120 UINT8 u8; 121 }RTC_DS3231_HOURS; 122 123 typedef union { 124 struct{ 125 UINT8 Day:3; 126 UINT8 Rsv:5; 127 }bits; 128 UINT8 u8; 129 }RTC_DS3231_DAY; 130 131 typedef union { 132 struct{ 133 UINT8 Month:4; 134 UINT8 Month10:1; 135 UINT8 Rsv:2; 136 UINT8 Century:1; 137 }bits; 138 UINT8 u8; 139 }RTC_DS3231_MONTH; 140 141 typedef union { 142 struct{ 143 UINT8 Year:4; 144 UINT8 Year10:4; 145 }bits; 146 UINT8 u8; 147 }RTC_DS3231_YEAR; 148 149 typedef union { 150 struct{ 151 UINT8 Seconds:4; 152 UINT8 Seconds10:3; 153 UINT8 A1M1:1; 154 }bits; 155 UINT8 u8; 156 }RTC_DS3231_ALARM1SEC; 157 158 typedef union { 159 struct{ 160 UINT8 Minutes:4; 161 UINT8 Minutes10:3; 162 UINT8 A1M2:1; 163 }bits; 164 UINT8 u8; 165 }RTC_DS3231_ALARM1MIN; 166 167 typedef union { 168 struct{ 169 UINT8 Hour:4; 170 UINT8 Hours10:1; 171 UINT8 PM_20Hours:1; 172 UINT8 Hours24:1; 173 UINT8 A1M3:1; 174 }bits; 175 UINT8 u8; 176 }RTC_DS3231_ALARM1HOUR; 177 178 #endif 179