/** @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