On 4/19/22 15:10, wujek dev wrote:
------- Original Message -------
On Wednesday, April 20th, 2022 at 00:00, Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
On 4/19/22 13:53, Adam Wujek wrote:
Explicitly disable PEC when the client does not support it.
Without the explicit disable, when the device with the PEC support is removed
later when a device without PEC support is inserted into the same address,
the driver uses the old value of client->flags which contains the I2C_CLIENT_PEC
flag. As a consequence the PEC is used when it should not.
How can that happen ? I would assume the I2C device gets deleted and re-created
in that case, which should clear the PEC flag.
Guenter
In my case it was when I unloaded the driver for the I2C slave, changed the advertised PEC value in PMBUS_CAPABILITY register on slave. Then loaded the driver. When the switch was from disable->enable it worked as expected (this case was already covered), but when the PEC was set in the slave from enabled->disabled it was still using PEC to communicate.
So it is really the same device, only you unload the driver, change the
device configuration (presumably with i2cset commands), and load it
again. Please explain that in more detail in the commit description.
Thanks,
Guenter