263 lines
6.4 KiB
C
263 lines
6.4 KiB
C
/**
|
|
******************************************************************************
|
|
* @file ql_boot_gpio.h
|
|
* @author somer.zhang
|
|
* @version V1.0.0
|
|
* @date 2020/05/27
|
|
* @brief This file contains the power functions's declaration
|
|
******************************************************************************
|
|
**/
|
|
#ifndef __QL_BOOT_POWER_H__
|
|
#define __QL_BOOT_POWER_H__
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//forrest.liu@20201201 add from R01_b04 newest change
|
|
//#define QUEC_BOOT_BAT_CHARGE
|
|
//#define QUEC_BOOT_PWRKEY_CHECK
|
|
//#define QUEC_BOOT_VBUS_VOLT_CHECK
|
|
//#define QUEC_BOOT_NTC_TMP
|
|
//#define QUEC_BOOT_GET_POWERUP_REASON
|
|
|
|
#define NINGBO_RONLY_DATA_CHG_OK (0x01<<3)
|
|
|
|
#define PMIC_813_A1 0x31
|
|
#define PMIC_813_A2 0x32
|
|
#define PMIC_813_A3 0x3B
|
|
|
|
/* Timer0_0 is configured to free run @1MHz from BootROM. */
|
|
#define APBTIMER0_CNT_REG 0xD4014090
|
|
#define APBTIMER0_EN_REG 0xD4014000
|
|
|
|
typedef enum QL_POWERUP_REASON_ENUM
|
|
{
|
|
QL_POWERUP_NO_REASON = 0,
|
|
QL_POWERUP_PWRKEY,
|
|
QL_POWERUP_RESET,
|
|
QL_POWERUP_VBAT,
|
|
QL_POWERUP_RTC,
|
|
QL_POWERUP_FAULT,
|
|
QL_POWERUP_VBUS,
|
|
}QL_POWERUP_REASON_E;
|
|
|
|
typedef enum QL_CHARGER_STATUS_ENUM
|
|
{
|
|
QL_CHARGER_SHUTDOWN = 0,
|
|
QL_CHARGER_CHECK,
|
|
QL_CHARGER_TRICKLE,
|
|
QL_CHARGER_PRE,
|
|
QL_CHARGER_CC,
|
|
QL_CHARGER_CV,
|
|
QL_CHARGER_TER,
|
|
QL_CHARGER_FAULT,
|
|
}QL_CHARGER_STATUS_E;
|
|
|
|
typedef enum QL_PRE_CHG_CURRENT_ENUM
|
|
{
|
|
QL_PRE_CHG_CUR_75MA,
|
|
QL_PRE_CHG_CUR_50MA,
|
|
QL_PRE_CHG_CUR_100MA,
|
|
QL_PRE_CHG_CUR_150MA,
|
|
QL_PRE_CHG_CUR_MAX = QL_PRE_CHG_CUR_150MA
|
|
}QL_PRE_CHG_CURRENT_E;
|
|
|
|
typedef enum QL_CC_CHG_CURRENT_ENUM
|
|
{
|
|
QL_CC_CHG_CUR_100MA,
|
|
QL_CC_CHG_CUR_200MA,
|
|
QL_CC_CHG_CUR_300MA,
|
|
QL_CC_CHG_CUR_400MA,
|
|
QL_CC_CHG_CUR_450MA,
|
|
QL_CC_CHG_CUR_500MA,
|
|
QL_CC_CHG_CUR_550MA,
|
|
QL_CC_CHG_CUR_600MA,
|
|
QL_CC_CHG_CUR_650MA,
|
|
QL_CC_CHG_CUR_700MA,
|
|
QL_CC_CHG_CUR_750MA,
|
|
QL_CC_CHG_CUR_800MA,
|
|
QL_CC_CHG_CUR_850MA,
|
|
QL_CC_CHG_CUR_900MA,
|
|
QL_CC_CHG_CUR_950MA,
|
|
QL_CC_CHG_CUR_1000MA,
|
|
QL_CC_CHG_CUR_MAX = QL_CC_CHG_CUR_1000MA
|
|
}QL_CC_CHG_CURRENT_E;
|
|
|
|
typedef enum QL_TERM_CHG_CURRENT_ENUM
|
|
{
|
|
QL_TERM_CHG_CUR_50MA,
|
|
QL_TERM_CHG_CUR_25MA,
|
|
QL_TERM_CHG_CUR_75MA,
|
|
QL_TERM_CHG_CUR_100MA,
|
|
QL_TERM_CHG_CUR_MAX = QL_TERM_CHG_CUR_100MA
|
|
}QL_TERM_CHG_CURRENT_E;
|
|
|
|
typedef enum QL_PRE_CHG_TIME_ENUM
|
|
{
|
|
QL_PRE_CHG_MINUTE24,
|
|
QL_PRE_CHG_MINUTE36,
|
|
QL_PRE_CHG_MINUTE48,
|
|
QL_PRE_CHG_MINUTE60,
|
|
QL_PRE_CHG_MINUTE_MAX = QL_PRE_CHG_MINUTE60
|
|
}QL_PRE_CHG_TIME_E;
|
|
|
|
typedef enum QL_TRICKLE_CHG_TIME_ENUM
|
|
{
|
|
QL_TRICKLE_CHG_MINUTE6,
|
|
QL_TRICKLE_CHG_MINUTE9,
|
|
QL_TRICKLE_CHG_MINUTE12,
|
|
QL_TRICKLE_CHG_MINUTE15,
|
|
QL_TRICKLE_CHG_MINUTE_MAX = QL_TRICKLE_CHG_MINUTE15
|
|
}QL_TRICKLE_CHG_TIME_E;
|
|
|
|
typedef enum QL_CCCV_TIME_SET_ENUM
|
|
{
|
|
QL_CCCV_TIME_MINUTE96,
|
|
QL_CCCV_TIME_MINUTE144,
|
|
QL_CCCV_TIME_MINUTE192,
|
|
QL_CCCV_TIME_MINUTE240,
|
|
QL_CCCV_TIME_MINUTE_MAX=QL_CCCV_TIME_MINUTE240
|
|
}QL_CCCV_TIME_SET_E;
|
|
|
|
typedef enum QL_VBAT_VOL_SET_ENUM
|
|
{
|
|
QL_VBAT_VOL_4V20,
|
|
QL_VBAT_VOL_4V35,
|
|
QL_VBAT_VOL_4V15,
|
|
QL_VBAT_VOL_4V10,
|
|
QL_VBAT_VOL_MAX=QL_VBAT_VOL_4V35
|
|
}QL_VBAT_VOL_SET_E;
|
|
|
|
typedef enum QL_TERMINATE_JUDGE_ENUM
|
|
{
|
|
QL_TERMINATE_DISABLE = 0,
|
|
QL_TERMINATE_ENABLE,
|
|
}QL_TERMINATE_JUDGE_E;
|
|
|
|
|
|
typedef enum QL_RECHARGE_JUDGE_ENUM
|
|
{
|
|
QL_RECHARGE_DISABLE = 0,
|
|
QL_RECHARGE_ENABLE,
|
|
}QL_RECHARGE_JUDGE_E;
|
|
|
|
void delay_s(int s);
|
|
void ql_power_down(unsigned char normal_flag);
|
|
int ql_get_powerup_reason(void);
|
|
void Quec_pwrkey_check(void);
|
|
|
|
/*********************Charger API*******************/
|
|
unsigned char ql_get_vbus_state(void);
|
|
unsigned short ql_get_battery_vol(void);
|
|
unsigned short ql_get_charging_battery_vol(void);
|
|
unsigned char ql_get_battery_level(void);
|
|
unsigned int ql_get_charge_cur(void);
|
|
QL_CHARGER_STATUS_E ql_get_charge_status(void);
|
|
unsigned char ql_set_charge_mpp(unsigned short limit_cur, unsigned int uvlo);
|
|
void ql_charger_switch(unsigned char on_off); //1 -- on, 0 -- off
|
|
/**
|
|
* precharger mode maximum current setting @ normal temp
|
|
**/
|
|
void ql_max_pre_cur_set(QL_PRE_CHG_CURRENT_E value);
|
|
/**
|
|
* CC mode maximum current setting @ normal temp
|
|
**/
|
|
void ql_max_cc_cur_set(QL_CC_CHG_CURRENT_E value);
|
|
/**
|
|
* Charge maximum current setting when PMIC temp is too high (110C)
|
|
**/
|
|
void ql_max_cc_cur_set_toohigh(QL_CC_CHG_CURRENT_E value);
|
|
/**
|
|
* Charger termination setting
|
|
* 00: 100mA(dis_drvseg=1)
|
|
* 50mA (dis_drvseg=0)
|
|
* 01: 150mA(dis_drvseg=1)
|
|
* 25mA (dis_drvseg=0)
|
|
* 10: 200mA(dis_drvseg=1)
|
|
* 75mA (dis_drvseg=0)
|
|
* 11: 250mA(dis_drvseg=1)
|
|
* 100mA (dis_drvseg=0)
|
|
**/
|
|
void ql_terminate_cur_set(QL_TERM_CHG_CURRENT_E value);
|
|
/**
|
|
* Pre-charge timer
|
|
* =00, 24 min
|
|
* =01, 36 min
|
|
* =10, 48 min
|
|
* =11, 60 min
|
|
**/
|
|
void ql_precharge_time_set(QL_PRE_CHG_TIME_E value);
|
|
/**
|
|
* Trickle charge timer
|
|
* =00: 6 min
|
|
* =01: 9 min
|
|
* =10: 12 min
|
|
* =11: 15 min
|
|
**/
|
|
void ql_trickle_charge_time_set(QL_TRICKLE_CHG_TIME_E value);
|
|
/**
|
|
* force Charger state by software , as shown below:
|
|
000: Force Shutdown
|
|
001: Force Check
|
|
010: Force Trickle Charge
|
|
011: Force Pre Charge
|
|
100: Force CC Charge
|
|
101: Force CV Charge
|
|
110: Force Termination
|
|
111: Force Fault
|
|
**/
|
|
void ql_force_charge_state_set(QL_CHARGER_STATUS_E value);
|
|
QL_CHARGER_STATUS_E ql_force_charge_state_get(void);
|
|
|
|
/**
|
|
* get battery temp(need NTC)
|
|
**/
|
|
unsigned int ql_get_battemp_vol_mv(void);
|
|
/**
|
|
* cccv timer setting
|
|
**/
|
|
void ql_cccv_time_set(QL_CCCV_TIME_SET_E value);
|
|
|
|
/**
|
|
* vbat voltage setting
|
|
**/
|
|
void ql_vbat_vol_set(QL_VBAT_VOL_SET_E value);
|
|
|
|
/*
|
|
somer-2020/05/29-add charger terminate current poll
|
|
*/
|
|
QL_TERMINATE_JUDGE_E ql_charger_terminate_poll(unsigned int terminate_curr_mA);
|
|
|
|
/*
|
|
somer-2020/05/29-add recharger poll
|
|
*/
|
|
QL_RECHARGE_JUDGE_E ql_recharger_poll(unsigned int recharger_vol_mV);
|
|
//forrest.liu@20201201 add from R01_b04 newest change
|
|
void boot_battery_charge(void);
|
|
void boot_battery_charge_v2(void);
|
|
|
|
/* juson.zhang-2020/06/16: add api control cam VDD output */
|
|
/**
|
|
* LDO10, 2.8V output
|
|
* on_off: 0---off, 1---on
|
|
**/
|
|
void ql_set_cam_vdd_output(unsigned char on_off);
|
|
|
|
/**
|
|
* LDO13, 1.8V output
|
|
* on_off: 0---off, 1---on
|
|
**/
|
|
void ql_set_cam_iovdd_output(unsigned char on_off);
|
|
|
|
//test code
|
|
void ql_boot_get_battery_vol_test(void);
|
|
|
|
#ifdef __cplusplus
|
|
} /*"C" */
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|