ASoC: cs42xx8: Check return value of regmap_read and report correct chipid value
Fix checking return value of regmap_read(). Also fix reporting the chip_id value. CS42XX8_CHIPID_CHIP_ID_MASK is 0xF0, so the chip_id value is (val & CS42XX8_CHIPID_CHIP_ID_MASK) >> 4). Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Paul Handrigan <paul.handrigan@cirrus.com> Acked-by: Brian Austin <brian.austin@cirrus.com> Acked-by: Nicolin Chen <Guangyu.Chen@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Родитель
c159a85013
Коммит
06b4b81305
|
@ -495,17 +495,16 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap)
|
|||
regcache_cache_bypass(cs42xx8->regmap, true);
|
||||
|
||||
/* Validate the chip ID */
|
||||
regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val);
|
||||
if (val < 0) {
|
||||
dev_err(dev, "failed to get device ID: %x", val);
|
||||
ret = -EINVAL;
|
||||
ret = regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "failed to get device ID, ret = %d", ret);
|
||||
goto err_enable;
|
||||
}
|
||||
|
||||
/* The top four bits of the chip ID should be 0000 */
|
||||
if ((val & CS42XX8_CHIPID_CHIP_ID_MASK) != 0x00) {
|
||||
if (((val & CS42XX8_CHIPID_CHIP_ID_MASK) >> 4) != 0x00) {
|
||||
dev_err(dev, "unmatched chip ID: %d\n",
|
||||
val & CS42XX8_CHIPID_CHIP_ID_MASK);
|
||||
(val & CS42XX8_CHIPID_CHIP_ID_MASK) >> 4);
|
||||
ret = -EINVAL;
|
||||
goto err_enable;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче