/** @file
|
*
|
* Copyright (c) 2011, ARM Limited. All rights reserved.
|
* Copyright (c) 2015, Hisilicon Limited. All rights reserved.
|
* Copyright (c) 2015, Linaro Limited. All rights reserved.
|
*
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
*
|
* Based on the files under ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
|
**/
|
|
|
#ifndef __DS3231_REAL_TIME_CLOCK_H__
|
#define __DS3231_REAL_TIME_CLOCK_H__
|
|
#define DS3231_REGADDR_SECONDS 0x00
|
#define DS3231_REGADDR_MIUTES 0x01
|
#define DS3231_REGADDR_HOURS 0x02
|
#define DS3231_REGADDR_DAY 0x03
|
#define DS3231_REGADDR_DATE 0x04
|
#define DS3231_REGADDR_MONTH 0x05
|
#define DS3231_REGADDR_YEAR 0x06
|
#define DS3231_REGADDR_ALARM1SEC 0x07
|
#define DS3231_REGADDR_ALARM1MIN 0x08
|
#define DS3231_REGADDR_ALARM1HOUR 0x09
|
#define DS3231_REGADDR_ALARM1DAY 0x0A
|
#define DS3231_REGADDR_ALARM2MIN 0x0B
|
#define DS3231_REGADDR_ALARM2HOUR 0x0C
|
#define DS3231_REGADDR_ALARM2DAY 0x0D
|
#define DS3231_REGADDR_CONTROL 0x0E
|
#define DS3231_REGADDR_STATUS 0x0F
|
#define DS3231_REGADDR_AGOFFSET 0x10
|
#define DS3231_REGADDR_TEMPMSB 0x11
|
#define DS3231_REGADDR_TEMPLSB 0x12
|
|
|
typedef union {
|
struct{
|
UINT8 A1IE:1;
|
UINT8 A2IE:1;
|
UINT8 INTCN:1;
|
UINT8 RSV:2;
|
UINT8 CONV:1;
|
UINT8 BBSQW:1;
|
UINT8 EOSC_N:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_CONTROL;
|
|
typedef union {
|
struct{
|
UINT8 A1F:1;
|
UINT8 A2F:1;
|
UINT8 BSY:1;
|
UINT8 EN32KHZ:2;
|
UINT8 Rsv:3;
|
UINT8 OSF:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_STATUS;
|
|
|
typedef union {
|
struct{
|
UINT8 Data:7;
|
UINT8 Sign:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_AGOFFSET;
|
|
typedef union {
|
struct{
|
UINT8 Data:7;
|
UINT8 Sign:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_TEMPMSB;
|
|
|
typedef union {
|
struct{
|
UINT8 Rsv:6;
|
UINT8 Data:2;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_TEMPLSB;
|
|
typedef union {
|
struct{
|
UINT8 Seconds:4;
|
UINT8 Seconds10:3;
|
UINT8 Rsv:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_SECONDS;
|
|
typedef union {
|
struct{
|
UINT8 Minutes:4;
|
UINT8 Minutes10:3;
|
UINT8 Rsv:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_MINUTES;
|
|
typedef union {
|
struct{
|
UINT8 Hour:4;
|
UINT8 Hours10:1;
|
UINT8 PM_20Hours:1;
|
UINT8 Hour24_n:1;
|
UINT8 Rsv:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_HOURS;
|
|
typedef union {
|
struct{
|
UINT8 Day:3;
|
UINT8 Rsv:5;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_DAY;
|
|
typedef union {
|
struct{
|
UINT8 Month:4;
|
UINT8 Month10:1;
|
UINT8 Rsv:2;
|
UINT8 Century:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_MONTH;
|
|
typedef union {
|
struct{
|
UINT8 Year:4;
|
UINT8 Year10:4;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_YEAR;
|
|
typedef union {
|
struct{
|
UINT8 Seconds:4;
|
UINT8 Seconds10:3;
|
UINT8 A1M1:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_ALARM1SEC;
|
|
typedef union {
|
struct{
|
UINT8 Minutes:4;
|
UINT8 Minutes10:3;
|
UINT8 A1M2:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_ALARM1MIN;
|
|
typedef union {
|
struct{
|
UINT8 Hour:4;
|
UINT8 Hours10:1;
|
UINT8 PM_20Hours:1;
|
UINT8 Hours24:1;
|
UINT8 A1M3:1;
|
}bits;
|
UINT8 u8;
|
}RTC_DS3231_ALARM1HOUR;
|
|
#endif
|