From: Sugar Zhang Date: Wed, 9 Mar 2016 03:50:43 +0000 (+0800) Subject: ASoC: rt5640: fix rt5640_i2c_probe fail sometimes X-Git-Tag: firefly_0821_release~3245 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=firefly-linux-kernel-4.4.55.git;a=commitdiff_plain;h=fb2723796ed9b9f937afe8a977249ed1df2115d7 ASoC: rt5640: fix rt5640_i2c_probe fail sometimes if the codec is not initialized completely, i2c transfer will be failed, so we just return PROBE_DEFER to let codec have chance to be probed later. Change-Id: I68922ffa7ddf048ebe3f95be9349d38b7b059982 Signed-off-by: Sugar Zhang --- diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c index 6626e2cfbcb7..ee920bc4c784 100644 --- a/sound/soc/codecs/rt5640.c +++ b/sound/soc/codecs/rt5640.c @@ -2337,7 +2337,10 @@ static int rt5640_i2c_probe(struct i2c_client *i2c, msleep(400); } - regmap_read(rt5640->regmap, RT5640_VENDOR_ID2, &val); + ret = regmap_read(rt5640->regmap, RT5640_VENDOR_ID2, &val); + if (ret) + return -EPROBE_DEFER; + if (val != RT5640_DEVICE_ID) { dev_err(&i2c->dev, "Device with ID register %#x is not rt5640/39\n", val);