• Hamish Martin's avatar
    HID: mcp2221: Don't set bus speed on every transfer · 02a46753
    Hamish Martin authored
    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: default avatarHamish Martin <hamish.martin@alliedtelesis.co.nz>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    02a46753
hid-mcp2221.c 27.1 KB