Loading Documentation/devicetree/bindings/power/qpnp-charger.txt +3 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,9 @@ Parent node optional properties: - qcom,use-external-rsense A boolean that controls whether BMS will use an external sensor resistor instead of the default RDS of the batfet. - qcom,vbatdet-maxerr-mv This property in mV is a hystersis value for the charge resume voltage property qcom,vbatdet-delta-mv. If this property is not defined it defaults to 50 mV. Sub node required structure: - A qcom,chg node must be a child of an SPMI node that has specified Loading drivers/power/qpnp-charger.c +9 −2 Original line number Diff line number Diff line Loading @@ -249,6 +249,7 @@ struct qpnp_chg_regulator { * @max_voltage_mv: the max volts the batt should be charged up to * @min_voltage_mv: min battery voltage before turning the FET on * @batt_weak_voltage_mv: Weak battery voltage threshold * @vbatdet_max_err_mv resume voltage hysterisis * @max_bat_chg_current: maximum battery charge current in mA * @warm_bat_chg_ma: warm battery maximum charge current in mA * @cool_bat_chg_ma: cool battery maximum charge current in mA Loading Loading @@ -326,6 +327,7 @@ struct qpnp_chg_chip { unsigned int max_voltage_mv; unsigned int min_voltage_mv; unsigned int batt_weak_voltage_mv; unsigned int vbatdet_max_err_mv; int prev_usb_max_ma; int set_vddmax_mv; int delta_vddmax_mv; Loading Loading @@ -3151,12 +3153,13 @@ qpnp_eoc_work(struct work_struct *work) vbat_lower_than_vbatdet = !(chg_sts & VBAT_DET_LOW_IRQ); if (vbat_lower_than_vbatdet && vbat_mv < (chip->max_voltage_mv - chip->resume_delta_mv - VBATDET_MAX_ERR_MV)) { - chip->vbatdet_max_err_mv)) { vbat_low_count++; pr_debug("woke up too early vbat_mv = %d, max_mv = %d, resume_mv = %d tolerance_mv = %d low_count = %d\n", vbat_mv, chip->max_voltage_mv, chip->resume_delta_mv, VBATDET_MAX_ERR_MV, vbat_low_count); chip->vbatdet_max_err_mv, vbat_low_count); if (vbat_low_count >= CONSECUTIVE_COUNT) { pr_debug("woke up too early stopping\n"); qpnp_chg_enable_irq(&chip->chg_vbatdet_lo); Loading Loading @@ -4394,6 +4397,7 @@ qpnp_charger_read_dt_props(struct qpnp_chg_chip *chip) OF_PROP_READ(chip, cold_batt_p, "batt-cold-percentage", rc, 1); OF_PROP_READ(chip, soc_resume_limit, "resume-soc", rc, 1); OF_PROP_READ(chip, batt_weak_voltage_mv, "vbatweak-mv", rc, 1); OF_PROP_READ(chip, vbatdet_max_err_mv, "vbatdet-maxerr-mv", rc, 1); if (rc) return rc; Loading @@ -4412,6 +4416,9 @@ qpnp_charger_read_dt_props(struct qpnp_chg_chip *chip) } } if (!chip->vbatdet_max_err_mv) chip->vbatdet_max_err_mv = VBATDET_MAX_ERR_MV; /* Look up JEITA compliance parameters if cool and warm temp provided */ if (chip->cool_bat_decidegc || chip->warm_bat_decidegc) { chip->adc_tm_dev = qpnp_get_adc_tm(chip->dev, "chg"); Loading Loading
Documentation/devicetree/bindings/power/qpnp-charger.txt +3 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,9 @@ Parent node optional properties: - qcom,use-external-rsense A boolean that controls whether BMS will use an external sensor resistor instead of the default RDS of the batfet. - qcom,vbatdet-maxerr-mv This property in mV is a hystersis value for the charge resume voltage property qcom,vbatdet-delta-mv. If this property is not defined it defaults to 50 mV. Sub node required structure: - A qcom,chg node must be a child of an SPMI node that has specified Loading
drivers/power/qpnp-charger.c +9 −2 Original line number Diff line number Diff line Loading @@ -249,6 +249,7 @@ struct qpnp_chg_regulator { * @max_voltage_mv: the max volts the batt should be charged up to * @min_voltage_mv: min battery voltage before turning the FET on * @batt_weak_voltage_mv: Weak battery voltage threshold * @vbatdet_max_err_mv resume voltage hysterisis * @max_bat_chg_current: maximum battery charge current in mA * @warm_bat_chg_ma: warm battery maximum charge current in mA * @cool_bat_chg_ma: cool battery maximum charge current in mA Loading Loading @@ -326,6 +327,7 @@ struct qpnp_chg_chip { unsigned int max_voltage_mv; unsigned int min_voltage_mv; unsigned int batt_weak_voltage_mv; unsigned int vbatdet_max_err_mv; int prev_usb_max_ma; int set_vddmax_mv; int delta_vddmax_mv; Loading Loading @@ -3151,12 +3153,13 @@ qpnp_eoc_work(struct work_struct *work) vbat_lower_than_vbatdet = !(chg_sts & VBAT_DET_LOW_IRQ); if (vbat_lower_than_vbatdet && vbat_mv < (chip->max_voltage_mv - chip->resume_delta_mv - VBATDET_MAX_ERR_MV)) { - chip->vbatdet_max_err_mv)) { vbat_low_count++; pr_debug("woke up too early vbat_mv = %d, max_mv = %d, resume_mv = %d tolerance_mv = %d low_count = %d\n", vbat_mv, chip->max_voltage_mv, chip->resume_delta_mv, VBATDET_MAX_ERR_MV, vbat_low_count); chip->vbatdet_max_err_mv, vbat_low_count); if (vbat_low_count >= CONSECUTIVE_COUNT) { pr_debug("woke up too early stopping\n"); qpnp_chg_enable_irq(&chip->chg_vbatdet_lo); Loading Loading @@ -4394,6 +4397,7 @@ qpnp_charger_read_dt_props(struct qpnp_chg_chip *chip) OF_PROP_READ(chip, cold_batt_p, "batt-cold-percentage", rc, 1); OF_PROP_READ(chip, soc_resume_limit, "resume-soc", rc, 1); OF_PROP_READ(chip, batt_weak_voltage_mv, "vbatweak-mv", rc, 1); OF_PROP_READ(chip, vbatdet_max_err_mv, "vbatdet-maxerr-mv", rc, 1); if (rc) return rc; Loading @@ -4412,6 +4416,9 @@ qpnp_charger_read_dt_props(struct qpnp_chg_chip *chip) } } if (!chip->vbatdet_max_err_mv) chip->vbatdet_max_err_mv = VBATDET_MAX_ERR_MV; /* Look up JEITA compliance parameters if cool and warm temp provided */ if (chip->cool_bat_decidegc || chip->warm_bat_decidegc) { chip->adc_tm_dev = qpnp_get_adc_tm(chip->dev, "chg"); Loading