/** @file
Copyright (c) 2018, Hisilicon Limited. All rights reserved.
Copyright (c) 2018, Linaro Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __M41T83_REAL_TIME_CLOCK_H__
#define __M41T83_REAL_TIME_CLOCK_H__
#define M41T83_REGADDR_DOTSECONDS 0x00
#define M41T83_REGADDR_SECONDS 0x01
#define M41T83_REGADDR_MINUTES 0x02
#define M41T83_REGADDR_HOURS 0x03
#define M41T83_REGADDR_WEEK_DAY 0x04
#define M41T83_REGADDR_DAY 0x05
#define M41T83_REGADDR_MONTH 0x06
#define M41T83_REGADDR_YEAR 0x07
#define M41T83_REGADDR_ALARM1SEC 0x0E
#define M41T83_REGADDR_ALARM1MIN 0x0D
#define M41T83_REGADDR_ALARM1HOUR 0x0C
#define M41T83_REGADDR_ALARM1DATE 0x0B
#define M41T83_REGADDR_ALARM1MONTH 0x0A
#define M41T83_REGADDR_TIMERCONTROL 0x11
#define M41T83_REGADDR_ALARM2SEC 0x18
#define M41T83_REGADDR_ALARM2MIN 0x17
#define M41T83_REGADDR_ALARM2HOUR 0x16
#define M41T83_REGADDR_ALARM2DATE 0x15
#define M41T83_REGADDR_ALARM2MONTH 0x14
typedef union {
struct {
UINT8 TD0:1;
UINT8 TD1:1;
UINT8 RSV:3;
UINT8 TIE:1;
UINT8 TITP:1;
UINT8 TE:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_TIMERCONTROL;
typedef union {
struct {
UINT8 MicroSeconds;
} Bits;
UINT8 Uint8;
} RTC_M41T83_DOTSECOND;
typedef union {
struct{
UINT8 Seconds:7;
UINT8 ST:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_SECOND;
typedef union {
struct {
UINT8 Minutes:7;
UINT8 Rsv:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_MINUTE;
typedef union {
struct {
UINT8 Hours:6;
UINT8 CB:2;
} Bits;
UINT8 Uint8;
} RTC_M41T83_HOUR;
typedef union {
struct{
UINT8 Days:3;
UINT8 Rsv:5;
} Bits;
UINT8 Uint8;
} RTC_M41T83_WEEK_DAY;
typedef union {
struct{
UINT8 Days:6;
UINT8 Rsv:2;
} Bits;
UINT8 Uint8;
} RTC_M41T83_MONTH_DAY;
typedef union {
struct {
UINT8 Months:5;
UINT8 Rsv:3;
} Bits;
UINT8 Uint8;
} RTC_M41T83_MONTH;
typedef union {
struct {
UINT8 Years:8;
} Bits;
UINT8 Uint8;
} RTC_M41T83_YEAR;
typedef union {
struct {
UINT8 Second:7;
UINT8 RPT11:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_ALARM1SEC;
typedef union {
struct {
UINT8 Minute:7;
UINT8 RPT12:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_ALARM1MIN;
typedef union {
struct {
UINT8 Hour:6;
UINT8 HT:1;
UINT8 RPT13:1;
} Bits;
UINT8 Uint8;
} RTC_M41T83_ALARM1HOUR;
typedef struct {
RTC_M41T83_DOTSECOND DotSecond;
RTC_M41T83_SECOND Second;
RTC_M41T83_MINUTE Minute;
RTC_M41T83_HOUR Hour;
RTC_M41T83_WEEK_DAY WeekDay;
RTC_M41T83_MONTH_DAY Day;
RTC_M41T83_MONTH Month;
RTC_M41T83_YEAR Year;
} RTC_M41T83_TIME;
#endif