aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/power/supply/power_supply_sysfs.c1
-rwxr-xr-xdrivers/power/supply/qcom/bq27541_fuelgauger.c30
-rw-r--r--drivers/power/supply/qcom/qpnp-smb2.c13
-rw-r--r--drivers/power/supply/qcom/smb-lib.c51
-rw-r--r--drivers/power/supply/qcom/smb-lib.h4
-rw-r--r--include/linux/power_supply.h1
6 files changed, 49 insertions, 51 deletions
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index feafbe297951..686d102b14c8 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -374,7 +374,6 @@ static struct device_attribute power_supply_attrs[] = {
POWER_SUPPLY_ATTR(esr_nominal),
POWER_SUPPLY_ATTR(soh),
POWER_SUPPLY_ATTR(qc_opti_disable),
- POWER_SUPPLY_ATTR(force_recharge),
POWER_SUPPLY_ATTR(fcc_stepper_enable),
POWER_SUPPLY_ATTR(cc_soc),
POWER_SUPPLY_ATTR(qg_vbms_mode),
diff --git a/drivers/power/supply/qcom/bq27541_fuelgauger.c b/drivers/power/supply/qcom/bq27541_fuelgauger.c
index d0456d78f130..8fa7f3e1be21 100755
--- a/drivers/power/supply/qcom/bq27541_fuelgauger.c
+++ b/drivers/power/supply/qcom/bq27541_fuelgauger.c
@@ -231,10 +231,8 @@ struct bq27541_device_info {
int retry_count;
/* Add for get right soc when sleep long time */
int soc_pre;
- int batt_vol_pre;
+ int batt_vol_pre;
int current_pre;
- int cap_pre;
- int remain_pre;
int health_pre;
int get_over_temp;
unsigned long rtc_resume_time;
@@ -268,10 +266,6 @@ struct bq27541_device_info {
/*add by yangrujin@bsp 2016/3/16, reduce bq resume time*/
#include <linux/workqueue.h>
-/* add to update fg node value on panel event */
-int panel_flag1;
-int panel_flag2;
-
struct update_pre_capacity_data {
struct delayed_work work;
struct workqueue_struct *workqueue;
@@ -902,11 +896,7 @@ static int bq27541_remaining_capacity(struct bq27541_device_info *di)
int ret;
int cap = 0;
- /* Add for get right soc when sleep long time */
- if (atomic_read(&di->suspended) == 1)
- return di->remain_pre;
-
- if (di->allow_reading || panel_flag1) {
+ if (di->allow_reading) {
#ifdef CONFIG_GAUGE_BQ27411
/* david.liu@bsp, 20161004 Add BQ27411 support */
ret = bq27541_read(di->cmd_addr.reg_rm,
@@ -918,13 +908,8 @@ static int bq27541_remaining_capacity(struct bq27541_device_info *di)
pr_err("error reading capacity.\n");
return ret;
}
- if (panel_flag1)
- panel_flag1 = 0;
- } else {
- return di->remain_pre;
}
- di->remain_pre = cap;
return cap;
}
@@ -933,11 +918,7 @@ static int bq27541_full_chg_capacity(struct bq27541_device_info *di)
int ret;
int cap = 0;
- /* Add for get right soc when sleep long time */
- if (atomic_read(&di->suspended) == 1)
- return di->cap_pre;
-
- if (di->allow_reading || panel_flag2) {
+ if (di->allow_reading) {
#ifdef CONFIG_GAUGE_BQ27411
/* david.liu@bsp, 20161004 Add BQ27411 support */
ret = bq27541_read(BQ27411_REG_FCC,
@@ -949,13 +930,8 @@ static int bq27541_full_chg_capacity(struct bq27541_device_info *di)
pr_err("error reading full chg capacity.\n");
return ret;
}
- if (panel_flag2)
- panel_flag2 = 0;
- } else {
- return di->cap_pre;
}
- di->cap_pre = cap;
return cap;
}
diff --git a/drivers/power/supply/qcom/qpnp-smb2.c b/drivers/power/supply/qcom/qpnp-smb2.c
index 962d805fa69e..37077a52ed06 100644
--- a/drivers/power/supply/qcom/qpnp-smb2.c
+++ b/drivers/power/supply/qcom/qpnp-smb2.c
@@ -1262,7 +1262,6 @@ static enum power_supply_property smb2_batt_props[] = {
POWER_SUPPLY_PROP_CHARGE_FULL,
POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
- POWER_SUPPLY_PROP_FORCE_RECHARGE,
POWER_SUPPLY_PROP_FCC_STEPPER_ENABLE,
POWER_SUPPLY_PROP_OP_DISABLE_CHARGE,
};
@@ -1417,9 +1416,6 @@ static int smb2_batt_get_prop(struct power_supply *psy,
case POWER_SUPPLY_PROP_CURRENT_NOW:
rc = smblib_get_prop_from_bms(chg, psp, val);
break;
- case POWER_SUPPLY_PROP_FORCE_RECHARGE:
- val->intval = 0;
- break;
case POWER_SUPPLY_PROP_FCC_STEPPER_ENABLE:
val->intval = chg->fcc_stepper_enable;
break;
@@ -1581,15 +1577,6 @@ static int smb2_batt_set_prop(struct power_supply *psy,
chg->die_health = val->intval;
power_supply_changed(chg->batt_psy);
break;
- case POWER_SUPPLY_PROP_FORCE_RECHARGE:
- /* toggle charging to force recharge */
- vote(chg->chg_disable_votable, FORCE_RECHARGE_VOTER,
- true, 0);
- /* charge disable delay */
- msleep(50);
- vote(chg->chg_disable_votable, FORCE_RECHARGE_VOTER,
- false, 0);
- break;
default:
rc = -EINVAL;
}
diff --git a/drivers/power/supply/qcom/smb-lib.c b/drivers/power/supply/qcom/smb-lib.c
index cfe810009fb7..b0bdcd9bfd02 100644
--- a/drivers/power/supply/qcom/smb-lib.c
+++ b/drivers/power/supply/qcom/smb-lib.c
@@ -2190,6 +2190,51 @@ int smblib_get_prop_input_current_limited(struct smb_charger *chg,
return 0;
}
+int smblib_get_prop_batt_voltage_now(struct smb_charger *chg,
+ union power_supply_propval *val)
+{
+ int rc;
+
+ if (!chg->bms_psy)
+ return -EINVAL;
+
+ rc = power_supply_get_property(chg->bms_psy,
+ POWER_SUPPLY_PROP_VOLTAGE_NOW, val);
+ return rc;
+}
+
+int smblib_get_prop_batt_current_now(struct smb_charger *chg,
+ union power_supply_propval *val)
+{
+ int rc;
+
+ if (!chg->bms_psy)
+ return -EINVAL;
+
+ rc = power_supply_get_property(chg->bms_psy,
+ POWER_SUPPLY_PROP_CURRENT_NOW, val);
+ return rc;
+}
+
+int smblib_get_prop_batt_temp(struct smb_charger *chg,
+ union power_supply_propval *val)
+{
+ int rc;
+
+ if (!chg->bms_psy)
+ return -EINVAL;
+
+/* david.liu@bsp, 20171122 Fix fake battery temperature */
+ if (chg->use_fake_temp) {
+ val->intval = chg->fake_temp;
+ return 0;
+ }
+
+ rc = power_supply_get_property(chg->bms_psy,
+ POWER_SUPPLY_PROP_TEMP, val);
+ return rc;
+}
+
int smblib_get_prop_batt_charge_done(struct smb_charger *chg,
union power_supply_propval *val)
{
@@ -6411,8 +6456,7 @@ static void op_temp_region_charging_en(struct smb_charger *chg, int vbatmax)
int vbat_mv = 0;
union power_supply_propval pval;
- smblib_get_prop_from_bms(chg,
- POWER_SUPPLY_PROP_VOLTAGE_NOW, &pval);
+ smblib_get_prop_batt_voltage_now(chg, &pval);
vbat_mv = pval.intval/1000;
pr_info("%s vbat_mv =%d\n",__func__, vbat_mv);
if (vbat_mv < vbatmax)
@@ -6995,9 +7039,6 @@ static int msm_drm_notifier_callback(struct notifier_block *self,
POWER_SUPPLY_PROP_UPDATE_LCD_IS_OFF, 1);
chip->oem_lcd_is_on = false;
}
- /* add to update fg node value on panel event */
- panel_flag1 = 1;
- panel_flag2 = 1;
}
return 0;
diff --git a/drivers/power/supply/qcom/smb-lib.h b/drivers/power/supply/qcom/smb-lib.h
index 2829049ba1bb..8b4fd41ff345 100644
--- a/drivers/power/supply/qcom/smb-lib.h
+++ b/drivers/power/supply/qcom/smb-lib.h
@@ -96,7 +96,6 @@ enum print_reason {
#define FG_ESR_VOTER "FG_ESR_VOTER"
#define FCC_STEPPER_VOTER "FCC_STEPPER_VOTER"
#define PD_NOT_SUPPORTED_VOTER "PD_NOT_SUPPORTED_VOTER"
-#define FORCE_RECHARGE_VOTER "FORCE_RECHARGE_VOTER"
#define VCONN_MAX_ATTEMPTS 3
#define OTG_MAX_ATTEMPTS 3
@@ -634,9 +633,6 @@ bool op_get_fastchg_ing(struct smb_charger *chg);
bool get_prop_fastchg_status(struct smb_charger *chg);
int op_usb_icl_set(struct smb_charger *chg, int icl_ua);
int op_get_aicl_result(struct smb_charger *chg);
-/* add to update fg node value on panel event */
-extern int panel_flag1;
-extern int panel_flag2;
int plugin_update(struct smb_charger *chg);
void op_disconnect_vbus(struct smb_charger *chg, bool enable);
int smblib_set_prop_input_current_limited(struct smb_charger *chg,
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index 722a90076fd9..632d2912a6ac 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -326,7 +326,6 @@ enum power_supply_property {
POWER_SUPPLY_PROP_ESR_NOMINAL,
POWER_SUPPLY_PROP_SOH,
POWER_SUPPLY_PROP_QC_OPTI_DISABLE,
- POWER_SUPPLY_PROP_FORCE_RECHARGE,
POWER_SUPPLY_PROP_FCC_STEPPER_ENABLE,
POWER_SUPPLY_PROP_CC_SOC,
POWER_SUPPLY_PROP_QG_VBMS_MODE,