[alsa-devel] [PATCH] ASoC: rt5663: Delay and retry reading rt5663 ID register
In the probe, the codec may not be ready for I2C reading. So if the value is not correct, it will read again after delay.
Signed-off-by: Oder Chiou oder_chiou@realtek.com --- sound/soc/codecs/rt5663.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c index fcd1643..5985d8e 100644 --- a/sound/soc/codecs/rt5663.c +++ b/sound/soc/codecs/rt5663.c @@ -3429,7 +3429,16 @@ static int rt5663_i2c_probe(struct i2c_client *i2c, ret); return ret; } - regmap_read(regmap, RT5663_VENDOR_ID_2, &val); + + ret = regmap_read(regmap, RT5663_VENDOR_ID_2, &val); + if (ret || (val != RT5663_DEVICE_ID_2 && val != RT5663_DEVICE_ID_1)) { + dev_err(&i2c->dev, + "Device with ID register %#x is not rt5663," + " retry one time.\n", val); + msleep(100); + regmap_read(regmap, RT5663_VENDOR_ID_2, &val); + } + switch (val) { case RT5663_DEVICE_ID_2: rt5663->regmap = devm_regmap_init_i2c(i2c, &rt5663_v2_regmap);
On Mon, Nov 06, 2017 at 02:18:02PM +0800, Oder Chiou wrote:
In the probe, the codec may not be ready for I2C reading. So if the value is not correct, it will read again after delay.
Why might this happen? This sounds like papering over some other problem.
participants (2)
-
Mark Brown
-
Oder Chiou