Searched hist:"02 a46753601a24e1673d9c28173121055e8e6cc9" (Results 1 – 1 of 1) sorted by relevance
/linux/drivers/hid/ |
H A D | hid-mcp2221.c | diff 02a46753601a24e1673d9c28173121055e8e6cc9 Wed Oct 25 05:55:13 CEST 2023 Hamish Martin <hamish.martin@alliedtelesis.co.nz> HID: mcp2221: Don't set bus speed on every transfer
Since the initial commit of this driver the I2C bus speed has been reconfigured for every single transfer. This is despite the fact that we never change the speed and it is never "lost" by the chip. Upon investigation we find that what was really happening was that the setting of the bus speed had the side effect of cancelling a previous failed command if there was one, thereby freeing the bus. This is the part that was actually required to keep the bus operational in the face of failed commands.
Instead of always setting the speed, we now correctly cancel any failed commands as they are detected. This means we can just set the bus speed at probe time and remove the previous speed sets on each transfer. This has the effect of improving performance and reducing the number of commands required to complete transfers.
Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|