ASoC: rt5640: fix rt5640_i2c_probe fail sometimes
[firefly-linux-kernel-4.4.55.git] / sound / soc / codecs / rt5640.c
index 6626e2cfbcb770f5e7ae3f3c66e28658fb50c76a..ee920bc4c784718c77fdf4248b02c1893215f8ef 100644 (file)
@@ -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);