mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
power: supply: bq257xx: Fix VSYSMIN clamping logic
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: 1cc017b7f9 ("power: supply: bq257xx: Add support for BQ257XX charger")
Tested-by: Chris Morgan <macromorgan@hotmail.com>
Signed-off-by: Alexey Charkov <alchark@flipper.net>
Link: https://patch.msgid.link/20260603-bq25792-v7-2-d487bed276d0@flipper.net
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
a2c14ff63e
commit
b6c6b9260a
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user