Hi, On Wed, Sep 02, 2020 at 05:58:16PM +0100, Alex Dewar wrote: > check_charging_duration() contains some copy-pasted code, which makes it > less readable. Refactor the function to be a bit tidier. > > I've also fixed a couple of typos. > > Signed-off-by: Alex Dewar > --- > drivers/power/supply/charger-manager.c | 39 +++++++++----------------- > 1 file changed, 14 insertions(+), 25 deletions(-) > > diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c > index 07992821e252..67c7b1fb6601 100644 > --- a/drivers/power/supply/charger-manager.c > +++ b/drivers/power/supply/charger-manager.c > @@ -443,42 +443,31 @@ static int try_charger_enable(struct charger_manager *cm, bool enable) > * check_charging_duration - Monitor charging/discharging duration > * @cm: the Charger Manager representing the battery. > * > - * If whole charging duration exceed 'charging_max_duration_ms', > + * If whole charging duration exceeds 'charging_max_duration_ms', > * cm stop charging to prevent overcharge/overheat. If discharging > - * duration exceed 'discharging _max_duration_ms', charger cable is > + * duration exceeds 'discharging _max_duration_ms', charger cable is > * attached, after full-batt, cm start charging to maintain fully > * charged state for battery. > */ > static int check_charging_duration(struct charger_manager *cm) > { > struct charger_desc *desc = cm->desc; > - u64 curr = ktime_to_ms(ktime_get()); > u64 duration; > - int ret = false; > > - if (!desc->charging_max_duration_ms && > - !desc->discharging_max_duration_ms) > - return ret; > - > - if (cm->charger_enabled) { > - duration = curr - cm->charging_start_time; > - > - if (duration > desc->charging_max_duration_ms) { > - dev_info(cm->dev, "Charging duration exceed %ums\n", > - desc->charging_max_duration_ms); > - ret = true; > - } > - } else if (cm->battery_status == POWER_SUPPLY_STATUS_NOT_CHARGING) { > - duration = curr - cm->charging_end_time; ^^^ this is charging_end_time, not charging_start_time > + if ((desc->charging_max_duration_ms == 0 && > + desc->discharging_max_duration_ms == 0)) > + return false; > + if (!cm->charger_enabled && > + cm->battery_status != POWER_SUPPLY_STATUS_NOT_CHARGING) > + return false; > > - if (duration > desc->charging_max_duration_ms) { ^^^ this is discharging_max_duration_ms after I applied a fix. > - dev_info(cm->dev, "Discharging duration exceed %ums\n", > - desc->discharging_max_duration_ms); > - ret = true; > - } > + duration = ktime_to_ms(ktime_get()) - cm->charging_start_time; > + if (duration > desc->charging_max_duration_ms) { > + dev_info(cm->dev, "Charging duration exceeds %ums\n", > + desc->charging_max_duration_ms); > + return true; > } > - > - return ret; > + return false; > } > > static int cm_get_battery_temperature_by_psy(struct charger_manager *cm, So basically code is similar, but not the same. -- Sebastian