204 lines
6.3 KiB
C
Executable File
204 lines
6.3 KiB
C
Executable File
/**
|
|
Header file for RTC module.
|
|
|
|
This file is the header file that define the API and data type
|
|
for RTC module.
|
|
|
|
@file rtc.h
|
|
@ingroup miDrvTimer_RTC
|
|
@note Nothing.
|
|
|
|
Copyright Novatek Microelectronics Corp. 2012. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _RTC_H
|
|
#define _RTC_H
|
|
|
|
#include <kwrap/type.h>
|
|
#include <kwrap/nvt_type.h>
|
|
#include <kwrap/platform.h>
|
|
#include <comm/driver.h>
|
|
//#include "driver.h"
|
|
|
|
/**
|
|
@addtogroup miDrvTimer_RTC
|
|
*/
|
|
//@{
|
|
|
|
/**
|
|
RTC Date
|
|
*/
|
|
typedef union {
|
|
// Format conformed to RTC register
|
|
_PACKED_BEGIN struct {
|
|
UBITFIELD day: 5; ///< Day
|
|
UBITFIELD month: 4; ///< Month
|
|
UBITFIELD year: 12; ///< Year
|
|
} _PACKED_END s;
|
|
UINT32 value; ///< Date value all together Y:M:D
|
|
} RTC_DATE, *PRTC_DATE;
|
|
|
|
/**
|
|
RTC Time
|
|
*/
|
|
typedef union {
|
|
// Format conformed to RTC register
|
|
_PACKED_BEGIN struct {
|
|
UBITFIELD second: 6; ///< Second
|
|
UBITFIELD minute: 6; ///< Minute
|
|
UBITFIELD hour: 5; ///< Hour
|
|
} _PACKED_END s;
|
|
UINT32 value; ///< Time value all together H:M:S
|
|
} RTC_TIME, *PRTC_TIME;
|
|
|
|
/**
|
|
RTC power on source
|
|
|
|
@note For rtc_getPwrOnSource()
|
|
*/
|
|
typedef enum {
|
|
RTC_PWRON_SRC_PWR_SW, ///< power on from power switch
|
|
RTC_PWRON_SRC_PWR_SW2, ///< power on from power switch 2
|
|
RTC_PWRON_SRC_PWR_SW3, ///< power on from power switch 3 (Usually for USB VBUS, depend on project)
|
|
RTC_PWRON_SRC_PWR_SW4, ///< power on from power switch 4 (Usually for VBAT, depend on project)
|
|
RTC_PWRON_SRC_PWR_ALM, ///< Power on from PWR ALARM
|
|
ENUM_DUMMY4WORD(RTC_PWRON_SRC)
|
|
} RTC_PWRON_SRC, *PRTC_PWRON_SRC;
|
|
|
|
#define RTC_PWRON_SRC_VBAT RTC_PWRON_SRC_PWR_SW4
|
|
#define RTC_PWRON_SRC_VBUS RTC_PWRON_SRC_PWR_SW3
|
|
|
|
/**
|
|
RTC wake up source
|
|
|
|
RTC wake up source for RTC_CONFIG_ID_WAKEUP_SRC.
|
|
*/
|
|
typedef enum {
|
|
RTC_WAKEUP_SRC_ALARM = 0x00000001, ///< RTC time matches alarm time, default is disabled
|
|
RTC_WAKEUP_SRC_PWR_SW = 0x00000002, ///< Power switch is pressed, default is disabled
|
|
RTC_WAKEUP_SRC_PWR_SW2 = 0x00000004, ///< Power switch 2 is pressed, default is disabled
|
|
|
|
ENUM_DUMMY4WORD(RTC_WAKEUP_SRC)
|
|
} RTC_WAKEUP_SRC, *PRTC_WAKEUP_SRC;
|
|
|
|
|
|
/**
|
|
RTC Configuration ID
|
|
|
|
RTC Configuration ID for rtc_setConfig() and rtc_getConfig().
|
|
|
|
*/
|
|
typedef enum {
|
|
RTC_CONFIG_ID_WAKEUP_ENABLE, ///< Enable wake up source when IC enter power down mode (Default is none).
|
|
///< Could be ORed of the following value:
|
|
///< - @b RTC_WAKEUP_SRC_ALARM : RTC time matches alarm time
|
|
///< - @b RTC_WAKEUP_SRC_PWR_SW : Power switch is pressed
|
|
///< - @b RTC_WAKEUP_SRC_PWR_SW2: Power switch 2 is pressed
|
|
|
|
RTC_CONFIG_ID_WAKEUP_DISABLE, ///< Disable wake up source when IC enter power down mode.
|
|
///< Could be ORed of the following value:
|
|
///< - @b RTC_WAKEUP_SRC_ALARM : RTC time matches alarm time
|
|
///< - @b RTC_WAKEUP_SRC_PWR_SW : Power switch is pressed
|
|
///< - @b RTC_WAKEUP_SRC_PWR_SW2: Power switch 2 is pressed
|
|
|
|
|
|
ENUM_DUMMY4WORD(RTC_CONFIG_ID)
|
|
} RTC_CONFIG_ID, *PRTC_CONFIG_ID;
|
|
|
|
/**
|
|
RTC DATA selection
|
|
|
|
Select accessed RTC data. Each selection is 16 bits
|
|
|
|
@note For rtc_setData() and rtc_getData().
|
|
*/
|
|
typedef enum {
|
|
RTC_DATA_0, ///< Select data 0
|
|
|
|
ENUM_DUMMY4WORD(RTC_DATA)
|
|
} RTC_DATA;
|
|
|
|
/**
|
|
RTC DRAM power off policy
|
|
|
|
@note For rtc_set_dram_power_off_policy()
|
|
*/
|
|
typedef enum {
|
|
RTC_DRAM_POWEROFF_POLICY_NORMAL, ///< Normal. DRAM will be powered off if RTC PWR_EN becomes LOW
|
|
RTC_DRAM_POWEROFF_POLICY_KEEP, ///< Normal. DRAM will be stilled powered on if RTC PWR_EN becomes LOW
|
|
|
|
ENUM_DUMMY4WORD(RTC_DRAM_POWEROFF_POLICY)
|
|
} RTC_DRAM_POWEROFF_POLICY;
|
|
|
|
// Public APIs
|
|
|
|
// General
|
|
extern ER rtc_open(void);
|
|
extern BOOL rtc_isOpened(void);
|
|
extern void rtc_reset(void);
|
|
extern void rtc_triggerCSET(void);
|
|
extern void rtc_waitCSETDone(void);
|
|
extern BOOL rtc_isPowerLost(void);
|
|
|
|
extern void rtc_setConfig(RTC_CONFIG_ID ConfigID, UINT32 uiConfig);
|
|
extern UINT32 rtc_getConfig(RTC_CONFIG_ID ConfigID);
|
|
|
|
// Date, time
|
|
extern void rtc_setBaseDate(UINT32 uiYear, UINT32 uiMonth, UINT32 uiDay);
|
|
extern RTC_DATE rtc_getBaseDate(void);
|
|
|
|
extern void rtc_setMaxDate(UINT32 uiYear, UINT32 uiMonth, UINT32 uiDay);
|
|
extern RTC_DATE rtc_getMaxDate(void);
|
|
|
|
extern void rtc_setReadTimeOffset(INT32 iHour, INT32 iMinute);
|
|
|
|
extern ER rtc_setDate(UINT32 uiYear, UINT32 uiMonth, UINT32 uiDay);
|
|
extern RTC_DATE rtc_getDate(void);
|
|
|
|
extern ER rtc_setTime(UINT32 uiHour, UINT32 uiMinute, UINT32 uiSecond);
|
|
extern RTC_TIME rtc_getTime(void);
|
|
|
|
extern UINT32 rtc_setData(RTC_DATA select, UINT32 data);
|
|
extern UINT32 rtc_getData(RTC_DATA select);
|
|
|
|
extern UINT32 rtc_set_pwr_en3(BOOL value);
|
|
extern BOOL rtc_get_pwr_en3(void);
|
|
|
|
extern UINT32 rtc_convertDate2Days(RTC_DATE rtcDate);
|
|
extern RTC_DATE rtc_convertDays2Date(UINT32 uiDays);
|
|
extern BOOL rtc_isLeapYear(UINT32 uiYear);
|
|
|
|
// Alarm
|
|
extern ER rtc_setAlarm(RTC_DATE rtcDate, RTC_TIME rtcTime, DRV_CB EventHandler);
|
|
extern void rtc_getAlarm(PRTC_DATE prtcDate, PRTC_TIME prtcTime);
|
|
|
|
// Power alarm
|
|
extern ER rtc_setPWRAlarm(RTC_DATE rtcDate, RTC_TIME rtcTime);
|
|
extern void rtc_getPWRAlarm(PRTC_DATE prtcDate, PRTC_TIME prtcTime);
|
|
extern void rtc_disablePWRAlarm(void);
|
|
extern void rtc_enablePWRAlarm(void);
|
|
extern BOOL rtc_isPWRAlarmEnabled(void);
|
|
extern BOOL rtc_isPWRAlarm(void);
|
|
|
|
// Power button control
|
|
extern void rtc_resetShutdownTimer(void);
|
|
extern void rtc_poweroffPWR(void);
|
|
extern void rtc_set_dram_power_off_policy(RTC_DRAM_POWEROFF_POLICY policy);
|
|
extern RTC_DRAM_POWEROFF_POLICY rtc_get_dram_power_off_policy(void);
|
|
|
|
extern BOOL rtc_getPWRStatus(void);
|
|
extern BOOL rtc_getPWR2Status(void);
|
|
extern BOOL rtc_getPWR3Status(void);
|
|
extern BOOL rtc_getPWR4Status(void);
|
|
extern BOOL rtc_getPWREN2Status(void);
|
|
extern BOOL rtc_getPWREN2Log(void);
|
|
extern RTC_PWRON_SRC rtc_getPWROnSource(void);
|
|
|
|
// Driver probe
|
|
extern void rtc_platform_init(void);
|
|
extern void rtc_platform_uninit(void);
|
|
|
|
//@}
|
|
|
|
#endif
|