• Douglas Anderson's avatar
    ASoC: rt5514: Unconfuse the rt5514 at probe / resume time · 7952b4ba
    Douglas Anderson authored
    The rt5514 can get confused and incorrectly detect a start bit if the
    SCL/SDA lines happen to both go low and then high again.  This
    situation has been seen to happen at reboot time and is also
    theoretically possible during suspend/resume if the rt5514 keeps power
    but we shut down the i2c connection.
    
    When this happens the rt5514 is confused about the state of the i2c
    bus and won't recognize its own address.  That will lead to the rt5514
    incorrectly NAKing the first transfer.
    
    A single i2c transfer to any address should be enough to get the
    rt5514 out of this funky state.
    
    It is currently believed that this problem should be fixed in the
    rt5514 driver itself because it seems that the i2c controller in the
    rt5514 is easily confused.  Most i2c devices wouldn't detect a start
    bit in this case.
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    7952b4ba
rt5514.c 34 KB