lkml.org 
[lkml]   [2022]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 021/140] hwmon: (pmbus) delta-ahe50dc-fan: work around hardware quirk
    Date
    From: Zev Weiss <zev@bewilderbeest.net>

    commit 08da09f028043fed9653331ae75bc310411f72e6 upstream.

    CLEAR_FAULTS commands can apparently sometimes trigger catastrophic
    power output glitches on the ahe-50dc, so block them from being sent
    at all.

    Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220427035109.3819-1-zev@bewilderbeest.net
    Fixes: d387d88ed045 ("hwmon: (pmbus) Add Delta AHE-50DC fan control module driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/hwmon/pmbus/delta-ahe50dc-fan.c | 16 ++++++++++++++++
    1 file changed, 16 insertions(+)

    --- a/drivers/hwmon/pmbus/delta-ahe50dc-fan.c
    +++ b/drivers/hwmon/pmbus/delta-ahe50dc-fan.c
    @@ -14,6 +14,21 @@

    #define AHE50DC_PMBUS_READ_TEMP4 0xd0

    +static int ahe50dc_fan_write_byte(struct i2c_client *client, int page, u8 value)
    +{
    + /*
    + * The CLEAR_FAULTS operation seems to sometimes (unpredictably, perhaps
    + * 5% of the time or so) trigger a problematic phenomenon in which the
    + * fan speeds surge momentarily and at least some (perhaps all?) of the
    + * system's power outputs experience a glitch.
    + *
    + * However, according to Delta it should be OK to simply not send any
    + * CLEAR_FAULTS commands (the device doesn't seem to be capable of
    + * reporting any faults anyway), so just blackhole them unconditionally.
    + */
    + return value == PMBUS_CLEAR_FAULTS ? -EOPNOTSUPP : -ENODATA;
    +}
    +
    static int ahe50dc_fan_read_word_data(struct i2c_client *client, int page, int phase, int reg)
    {
    /* temp1 in (virtual) page 1 is remapped to mfr-specific temp4 */
    @@ -68,6 +83,7 @@ static struct pmbus_driver_info ahe50dc_
    PMBUS_HAVE_VIN | PMBUS_HAVE_FAN12 | PMBUS_HAVE_FAN34 |
    PMBUS_HAVE_STATUS_FAN12 | PMBUS_HAVE_STATUS_FAN34 | PMBUS_PAGE_VIRTUAL,
    .func[1] = PMBUS_HAVE_TEMP | PMBUS_PAGE_VIRTUAL,
    + .write_byte = ahe50dc_fan_write_byte,
    .read_word_data = ahe50dc_fan_read_word_data,
    };


    \
     
     \ /
      Last update: 2022-05-10 16:17    [W:4.180 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site