hwmon: (pmbus/mp2975) Fix PGOOD in READ_STATUS_WORD
authorPatrick Rudolph <patrick.rudolph@9elements.com>
Mon, 31 Jul 2023 09:22:04 +0000 (11:22 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 21 Aug 2023 13:04:30 +0000 (06:04 -0700)
MP2973 & MP2971 return PGOOD instead of PB_STATUS_POWER_GOOD_N.
Fix that in the read_word_data hook.

MP2975 should not be affected, but that has not been confirmed with
hardware.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
Link: https://lore.kernel.org/r/20230731092204.2933045-1-Naresh.Solanki@9elements.com
[groeck: Rephrased description to indicate that MP2975 is likely not affected]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/mp2975.c

index 28f33f4618fae1c3fafb77c08a5dcabd34e61510..26ba506331007e6c50c54f44ed25849851fa2a62 100644 (file)
@@ -380,6 +380,11 @@ static int mp2975_read_word_data(struct i2c_client *client, int page,
        int ret;
 
        switch (reg) {
+       case PMBUS_STATUS_WORD:
+               /* MP2973 & MP2971 return PGOOD instead of PB_STATUS_POWER_GOOD_N. */
+               ret = pmbus_read_word_data(client, page, phase, reg);
+               ret ^= PB_STATUS_POWER_GOOD_N;
+               break;
        case PMBUS_OT_FAULT_LIMIT:
                ret = mp2975_read_word_helper(client, page, phase, reg,
                                              GENMASK(7, 0));