Message ID | 20200902165816.401213-1-alex.dewar90@gmail.com |
---|---|
State | New |
Headers | show |
Series | power: supply: charger-manager: Tidy function | expand |
On 2020-09-02 17:58, Alex Dewar wrote: > check_charging_duration() contains some copy-pasted code, which makes it > less readable. Refactor the function to be a bit tidier. Ping? > > I've also fixed a couple of typos. > > Signed-off-by: Alex Dewar <alex.dewar90@gmail.com> > --- > 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; > + 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) { > - 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,
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 <alex.dewar90@gmail.com> > --- > 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
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; + 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) { - 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,
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 <alex.dewar90@gmail.com> --- drivers/power/supply/charger-manager.c | 39 +++++++++----------------- 1 file changed, 14 insertions(+), 25 deletions(-)