lkml.org 
[lkml]   [2018]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 002/160] hwmon: (pmbus) Fix page count auto-detection.
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Dmitry Bazhenov <bazhenov.dn@gmail.com>

    commit e7c6a55606b5c46b449d76588968b4d8caae903f upstream.

    Devices with compatible="pmbus" field have zero initial page count,
    and pmbus_clear_faults() being called before the page count auto-
    detection does not actually clear faults because it depends on the
    page count. Non-cleared faults in its turn may fail the subsequent
    page count auto-detection.

    This patch fixes this problem by calling pmbus_clear_fault_page()
    for currently set page and calling pmbus_clear_faults() after the
    page count was detected.

    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Bazhenov <bazhenov.dn@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/hwmon/pmbus/pmbus.c | 2 ++
    drivers/hwmon/pmbus/pmbus_core.c | 5 ++++-
    2 files changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/hwmon/pmbus/pmbus.c
    +++ b/drivers/hwmon/pmbus/pmbus.c
    @@ -117,6 +117,8 @@ static int pmbus_identify(struct i2c_cli
    } else {
    info->pages = 1;
    }
    +
    + pmbus_clear_faults(client);
    }

    if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) {
    --- a/drivers/hwmon/pmbus/pmbus_core.c
    +++ b/drivers/hwmon/pmbus/pmbus_core.c
    @@ -1759,7 +1759,10 @@ static int pmbus_init_common(struct i2c_
    if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK))
    client->flags |= I2C_CLIENT_PEC;

    - pmbus_clear_faults(client);
    + if (data->info->pages)
    + pmbus_clear_faults(client);
    + else
    + pmbus_clear_fault_page(client, -1);

    if (info->identify) {
    ret = (*info->identify)(client, info);

    \
     
     \ /
      Last update: 2018-11-19 18:25    [W:3.648 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site