On Mon, Oct 15, 2018 at 02:21:22PM +0500, Dmitry Bazhenov wrote: > 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. > > Signed-off-by: Dmitry Bazhenov <bazhenov.dn@xxxxxxxxx> Applied. Thanks, Guenter > --- > drivers/hwmon/pmbus/pmbus.c | 2 ++ > drivers/hwmon/pmbus/pmbus_core.c | 5 ++++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c > index 7718e58dbda5..7688dab32f6e 100644 > --- a/drivers/hwmon/pmbus/pmbus.c > +++ b/drivers/hwmon/pmbus/pmbus.c > @@ -118,6 +118,8 @@ static int pmbus_identify(struct i2c_client *client, > } else { > info->pages = 1; > } > + > + pmbus_clear_faults(client); > } > > if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE)) { > diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c > index 82c3754e21e3..2e2b5851139c 100644 > --- a/drivers/hwmon/pmbus/pmbus_core.c > +++ b/drivers/hwmon/pmbus/pmbus_core.c > @@ -2015,7 +2015,10 @@ static int pmbus_init_common(struct i2c_client *client, struct pmbus_data *data, > 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);