186 lines
6.7 KiB
C
Executable File
186 lines
6.7 KiB
C
Executable File
/**
|
|
System power IO control module.
|
|
|
|
This module is the driver of GxPower system. It handles the IO control of battery ADC detection, battery insert and battery charge.
|
|
|
|
@file DxPower.h
|
|
@ingroup mIDrvPowerCtrl
|
|
|
|
Copyright Novatek Microelectronics Corp. 2012. All rights reserved.
|
|
*/
|
|
#ifndef _DXPOWER_H_
|
|
#define _DXPOWER_H_
|
|
|
|
#include "kwrap/type.h"
|
|
|
|
/**
|
|
@addtogroup mIDrvPowerCtrl
|
|
*/
|
|
//@{
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// CAPS
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define POWER_CAPS_BASE 0
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// RTC power of DRTC power
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#define POWER_BF_DRTC 0x00000001
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Battery
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
@name Battery temperature definition
|
|
*/
|
|
//@{
|
|
#define BATTERY_TEMPERATURE_UNKNOWN -255 ///< battery not suppot temperature detection
|
|
//@}
|
|
|
|
/**
|
|
@name Battery level definition
|
|
*/
|
|
//@{
|
|
#define DRVPWR_BATTERY_LVL_UNKNOWN 0xFFFFFFFF ///< battery level is unknown, the initial value before battery detection start
|
|
#define DRVPWR_BATTERY_LVL_EMPTY 5 ///< battery is empty
|
|
#define DRVPWR_BATTERY_LVL_0 0 ///< battery level 0
|
|
#define DRVPWR_BATTERY_LVL_1 1 ///< battery level 1
|
|
#define DRVPWR_BATTERY_LVL_2 2 ///< battery level 2
|
|
#define DRVPWR_BATTERY_LVL_3 3 ///< battery level 3
|
|
#define DRVPWR_BATTERY_LVL_4 4 ///< battery level 4
|
|
//@}
|
|
|
|
|
|
#define POWER_VER 0x00010000
|
|
|
|
|
|
/** Event handler function prototype */
|
|
typedef void (*DX_CALLBACK_PTR)(UINT32 event, UINT32 param1, UINT32 param2);
|
|
|
|
|
|
/**
|
|
Battery charge current value
|
|
*/
|
|
typedef enum {
|
|
BATTERY_CHARGE_CURRENT_LOW = 0, ///< charge current low
|
|
BATTERY_CHARGE_CURRENT_MEDIUM, ///< charge current medimum
|
|
BATTERY_CHARGE_CURRENT_HIGH, ///< charge current high
|
|
ENUM_DUMMY4WORD(BATTERY_CHARGE_CURRENT)
|
|
} BATTERY_CHARGE_CURRENT;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
Dirver Power control ID
|
|
*/
|
|
typedef enum {
|
|
DRVPWR_CTRL_BATTERY_LEVEL = 0, ///< Read battery level (RO)
|
|
DRVPWR_CTRL_BATTERY_ADC_VALUE, ///< Read current battery adc value (RO)
|
|
DRVPWR_CTRL_BATTERY_CALIBRATION_EN, ///< Enable or disable battery calibraion mode (RW)
|
|
DRVPWR_CTRL_BATTERY_ADC_CAL_OFFSET, ///< Batt ADC calibration offset value(RW)
|
|
DRVPWR_CTRL_IS_DUMMUYLOAD_POWEROFF, ///< if dummy load check battery fail need to power off (RO)
|
|
DRVPWR_CTRL_IS_BATT_OVERHEAT, ///< if battery temperature overheat (RO)
|
|
DRVPWR_CTRL_IS_BATT_INSERT, ///< battery insert status (RO)
|
|
DRVPWR_CTRL_IS_DEAD_BATT, ///< battery power status (RO)
|
|
DRVPWR_CTRL_IS_NEED_RECHARGE, ///< check battery ADC status if need recharge (RO)
|
|
DRVPWR_CTRL_BATTERY_CHARGE_EN, ///< battery charge function enable, disable
|
|
DRVPWR_CTRL_BATTERY_CHARGE_CURRENT, ///< battery charge current set ,get(RW)
|
|
DRVPWR_CTRL_BATTERY_CHARGE_ISET, ///< battery charge current set ,get(RW)
|
|
DRVPWR_CTRL_BATTERY_CHARGE_VSET, ///< battery charge voltage set ,get(RW)
|
|
DRVPWR_CTRL_BATTERY_CHARGE_OK, ///< battery charge ok status get (RO)
|
|
DRVPWR_CTRL_BATTERY_TEMPERATURE, ///< battery temperature get (RO)
|
|
DRVPWR_CTRL_ENABLE_CHARGEIC,
|
|
DRVPWR_CTRL_POWERON_SOURCE, ///< poweron source get (RO)
|
|
DRVPWR_CTRL_PIR_EN, ///< PIR enable (WO)
|
|
DRVPWR_CTRL_POWER_LOST, ///< power lost (RO)
|
|
DRVPWR_CTRL_CURRENT_TIME, ///< current time
|
|
DRVPWR_CTRL_HWRT_TIME, ///< HW reset time
|
|
DRVPWR_CTRL_SWRT_TIME, ///< SW reset time
|
|
DRVPWR_CTRL_PSW1, ///< power switch 1 (RW)
|
|
DRVPWR_CTRL_PSW2, ///< power switch 2 (RO)
|
|
DRVPWR_CTRL_PSW3, ///< power switch 3 (RO)
|
|
DRVPWR_CTRL_PSW4, ///< power switch 4 (RO)
|
|
DRVPWR_CTRL_HWRT, ///< HW reset (RW)
|
|
DRVPWR_CTRL_SWRT, ///< SW reset (RW)
|
|
ENUM_DUMMY4WORD(DRVPWR_CTRL)
|
|
} DRVPWR_CTRL;
|
|
|
|
/**
|
|
@name Driver Power Callback event
|
|
*/
|
|
//@{
|
|
#define DRVPWR_CB_IS_LENS_MOVING 0 ///< Check is lens moving
|
|
#define DRVPWR_CB_DUMMY_LOAD_START 1 ///< Dummy load start
|
|
#define DRVPWR_CB_DUMMY_LOAD_END 2 ///< Dummy load end
|
|
//@}
|
|
|
|
/**
|
|
Dummy load Info
|
|
*/
|
|
typedef struct _DummyLoadType {
|
|
UINT32 deltaV; ///< The delta voltage of dummy load
|
|
UINT32 Ave_V; ///< The average battery voltage after dummy load stop
|
|
} DummyLoadType;
|
|
|
|
/**
|
|
Driver power on init.
|
|
|
|
*/
|
|
//extern void DrvPower_PowerOnInit(void);
|
|
|
|
/**
|
|
Do the dummy loading.
|
|
|
|
The dummy load is to check the battery internal resistance and the battery voltage can power on or not.
|
|
User can use the shutter to do the dummy load if the shutter coil is constant current when excited.
|
|
When the dummy load is opened the battery voltage will have a drop and after the dummy load is closed the battery
|
|
voltage will increase gradually.
|
|
|
|
@return TRUE: battery status is ok can power on.
|
|
FALSE: battery status is not ok can't power on.
|
|
*/
|
|
extern UINT32 DrvPower_DummyLoad(void);
|
|
|
|
/**
|
|
Get DrvPower setting value.
|
|
|
|
@param[in] DrvPwrCtrl: setting ID
|
|
@return the setting value.
|
|
|
|
*/
|
|
//extern UINT32 DrvPower_GetControl(DRVPWR_CTRL DrvPwrCtrl);
|
|
|
|
/**
|
|
Set DrvPower setting value.
|
|
|
|
@param[in] DrvPwrCtrl: setting ID
|
|
@param[in] value: the setting value
|
|
|
|
*/
|
|
//extern void DrvPower_SetControl(DRVPWR_CTRL DrvPwrCtrl, UINT32 value);
|
|
|
|
/**
|
|
Get battery temperature value.
|
|
|
|
@return the battery temperature value.
|
|
*/
|
|
//extern INT32 DrvPower_BattTempGet(void);
|
|
|
|
/**
|
|
Register callback function.
|
|
|
|
@note User must register callback funcion then can receive the Driver Power Callback event DRVPWR_CB_XXX.
|
|
|
|
@param[in] fpDxPowerCB: the callback function pointer.
|
|
*/
|
|
//extern void DrvPower_RegCB(DX_CALLBACK_PTR fpDxPowerCB);
|
|
|
|
//@}
|
|
#endif //_DXPOWER_H_
|
|
|