ASoC: rt5514: Unconfuse the rt5514 at probe / resume time
authorDouglas Anderson <dianders@chromium.org>
Fri, 14 Apr 2017 16:40:32 +0000 (09:40 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 14 Apr 2017 17:11:37 +0000 (18:11 +0100)
commit7952b4baff402ddca1a263380bfd142f10290eb8
treef92921674913c8ffaacdf1af7313e4afe8d39ac1
parent0a78b248c3324fbbba49f74e2c93e0f436583788
ASoC: rt5514: Unconfuse the rt5514 at probe / resume time

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: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5514.c