]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
power: supply: axp288_charger: Round constant_charge_voltage writes down
authorHans de Goede <hdegoede@redhat.com>
Wed, 17 Jul 2024 20:03:33 +0000 (22:03 +0200)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Fri, 26 Jul 2024 22:16:15 +0000 (00:16 +0200)
Round constant_charge_voltage writes down to the first supported lower
value, rather then rounding them up to the first supported higher value.

This fixes e.g. writing 4250000 resulting in a value of 4350000 which
might be dangerous, instead writing 4250000 will now result in a safe
4200000 value.

Fixes: 843735b788a4 ("power: axp288_charger: axp288 charger driver")
Cc: stable@vger.kernel.org
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20240717200333.56669-2-hdegoede@redhat.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/axp288_charger.c

index aea17289a178439e5aba2383021d25d8bd927f7c..ac05942e4e6ac1f5610a7217857465136a695601 100644 (file)
@@ -178,18 +178,18 @@ static inline int axp288_charger_set_cv(struct axp288_chrg_info *info, int cv)
        u8 reg_val;
        int ret;
 
-       if (cv <= CV_4100MV) {
-               reg_val = CHRG_CCCV_CV_4100MV;
-               cv = CV_4100MV;
-       } else if (cv <= CV_4150MV) {
-               reg_val = CHRG_CCCV_CV_4150MV;
-               cv = CV_4150MV;
-       } else if (cv <= CV_4200MV) {
+       if (cv >= CV_4350MV) {
+               reg_val = CHRG_CCCV_CV_4350MV;
+               cv = CV_4350MV;
+       } else if (cv >= CV_4200MV) {
                reg_val = CHRG_CCCV_CV_4200MV;
                cv = CV_4200MV;
+       } else if (cv >= CV_4150MV) {
+               reg_val = CHRG_CCCV_CV_4150MV;
+               cv = CV_4150MV;
        } else {
-               reg_val = CHRG_CCCV_CV_4350MV;
-               cv = CV_4350MV;
+               reg_val = CHRG_CCCV_CV_4100MV;
+               cv = CV_4100MV;
        }
 
        reg_val = reg_val << CHRG_CCCV_CV_BIT_POS;