Commit 4e5418f7 authored by Madhava Reddy Siddareddygari's avatar Madhava Reddy Siddareddygari Committed by Guenter Roeck
Browse files

hwmon: (pmbus_core) Check adapter PEC support



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: default avatarMadhava Reddy Siddareddygari <msiddare@cisco.com>
[Upstream from SONiC https://github.com/Azure/sonic-linux-kernel/pull/215

]
Signed-off-by: default avatarPaul Menzel <pmenzel@molgen.mpg.de>
Link: https://lore.kernel.org/r/20210605052700.541455-1-pmenzel@molgen.mpg.de


[groeck: Dropped unnecessary continuation line]
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 6b6af854
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -2216,12 +2216,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))
		if (ret >= 0 && (ret & PB_CAPABILITY_ERROR_CHECK)) {
			if (i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_PEC)) {
				client->flags |= I2C_CLIENT_PEC;
			}
		}
	}

	/*
	 * Check if the chip is write protected. If it is, we can not clear