// ============================================================ // static kal_uint32 charging_hw_init_bq24196(void *data) { kal_uint32 status = STATUS_OK; upmu_set_rg_bc11_bb_ctrl(1); //BC11_BB_CTRL upmu_set_rg_bc11_rst(1); //BC11_RST bq24196_set_en_hiz(0x0); bq24196_set_vindpm(0xA); //VIN DPM check 4.68V bq24196_set_reg_rst(0x0); bq24196_set_wdt_rst(0x1); //Kick watchdog bq24196_set_sys_min(0x5); //Minimum system voltage 3.5V bq24196_set_iprechg(0x3); //Precharge current 512mA bq24196_set_iterm(0x0); //Termination current 128mA bq24196_set_vreg(0x2C); //VREG 4.208V bq24196_set_batlowv(0x1); //BATLOWV 3.0V bq24196_set_vrechg(0x0); //VRECHG 0.1V (4.108V) bq24196_set_en_term(0x1); //Enable termination bq24196_set_term_stat(0x0); //Match ITERM bq24196_set_watchdog(0x1); //WDT 40s bq24196_set_en_timer(0x0); //Disable charge timer bq24196_set_int_mask(0x0); //Disable fault interrupt return status; }
static kal_uint32 charging_hw_init(void *data) { kal_uint32 status = STATUS_OK; bq24196_set_en_hiz(0x0); bq24196_set_vindpm(0xA); //VIN DPM check 4.68V bq24196_set_reg_rst(0x0); bq24196_set_wdt_rst(0x1); //Kick watchdog bq24196_set_sys_min(0x5); //Minimum system voltage 3.5V bq24196_set_iprechg(0x3); //Precharge current 512mA bq24196_set_iterm(0x0); //Termination current 128mA #if defined(HIGH_BATTERY_VOLTAGE_SUPPORT) bq24196_set_vreg(0x32); //VREG 4.304V #else bq24196_set_vreg(0x2C); //VREG 4.208V #endif bq24196_set_batlowv(0x1); //BATLOWV 3.0V bq24196_set_vrechg(0x0); //VRECHG 0.1V (4.108V) bq24196_set_en_term(0x1); //Enable termination bq24196_set_term_stat(0x0); //Match ITERM bq24196_set_watchdog(0x1); //WDT 40s bq24196_set_en_timer(0x0); //Disable charge timer bq24196_set_int_mask(0x0); //Disable fault interrupt #if defined(MTK_WIRELESS_CHARGER_SUPPORT) if(wireless_charger_gpio_number!=0) { mt_set_gpio_mode(wireless_charger_gpio_number,0); // 0:GPIO mode mt_set_gpio_dir(wireless_charger_gpio_number,0); // 0: input, 1: output } #endif #ifdef CONFIG_MTK_DUAL_INPUT_CHARGER_SUPPORT mt_set_gpio_mode(vin_sel_gpio_number,0); // 0:GPIO mode mt_set_gpio_dir(vin_sel_gpio_number,0); // 0: input, 1: output #endif return status; }
static kal_uint32 charging_set_cv_voltage_bq24196(void *data) { kal_uint32 status = STATUS_OK; kal_uint16 register_value; kal_uint32 cv_value = *(kal_uint32 *)(data); if(cv_value == BATTERY_VOLT_04_200000_V) { //use nearest value cv_value = 4208000; } register_value = charging_parameter_to_value(VBAT_CV_VTH_BQ24196, GETARRAYNUM(VBAT_CV_VTH_BQ24196), cv_value); bq24196_set_vreg(register_value); return status; }
static kal_uint32 charging_hw_init(void *data) { kal_uint32 status = STATUS_OK; upmu_set_rg_bc11_bb_ctrl(1); //BC11_BB_CTRL upmu_set_rg_bc11_rst(1); //BC11_RST #if 0 //no use //pull PSEL low mt_set_gpio_mode(GPIO_CHR_PSEL_PIN,GPIO_MODE_GPIO); mt_set_gpio_dir(GPIO_CHR_PSEL_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CHR_PSEL_PIN,GPIO_OUT_ZERO); #endif //pull CE low #if 0 //no use mt_set_gpio_mode(GPIO_CHR_CE_PIN,GPIO_MODE_GPIO); mt_set_gpio_dir(GPIO_CHR_CE_PIN,GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CHR_CE_PIN,GPIO_OUT_ZERO); #endif //battery_xlog_printk(BAT_LOG_FULL, "gpio_number=0x%x,gpio_on_mode=%d,gpio_off_mode=%d\n", gpio_number, gpio_on_mode, gpio_off_mode); bq24196_set_en_hiz(0x0); bq24196_set_vindpm(0xA); //VIN DPM check 4.68V bq24196_set_reg_rst(0x0); bq24196_set_wdt_rst(0x1); //Kick watchdog bq24196_set_sys_min(0x5); //Minimum system voltage 3.5V bq24196_set_iprechg(0x3); //Precharge current 512mA bq24196_set_iterm(0x0); //Termination current 128mA bq24196_set_vreg(0x2C); //VREG 4.208V bq24196_set_batlowv(0x1); //BATLOWV 3.0V bq24196_set_vrechg(0x0); //VRECHG 0.1V (4.108V) bq24196_set_en_term(0x1); //Enable termination bq24196_set_term_stat(0x0); //Match ITERM bq24196_set_watchdog(0x1); //WDT 40s bq24196_set_en_timer(0x0); //Disable charge timer bq24196_set_int_mask(0x0); //Disable fault interrupt return status; }
static kal_uint32 charging_set_cv_voltage(void *data) { kal_uint32 status = STATUS_OK; kal_uint16 register_value; kal_uint32 cv_value = *(kal_uint32 *)(data); //if(cv_value == BATTERY_VOLT_04_200000_V) //{ #if defined(HIGH_BATTERY_VOLTAGE_SUPPORT) //highest of voltage will be 4.3V, because powerpath limitation cv_value = 4304000; #else //use nearest value cv_value = 4208000; #endif //} register_value = charging_parameter_to_value(VBAT_CV_VTH, GETARRAYNUM(VBAT_CV_VTH), cv_value); bq24196_set_vreg(register_value); return status; }
static kal_uint32 charging_set_cv_voltage(void *data) { kal_uint32 status = STATUS_OK; kal_uint32 array_size; kal_uint32 set_cv_voltage; kal_uint16 register_value; kal_uint32 cv_value = *(kal_uint32 *)(data); static kal_int16 pre_register_value = -1; #if defined(HIGH_BATTERY_VOLTAGE_SUPPORT) //highest of voltage will be 4.3V, because powerpath limitation if(cv_value >= BATTERY_VOLT_04_300000_V) cv_value = 4304000; #endif //use nearest value if(BATTERY_VOLT_04_200000_V == cv_value) cv_value = 4208000; array_size = GETARRAYNUM(VBAT_CV_VTH); set_cv_voltage = bmt_find_closest_level(VBAT_CV_VTH, array_size, cv_value); register_value = charging_parameter_to_value(VBAT_CV_VTH, array_size, set_cv_voltage); //PCB workaround if(mt6325_upmu_get_swcid() == PMIC6325_E1_CID_CODE) { #if defined(CV_E1_INTERNAL) bq24196_set_vreg(0x1F);//4.0v #else bq24196_set_vreg(0x14);//3.8v #endif battery_log(BAT_LOG_CRTI, "[charging_set_cv_voltage] set low CV by 6325 E1\n"); } else { if(is_mt6311_exist()) { if(mt6311_get_chip_id()==PMIC6311_E1_CID_CODE) { #if defined(CV_E1_INTERNAL) bq24196_set_vreg(0x1F);//4.0v #else bq24196_set_vreg(0x14);//3.8v #endif battery_log(BAT_LOG_CRTI, "[charging_set_cv_voltage] set low CV by 6311 E1\n"); } else { if (pre_register_value != register_value) { battery_log(BAT_LOG_CRTI, "[charging_set_cv_voltage] disable charging\n"); bq24196_set_chg_config(0); } bq24196_set_vreg(register_value); if (pre_register_value != register_value) bq24196_set_chg_config(1); pre_register_value = register_value; } } else { bq24196_set_vreg(register_value); } } return status; }