• Vasily Khoruzhick's avatar
    i2c: ismt: kill transaction in hardware on timeout · 46b2dfc0
    Vasily Khoruzhick authored
    On Intel Denverton SoC ismt controller may enter weird state when
    transaction gets stuck. It times out in the driver, but unless
    transaction is explicitly killed in the controller, it won't be able to
    perform new transactions anymore.
    
    The issue is extremely difficult to reproduce and may take weeks of non-
    stop smbus traffic.
    
    Numerous hours with logic analyzer didn't yield any useful results, it
    looks like the controller stops toggling SCK line, i.e. the issue is
    likely in the controller, since device doesn't do clock stretching, so
    nothing is driving SCK except the host.
    
    Explicitly kill transaction on timeout to recover the controller from
    this state.
    Signed-off-by: default avatarVasily Khoruzhick <vasilykh@arista.com>
    Signed-off-by: default avatarAndi Shyti <andi.shyti@kernel.org>
    46b2dfc0
i2c-ismt.c 27.9 KB