]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (ltc4282) Fix parsing adi,current-limit-sense-microvolt
authorGuenter Roeck <linux@roeck-us.net>
Wed, 5 Aug 2026 00:30:42 +0000 (17:30 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Fri, 7 Aug 2026 05:37:45 +0000 (22:37 -0700)
ltc4282_parse_dt() evaluates the wrong variable when parsing the current
limit.

When the adi,current-limit-sense-microvolt property is parsed into
st->vsense_max, the subsequent switch statement evaluates the unrelated
val variable instead of st->vsense_max:

drivers/hwmon/ltc4282.c:ltc4282_parse_dt() {
    ...
        ret = device_property_read_u32(dev, "adi,current-limit-sense-microvolt",
                                       &st->vsense_max);
        if (!ret) {
                int reg_val;

                switch (val) {
                case 12500:
                        reg_val = 0;
                        break;
    ...
}

Because val holds a small integer representing vin_mode (from 0 to 3), it
never matches any of the valid current limit cases.

This causes it to always fall through to the default error case, return
-EINVAL, and aborts probe initialization for any device tree using this
property.

Validate st->vsense_max instead to fix the problem.

Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: cbc29538dbf7d ("hwmon: Add driver for LTC4282")
Cc: Nuno Sa <nuno.sa@analog.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/ltc4282.c

index bb1bcb3690163d7b2394af1566af5afe3f130023..b1675dc5b3c7fd2f0f02b0d5af34fcfe511913bd 100644 (file)
@@ -1394,7 +1394,7 @@ static int ltc4282_setup(struct ltc4282_state *st, struct device *dev)
        if (!ret) {
                int reg_val;
 
-               switch (val) {
+               switch (st->vsense_max) {
                case 12500:
                        reg_val = 0;
                        break;