Loading drivers/misc/mediatek/include/mt-plat/battery_common.h +1 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,7 @@ typedef struct { signed int charger_protect_status; signed int ICharging; signed int IBattery; signed int CURRENT_NOW; signed int temperature; signed int temperatureR; signed int temperatureV; Loading drivers/misc/mediatek/include/mt-plat/battery_meter.h +2 −0 Original line number Diff line number Diff line Loading @@ -344,6 +344,7 @@ extern int IMM_GetOneChannelValue_Cali(int Channel, int *voltage); extern signed int battery_meter_get_battery_voltage(kal_bool update); extern signed int battery_meter_get_charging_current_imm(void); extern signed int battery_meter_get_charging_current(void); extern signed int battery_meter_get_charger_current(void); extern signed int battery_meter_get_battery_current(void); extern kal_bool battery_meter_get_battery_current_sign(void); extern signed int battery_meter_get_car(void); Loading @@ -360,6 +361,7 @@ extern signed int battery_meter_get_battery_nPercent_UI_SOC(void); /* tracking p extern signed int battery_meter_get_tempR(signed int dwVolt); extern signed int battery_meter_get_tempV(void); extern signed int battery_meter_get_QMAX25(void); extern signed int battery_meter_get_VSense(void);/* isense voltage */ extern int wakeup_fg_algo(int flow_state); Loading drivers/power/mediatek/battery_common.c +71 −10 Original line number Diff line number Diff line Loading @@ -279,6 +279,7 @@ struct battery_data { int BAT_BatterySenseVoltage; int BAT_ISenseVoltage; int BAT_ChargerVoltage; int BAT_CURRENT_NOW; /* Dual battery */ int status_smb; int capacity_smb; Loading @@ -291,25 +292,39 @@ struct battery_data { static enum power_supply_property wireless_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_VOLTAGE_AVG, }; static enum power_supply_property ac_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_VOLTAGE_AVG, }; static enum power_supply_property usb_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_VOLTAGE_AVG, POWER_SUPPLY_PROP_VOLTAGE_MAX, }; static enum power_supply_property battery_props[] = { POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_TECHNOLOGY, POWER_SUPPLY_PROP_CAPACITY, POWER_SUPPLY_PROP_CURRENT_NOW, POWER_SUPPLY_PROP_CHARGE_COUNTER, /* Add for Battery Service */ POWER_SUPPLY_PROP_batt_vol, POWER_SUPPLY_PROP_batt_temp, POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_TEMP, /* Add for EM */ POWER_SUPPLY_PROP_TemperatureR, POWER_SUPPLY_PROP_TempBattVoltage, Loading Loading @@ -531,6 +546,12 @@ static int wireless_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_ONLINE: val->intval = data->WIRELESS_ONLINE; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->WIRELESS_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->WIRELESS_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading @@ -548,6 +569,12 @@ static int ac_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_ONLINE: val->intval = data->AC_ONLINE; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->AC_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->AC_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading Loading @@ -575,6 +602,18 @@ static int usb_get_property(struct power_supply *psy, val->intval = data->USB_ONLINE; #endif break; case POWER_SUPPLY_PROP_VOLTAGE_MAX: val->intval = 5000000; break; case POWER_SUPPLY_PROP_CURRENT_MAX: val->intval = 900000; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->USB_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->USB_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading @@ -589,6 +628,12 @@ static int battery_get_property(struct power_supply *psy, struct battery_data *data = container_of(psy, struct battery_data, psy); switch (psp) { case POWER_SUPPLY_PROP_MODEL_NAME: val->strval = "BL256"; break; case POWER_SUPPLY_PROP_MANUFACTURER: val->strval = "Lenovo"; break; case POWER_SUPPLY_PROP_STATUS: val->intval = data->BAT_STATUS; break; Loading @@ -604,10 +649,25 @@ static int battery_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_CAPACITY: val->intval = data->BAT_CAPACITY; break; case POWER_SUPPLY_PROP_batt_vol: case POWER_SUPPLY_PROP_CURRENT_NOW: val->intval = data->BAT_CURRENT_NOW; break; case POWER_SUPPLY_PROP_CHARGE_COUNTER: val->intval = battery_meter_get_QMAX25() * 1000; break; case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: val->intval = data->charge_full_design; break; case POWER_SUPPLY_PROP_VOLTAGE_NOW: val->intval = data->BAT_batt_vol; break; case POWER_SUPPLY_PROP_batt_temp: case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: val->intval = 4350000; break; case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: val->intval = 3400000; //TODO verify break; case POWER_SUPPLY_PROP_TEMP: val->intval = data->BAT_batt_temp; break; case POWER_SUPPLY_PROP_TemperatureR: Loading Loading @@ -644,11 +704,6 @@ static int battery_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_adjust_power: val->intval = data->adjust_power; break; //lenovo-sw mahj2 add for full charge capacity Begin case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: val->intval = data->charge_full_design; break; //lenovo-sw mahj2 add for full charge capacity End default: ret = -EINVAL; Loading Loading @@ -1660,6 +1715,7 @@ static void mt_battery_update_EM(struct battery_data *bat_data) bat_data->BAT_BatterySenseVoltage = BMT_status.bat_vol; bat_data->BAT_ISenseVoltage = BMT_status.Vsense; /* API */ bat_data->BAT_ChargerVoltage = BMT_status.charger_vol; bat_data->BAT_CURRENT_NOW = BMT_status.CURRENT_NOW * 100; /* 0.1mA to uA */ /* Dual battery */ bat_data->status_smb = g_status_smb; bat_data->capacity_smb = g_capacity_smb; Loading Loading @@ -2343,6 +2399,7 @@ void mt_battery_GetBatteryData(void) static signed int batteryTempBuffer[BATTERY_AVERAGE_SIZE]; static unsigned char batteryIndex; static signed int previous_SOC = -1; bool current_sign; bat_vol = battery_meter_get_battery_voltage(KAL_TRUE); Vsense = battery_meter_get_VSense(); Loading Loading @@ -2410,6 +2467,10 @@ void mt_battery_GetBatteryData(void) BMT_status.temperatureR = temperatureR; BMT_status.SOC = SOC; BMT_status.ZCV = ZCV; BMT_status.IBattery = battery_meter_get_battery_current(); current_sign = battery_meter_get_battery_current_sign(); BMT_status.IBattery *= (current_sign ? 1 : (-1)); BMT_status.CURRENT_NOW = BMT_status.IBattery; #if !defined(CUST_CAPACITY_OCV2CV_TRANSFORM) if (BMT_status.charger_exist == KAL_FALSE) { Loading drivers/power/mediatek/battery_meter.c +76 −0 Original line number Diff line number Diff line Loading @@ -3514,6 +3514,77 @@ signed int battery_meter_get_charging_current(void) #endif } signed int battery_meter_get_charger_current(void) { #ifdef DISABLE_CHARGING_CURRENT_MEASURE return 0; /* lenovo-sw mahj2 support meter charger current use charger ic Begin*/ #elif defined (CHAGER_CURRENT_USE_SWITCHIC_METER) signed int adc_current = 0; signed int charger_current = 0; adc_current = get_charger_current_adc(CHARGER_CURRENT_ADC); charger_current = adc_current*CHARGER_IC_KLIM/CHARGER_IC_RLIM; printk("battery_meter_get_charging_current : charger_current=%d \n",charger_current); return charger_current; /* lenovo-sw mahj2 support meter charger current use charger ic End*/ #elif !defined(EXTERNAL_SWCHR_SUPPORT) signed int ADC_I_SENSE_tmp[20] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; signed int ADC_I_SENSE_sum = 0; signed int ADC_I_SENSE = 0; int repeat = 20; int i = 0; int j = 0; signed int temp = 0; int ICharging = 0; int ret = 0; int val = 1; for (i = 0; i < repeat; i++) { val = 1; /* set avg times */ ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_ADC_V_I_SENSE, &val); ADC_I_SENSE_tmp[i] = val; ADC_I_SENSE_sum += ADC_I_SENSE_tmp[i]; } /* sorting I_SENSE */ for (i = 0; i < repeat; i++) { for (j = i; j < repeat; j++) { if (ADC_I_SENSE_tmp[j] < ADC_I_SENSE_tmp[i]) { temp = ADC_I_SENSE_tmp[j]; ADC_I_SENSE_tmp[j] = ADC_I_SENSE_tmp[i]; ADC_I_SENSE_tmp[i] = temp; } } } bm_print(BM_LOG_FULL, "[g_Get_I_Charging:I_SENSE]\r\n"); for (i = 0; i < repeat; i++) bm_print(BM_LOG_FULL, "%d,", ADC_I_SENSE_tmp[i]); bm_print(BM_LOG_FULL, "\r\n"); ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[0]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[1]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[18]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[19]; ADC_I_SENSE = ADC_I_SENSE_sum / (repeat - 4); bm_print(BM_LOG_FULL, "[g_Get_I_Charging] ADC_I_SENSE(Before)=%d\r\n", ADC_I_SENSE); bm_print(BM_LOG_FULL, "[g_Get_I_Charging] ADC_I_SENSE(After)=%d\r\n", ADC_I_SENSE); ICharging = (ADC_I_SENSE + g_I_SENSE_offset) * 1000 / batt_meter_cust_data.cust_r_sense; return ICharging; #else return 0; #endif } signed int battery_meter_get_battery_current(void) { int ret = 0; Loading Loading @@ -3917,6 +3988,11 @@ signed int battery_meter_get_VSense(void) #endif } signed int battery_meter_get_QMAX25(void) { return batt_meter_cust_data.q_max_pos_25; } /* ============================================================ // */ static ssize_t fgadc_log_write(struct file *filp, const char __user *buff, size_t len, loff_t *data) Loading Loading
drivers/misc/mediatek/include/mt-plat/battery_common.h +1 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,7 @@ typedef struct { signed int charger_protect_status; signed int ICharging; signed int IBattery; signed int CURRENT_NOW; signed int temperature; signed int temperatureR; signed int temperatureV; Loading
drivers/misc/mediatek/include/mt-plat/battery_meter.h +2 −0 Original line number Diff line number Diff line Loading @@ -344,6 +344,7 @@ extern int IMM_GetOneChannelValue_Cali(int Channel, int *voltage); extern signed int battery_meter_get_battery_voltage(kal_bool update); extern signed int battery_meter_get_charging_current_imm(void); extern signed int battery_meter_get_charging_current(void); extern signed int battery_meter_get_charger_current(void); extern signed int battery_meter_get_battery_current(void); extern kal_bool battery_meter_get_battery_current_sign(void); extern signed int battery_meter_get_car(void); Loading @@ -360,6 +361,7 @@ extern signed int battery_meter_get_battery_nPercent_UI_SOC(void); /* tracking p extern signed int battery_meter_get_tempR(signed int dwVolt); extern signed int battery_meter_get_tempV(void); extern signed int battery_meter_get_QMAX25(void); extern signed int battery_meter_get_VSense(void);/* isense voltage */ extern int wakeup_fg_algo(int flow_state); Loading
drivers/power/mediatek/battery_common.c +71 −10 Original line number Diff line number Diff line Loading @@ -279,6 +279,7 @@ struct battery_data { int BAT_BatterySenseVoltage; int BAT_ISenseVoltage; int BAT_ChargerVoltage; int BAT_CURRENT_NOW; /* Dual battery */ int status_smb; int capacity_smb; Loading @@ -291,25 +292,39 @@ struct battery_data { static enum power_supply_property wireless_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_VOLTAGE_AVG, }; static enum power_supply_property ac_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_VOLTAGE_AVG, }; static enum power_supply_property usb_props[] = { POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_CURRENT_AVG, POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_VOLTAGE_AVG, POWER_SUPPLY_PROP_VOLTAGE_MAX, }; static enum power_supply_property battery_props[] = { POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_TECHNOLOGY, POWER_SUPPLY_PROP_CAPACITY, POWER_SUPPLY_PROP_CURRENT_NOW, POWER_SUPPLY_PROP_CHARGE_COUNTER, /* Add for Battery Service */ POWER_SUPPLY_PROP_batt_vol, POWER_SUPPLY_PROP_batt_temp, POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_TEMP, /* Add for EM */ POWER_SUPPLY_PROP_TemperatureR, POWER_SUPPLY_PROP_TempBattVoltage, Loading Loading @@ -531,6 +546,12 @@ static int wireless_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_ONLINE: val->intval = data->WIRELESS_ONLINE; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->WIRELESS_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->WIRELESS_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading @@ -548,6 +569,12 @@ static int ac_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_ONLINE: val->intval = data->AC_ONLINE; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->AC_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->AC_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading Loading @@ -575,6 +602,18 @@ static int usb_get_property(struct power_supply *psy, val->intval = data->USB_ONLINE; #endif break; case POWER_SUPPLY_PROP_VOLTAGE_MAX: val->intval = 5000000; break; case POWER_SUPPLY_PROP_CURRENT_MAX: val->intval = 900000; break; case POWER_SUPPLY_PROP_CURRENT_AVG: val->intval = data->USB_ONLINE ? battery_meter_get_charger_current() * 1000 : 0; break; case POWER_SUPPLY_PROP_VOLTAGE_AVG: val->intval = data->USB_ONLINE ? battery_meter_get_charger_voltage() * 1000 : 0; break; default: ret = -EINVAL; break; Loading @@ -589,6 +628,12 @@ static int battery_get_property(struct power_supply *psy, struct battery_data *data = container_of(psy, struct battery_data, psy); switch (psp) { case POWER_SUPPLY_PROP_MODEL_NAME: val->strval = "BL256"; break; case POWER_SUPPLY_PROP_MANUFACTURER: val->strval = "Lenovo"; break; case POWER_SUPPLY_PROP_STATUS: val->intval = data->BAT_STATUS; break; Loading @@ -604,10 +649,25 @@ static int battery_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_CAPACITY: val->intval = data->BAT_CAPACITY; break; case POWER_SUPPLY_PROP_batt_vol: case POWER_SUPPLY_PROP_CURRENT_NOW: val->intval = data->BAT_CURRENT_NOW; break; case POWER_SUPPLY_PROP_CHARGE_COUNTER: val->intval = battery_meter_get_QMAX25() * 1000; break; case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: val->intval = data->charge_full_design; break; case POWER_SUPPLY_PROP_VOLTAGE_NOW: val->intval = data->BAT_batt_vol; break; case POWER_SUPPLY_PROP_batt_temp: case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: val->intval = 4350000; break; case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: val->intval = 3400000; //TODO verify break; case POWER_SUPPLY_PROP_TEMP: val->intval = data->BAT_batt_temp; break; case POWER_SUPPLY_PROP_TemperatureR: Loading Loading @@ -644,11 +704,6 @@ static int battery_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_adjust_power: val->intval = data->adjust_power; break; //lenovo-sw mahj2 add for full charge capacity Begin case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: val->intval = data->charge_full_design; break; //lenovo-sw mahj2 add for full charge capacity End default: ret = -EINVAL; Loading Loading @@ -1660,6 +1715,7 @@ static void mt_battery_update_EM(struct battery_data *bat_data) bat_data->BAT_BatterySenseVoltage = BMT_status.bat_vol; bat_data->BAT_ISenseVoltage = BMT_status.Vsense; /* API */ bat_data->BAT_ChargerVoltage = BMT_status.charger_vol; bat_data->BAT_CURRENT_NOW = BMT_status.CURRENT_NOW * 100; /* 0.1mA to uA */ /* Dual battery */ bat_data->status_smb = g_status_smb; bat_data->capacity_smb = g_capacity_smb; Loading Loading @@ -2343,6 +2399,7 @@ void mt_battery_GetBatteryData(void) static signed int batteryTempBuffer[BATTERY_AVERAGE_SIZE]; static unsigned char batteryIndex; static signed int previous_SOC = -1; bool current_sign; bat_vol = battery_meter_get_battery_voltage(KAL_TRUE); Vsense = battery_meter_get_VSense(); Loading Loading @@ -2410,6 +2467,10 @@ void mt_battery_GetBatteryData(void) BMT_status.temperatureR = temperatureR; BMT_status.SOC = SOC; BMT_status.ZCV = ZCV; BMT_status.IBattery = battery_meter_get_battery_current(); current_sign = battery_meter_get_battery_current_sign(); BMT_status.IBattery *= (current_sign ? 1 : (-1)); BMT_status.CURRENT_NOW = BMT_status.IBattery; #if !defined(CUST_CAPACITY_OCV2CV_TRANSFORM) if (BMT_status.charger_exist == KAL_FALSE) { Loading
drivers/power/mediatek/battery_meter.c +76 −0 Original line number Diff line number Diff line Loading @@ -3514,6 +3514,77 @@ signed int battery_meter_get_charging_current(void) #endif } signed int battery_meter_get_charger_current(void) { #ifdef DISABLE_CHARGING_CURRENT_MEASURE return 0; /* lenovo-sw mahj2 support meter charger current use charger ic Begin*/ #elif defined (CHAGER_CURRENT_USE_SWITCHIC_METER) signed int adc_current = 0; signed int charger_current = 0; adc_current = get_charger_current_adc(CHARGER_CURRENT_ADC); charger_current = adc_current*CHARGER_IC_KLIM/CHARGER_IC_RLIM; printk("battery_meter_get_charging_current : charger_current=%d \n",charger_current); return charger_current; /* lenovo-sw mahj2 support meter charger current use charger ic End*/ #elif !defined(EXTERNAL_SWCHR_SUPPORT) signed int ADC_I_SENSE_tmp[20] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; signed int ADC_I_SENSE_sum = 0; signed int ADC_I_SENSE = 0; int repeat = 20; int i = 0; int j = 0; signed int temp = 0; int ICharging = 0; int ret = 0; int val = 1; for (i = 0; i < repeat; i++) { val = 1; /* set avg times */ ret = battery_meter_ctrl(BATTERY_METER_CMD_GET_ADC_V_I_SENSE, &val); ADC_I_SENSE_tmp[i] = val; ADC_I_SENSE_sum += ADC_I_SENSE_tmp[i]; } /* sorting I_SENSE */ for (i = 0; i < repeat; i++) { for (j = i; j < repeat; j++) { if (ADC_I_SENSE_tmp[j] < ADC_I_SENSE_tmp[i]) { temp = ADC_I_SENSE_tmp[j]; ADC_I_SENSE_tmp[j] = ADC_I_SENSE_tmp[i]; ADC_I_SENSE_tmp[i] = temp; } } } bm_print(BM_LOG_FULL, "[g_Get_I_Charging:I_SENSE]\r\n"); for (i = 0; i < repeat; i++) bm_print(BM_LOG_FULL, "%d,", ADC_I_SENSE_tmp[i]); bm_print(BM_LOG_FULL, "\r\n"); ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[0]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[1]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[18]; ADC_I_SENSE_sum -= ADC_I_SENSE_tmp[19]; ADC_I_SENSE = ADC_I_SENSE_sum / (repeat - 4); bm_print(BM_LOG_FULL, "[g_Get_I_Charging] ADC_I_SENSE(Before)=%d\r\n", ADC_I_SENSE); bm_print(BM_LOG_FULL, "[g_Get_I_Charging] ADC_I_SENSE(After)=%d\r\n", ADC_I_SENSE); ICharging = (ADC_I_SENSE + g_I_SENSE_offset) * 1000 / batt_meter_cust_data.cust_r_sense; return ICharging; #else return 0; #endif } signed int battery_meter_get_battery_current(void) { int ret = 0; Loading Loading @@ -3917,6 +3988,11 @@ signed int battery_meter_get_VSense(void) #endif } signed int battery_meter_get_QMAX25(void) { return batt_meter_cust_data.q_max_pos_25; } /* ============================================================ // */ static ssize_t fgadc_log_write(struct file *filp, const char __user *buff, size_t len, loff_t *data) Loading