On Fri, Jun 04, 2021 at 03:57:14PM +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> > --- > drivers/hwmon/pmbus/pmbus_core.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c > index bbd745178147..7fbd82b7560d 100644 > --- a/drivers/hwmon/pmbus/pmbus_core.c > +++ b/drivers/hwmon/pmbus/pmbus_core.c > @@ -2214,11 +2214,13 @@ 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 */ > - if (!(data->flags & PMBUS_NO_CAPABILITY)) { What is the rationale for removing this check ? AFAICS that will render the ibm-cffps driver unusable. Guenter > - ret = i2c_smbus_read_byte_data(client, PMBUS_CAPABILITY); > - if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK)) > + /* Enable PEC if the controller and bus supports it */ > + ret = i2c_smbus_read_byte_data(client, PMBUS_CAPABILITY); > + if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK)) { > + if (i2c_check_functionality(client->adapter, > + I2C_FUNC_SMBUS_PEC)) { > client->flags |= I2C_CLIENT_PEC; > + } > } > > /* > -- > 2.32.0.rc2 >