On Sat, Jun 05, 2021 at 07:27:02AM +0200, Paul Menzel wrote: > From: Madhava Reddy Siddareddygari <msiddare@xxxxxxxxx> > > Currently, for Packet Error Checking (PEC) only the controller > is checked for support. This causes problems on the cisco-8000 > platform where a SMBUS transaction errors are observed. This is > because PEC has to be enabled only if both controller and > adapter support it. > > Added code to check PEC capability for adapter and enable it > only if both controller and adapter supports PEC. > > Signed-off-by: Madhava Reddy Siddareddygari <msiddare@xxxxxxxxx> > [Upstream from SONiC https://github.com/Azure/sonic-linux-kernel/pull/215] > Signed-off-by: Paul Menzel <pmenzel@xxxxxxxxxxxxx> Applied. Thanks, Guenter > --- > v2: Do not revert check introduced by commit e5befc02 (hwmon: (pmbus) > Add a PMBUS_NO_CAPABILITY platform data flag). > > drivers/hwmon/pmbus/pmbus_core.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c > index bbd745178147..2fd0fec59d4f 100644 > --- a/drivers/hwmon/pmbus/pmbus_core.c > +++ b/drivers/hwmon/pmbus/pmbus_core.c > @@ -2214,11 +2214,15 @@ static int pmbus_init_common(struct i2c_client *client, struct pmbus_data *data, > data->has_status_word = true; > } > > - /* Enable PEC if the controller supports it */ > + /* Enable PEC if the controller and bus supports it */ > if (!(data->flags & PMBUS_NO_CAPABILITY)) { > ret = i2c_smbus_read_byte_data(client, PMBUS_CAPABILITY); > - if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK)) > - client->flags |= I2C_CLIENT_PEC; > + if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK)) { > + if (i2c_check_functionality(client->adapter, > + I2C_FUNC_SMBUS_PEC)) { > + client->flags |= I2C_CLIENT_PEC; > + } > + } > } > > /*