• Nicolas Boichat's avatar
    mfd: cros ec: Lock the SPI bus while holding chipselect · 6d6e44a9
    Nicolas Boichat authored
    cros_ec_cmd_xfer_spi and cros_ec_pkt_xfer_spi generally work like
    this:
     - Pull CS down (active), wait a bit, then send a command
     - Wait for response (multiple requests)
     - Wait a while, pull CS up (inactive)
    
    These operations, individually, lock the SPI bus, but there is
    nothing preventing the SPI framework from interleaving messages
    intended for other devices as the bus is unlocked in between.
    
    This is a problem as the EC expects CS to be held low for the
    whole duration.
    
    Solution: Lock the SPI bus during the whole transaction, to make
    sure that no other messages can be interleaved.
    Signed-off-by: default avatarNicolas Boichat <drinkcat@chromium.org>
    Reviewed-by: default avatarGwendal Grignou <gwendal@chromium.org>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    6d6e44a9
cros_ec_spi.c 18.2 KB