nt9856x/rtos/code/driver/na51089/include/PowerIC_i2c.h
2023-03-28 15:07:53 +08:00

178 lines
6.0 KiB
C
Executable File

#ifndef _PWR_IC_I2C_H
#define _PWR_IC_I2C_H
#include "../../../hdal/drivers/k_driver/source/rtos_na51089/i2c/i2c.h"
#define I2C_POWER_IC_NONE 0
#define I2C_POWER_IC_RT5024 1
#define I2C_POWER_IC_TPS53915 2
#define I2C_POWER_IC I2C_POWER_IC_TPS53915
#if (I2C_POWER_IC == I2C_POWER_IC_RT5024)
#define I2C_SLAVE_ADDRESS 0x45 //0010010
#define PWRIC_READ_ADDRESS (i2c_conv7bSARToData(I2C_SLAVE_ADDRESS) | 0x1)
#define PWRIC_WRITE_ADDRESS (i2c_conv7bSARToData(I2C_SLAVE_ADDRESS) | 0x0)
#elif (I2C_POWER_IC == I2C_POWER_IC_TPS53915)
#define PWRIC_READ_ADDRESS 0x1F
#define PWRIC_WRITE_ADDRESS 0x1E
#define PWRIC_VOLTAGE_ADDRESS 0xD4
#define PWRIC_ADJUST_CMD_ADDRESS 0xD4
#define PWRIC_MARGIN_CMD_ADDRESS 0xD5
typedef enum {
TPS53915_VOUT_MARGIN_REG = 0x0,
TPS53915_VOUT_ADJUST_REG,
TPS53915_TOTAL_REG,
} POWERIC_VOLTAGE_TUNE_REG;
typedef enum {
TPS53915_POWERIC_MARGIN_LOW_EN = 0x0,
TPS53915_POWERIC_MARGIN_HIGH_EN,
TPS53915_POWERIC_MARGIN_OP_CNT,
} POWERIC_MARGIN_EN_BIT;
typedef enum {
TPS53915_HIGHEST_VOLTAGE = 0x0,
TPS53915_1P_10V = TPS53915_HIGHEST_VOLTAGE, //1.10V
TPS53915_1P_09V, //1.09V
TPS53915_1P_08V, //1.08V
TPS53915_1P_07V, //1.07V
TPS53915_1P_06V, //1.06V
TPS53915_1P_05V, //1.05V
TPS53915_1P_04V, //1.04V
TPS53915_1P_03V, //1.03V
TPS53915_1P_02V, //1.02V
TPS53915_1P_01V, //1.01V
TPS53915_1P_00V, //1.00V
TPS53915_0P_99V, //0.99V
TPS53915_0P_98V, //0.98V
TPS53915_0P_97V, //0.97V
TPS53915_0P_96V, //0.96V
TPS53915_0P_95V, //0.95V
TPS53915_0P_94V, //0.94V
TPS53915_0P_93V, //0.93V
TPS53915_0P_92V, //0.92V
TPS53915_0P_91V, //0.91V
TPS53915_0P_90V, //0.90V => 19
TPS53915_0P_89V, //0.89V
TPS53915_0P_88V, //0.88V
TPS53915_0P_87V, //0.87V
TPS53915_0P_86V, //0.86V
TPS53915_0P_85V, //0.85V
TPS53915_0P_84V, //0.84V
TPS53915_0P_83V, //0.83V
TPS53915_0P_82V, //0.82V
TPS53915_0P_81V, //0.81V
TPS53915_0P_80V, //0.80V
TPS53915_0P_79V, //0.79V
TPS53915_0P_78V, //0.78V
TPS53915_0P_77V, //0.77V
TPS53915_0P_76V, //0.76V
TPS53915_0P_75V, //0.75V
TPS53915_0P_74V, //0.74V
TPS53915_0P_73V, //0.73V
TPS53915_LOWEST_VOLTAGE = TPS53915_0P_73V,
TPS53915_TOTAL_VOLTAGE_LEVEL,
TPS53915_DEFAULT_VOLTAGE = TPS53915_0P_90V,
ENUM_DUMMY4WORD(POWERIC_VOLTAGE_VAL)
} POWERIC_VOLTAGE_VAL;
STATIC_ASSERT(TPS53915_TOTAL_VOLTAGE_LEVEL <= 39);
typedef enum {
TPS53915_INCREASE_VOLTAGE = TPS53915_TOTAL_VOLTAGE_LEVEL + 0x10,
TPS53915_DECREASE_VOLTAGE,
ENUM_DUMMY4WORD(POWERIC_VOLTAGE_CHANGE_OP)
} POWERIC_VOLTAGE_CHANGE_OP;
typedef struct {
UINT32 adjust_cmd_value; //0xD4
UINT32 margin_cmd_value; //0xD5
// float margin_percentage;
// float adjust_percentage;
float actual_voltage;
float target_voltage;
} PowerIC_VoltageTBL, *pPowerIC_VoltageTBL;
#endif
extern BOOL PwrIC_Open(void);
extern BOOL PwrIC_Close(void);
extern BOOL PwrIC_DumpAll(void);
extern BOOL PwrIC_DoCmd(const UINT32 *pCmdList, UINT32 param, UINT32 *ret);
extern I2C_STS PwrIC_Receive(UINT32 *value, UINT32 addr, BOOL bStop);
extern I2C_STS PwrIC_Transmit(UINT32 value, UINT32 addr, BOOL bStop);
extern UINT32 PwrIC_ShowCurrentVoltage(void);
extern BOOL PwrIC_ChangeCurrentVoltage(UINT32 op);
extern UINT32 cmd_PwrIC_init[];
extern UINT32 cmd_PwrIC_read[];
extern UINT32 cmd_PwrIC_write[];
extern UINT32 cmd_Sensor_open[];
extern UINT32 cmd_Sensor_close[];
extern UINT32 cmd_LCD_setbl[];
extern UINT32 cmd_LCD_getbl[];
extern UINT32 cmd_Charge_en[];
extern UINT32 cmd_Charge_setCurrent[];
extern UINT32 cmd_Charge_geten[];
extern UINT32 cmd_Charge_getstat[];
// ------ reg 0x07 ----------
// 1. charge en
#define CHARGE_EN_MASK 0x08
#define CHARGE_EN_OFF 0x08
#define CHARGE_EN_ON 0x00
// 2. charge time
#define CHARGE_TIME_MASK 0xF0
#define CHARGE_TIME_1HOUR 0x00
#define CHARGE_TIME_2HOUR 0x10
#define CHARGE_TIME_3HOUR 0x20
#define CHARGE_TIME_4HOUR 0x30
#define CHARGE_TIME_5HOUR 0x40
#define CHARGE_TIME_6HOUR 0x50
#define CHARGE_TIME_7HOUR 0x60
#define CHARGE_TIME_8HOUR 0x70
#define CHARGE_TIME_9HOUR 0x80
#define CHARGE_TIME_10HOUR 0x90
#define CHARGE_TIME_11HOUR 0xA0
#define CHARGE_TIME_12HOUR 0xB0
#define CHARGE_TIME_13HOUR 0xC0
#define CHARGE_TIME_14HOUR 0xD0
#define CHARGE_TIME_15HOUR 0xE0
#define CHARGE_TIME_16HOUR 0xF0
// 3. charge input current limit
#define INPUT_CURRENT_LIMIT_MASK 0x03
#define INPUT_CURRENT_LIMIT_95mA 0x00
#define INPUT_CURRENT_LIMIT_475mA 0x02
#define INPUT_CURRENT_LIMIT_1A 0x01
#define INPUT_CURRENT_LIMIT_1_5A 0x03
//getstat: return reg 0x0A
#define CHARGE_STAT_MASK 0x1C
#define CHARGE_STAT_NOBATT 0x10
#define CHARGE_STAT_FULL 0x08
#define CHARGE_POWER_GOOD 0x04
#define BATT_TEMP_MASK 0xE0 // battery temperature mask
#define BATT_TEMP_UNDER_0 0xC0 // temperature < 0
#define BATT_TEMP_0_10 0x80 // temperature 0 ~ 10
#define BATT_TEMP_10_45 0x00 // temperature 10 ~ 45
#define BATT_TEMP_45_60 0x20 // temperature 45 ~ 60
#define BATT_TEMP_LARGE_60 0x60 // temperature > 60
#endif