Hi, On Tue, Mar 10, 2026 at 01:28:29PM +0400, Alexey Charkov wrote: > The minimal system voltage (VSYSMIN) is meant to protect the battery from > dangerous over-discharge. When the device tree provides a value for the > minimum design voltage of the battery, the user should not be allowed to > set a lower VSYSMIN, as that would defeat the purpose of this protection. > > Flip the clamping logic when setting VSYSMIN to ensure that battery design > voltage is respected. > > Cc: stable@vger.kernel.org > Fixes: 1cc017b7f9c7 ("power: supply: bq257xx: Add support for BQ257XX charger") > Tested-by: Chris Morgan > Signed-off-by: Alexey Charkov > --- Reviewed-by: Sebastian Reichel -- Sebastian > drivers/power/supply/bq257xx_charger.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/power/supply/bq257xx_charger.c b/drivers/power/supply/bq257xx_charger.c > index 02c7d8b61e82..7ca4ae610902 100644 > --- a/drivers/power/supply/bq257xx_charger.c > +++ b/drivers/power/supply/bq257xx_charger.c > @@ -128,9 +128,8 @@ static int bq25703_get_min_vsys(struct bq257xx_chg *pdata, int *intval) > * @vsys: voltage value to set in uV. > * > * This function takes a requested minimum system voltage value, clamps > - * it between the minimum supported value by the charger and a user > - * defined minimum system value, and then writes the value to the > - * appropriate register. > + * it between the user defined minimum system value and the maximum supported > + * value by the charger, and then writes the value to the appropriate register. > * > * Return: Returns 0 on success or error if an error occurs. > */ > @@ -139,7 +138,7 @@ static int bq25703_set_min_vsys(struct bq257xx_chg *pdata, int vsys) > unsigned int reg; > int vsys_min = pdata->vsys_min; > > - vsys = clamp(vsys, BQ25703_MINVSYS_MIN_UV, vsys_min); > + vsys = clamp(vsys, vsys_min, BQ25703_MINVSYS_MAX_UV); > reg = ((vsys - BQ25703_MINVSYS_MIN_UV) / BQ25703_MINVSYS_STEP_UV); > reg = FIELD_PREP(BQ25703_MINVSYS_MASK, reg); > > > -- > 2.52.0 > >