From: Bard Liao Date: Mon, 7 Jun 2021 22:22:37 +0000 (-0500) Subject: ASoC: rt5682-sdw: set regcache_cache_only false before reading RT5682_DEVICE_ID X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=92a30a90d69ae0c0b44ef4ef2636b675c21f1acf;p=linux-block.git ASoC: rt5682-sdw: set regcache_cache_only false before reading RT5682_DEVICE_ID [ Upstream commit c0372bc873dd29f325ee908351e0bd5b08d4d608 ] RT5682_DEVICE_ID is a volatile register, we can not read it in cache only mode. Fixes: 03f6fc6de919 ("ASoC: rt5682: Add the soundwire support") Signed-off-by: Bard Liao Signed-off-by: Pierre-Louis Bossart Link: https://lore.kernel.org/r/20210607222239.582139-14-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c index 5f8867e00923..c9868dd096fc 100644 --- a/sound/soc/codecs/rt5682-sdw.c +++ b/sound/soc/codecs/rt5682-sdw.c @@ -400,6 +400,11 @@ static int rt5682_io_init(struct device *dev, struct sdw_slave *slave) pm_runtime_get_noresume(&slave->dev); + if (rt5682->first_hw_init) { + regcache_cache_only(rt5682->regmap, false); + regcache_cache_bypass(rt5682->regmap, true); + } + while (loop > 0) { regmap_read(rt5682->regmap, RT5682_DEVICE_ID, &val); if (val == DEVICE_ID) @@ -413,11 +418,6 @@ static int rt5682_io_init(struct device *dev, struct sdw_slave *slave) return -ENODEV; } - if (rt5682->first_hw_init) { - regcache_cache_only(rt5682->regmap, false); - regcache_cache_bypass(rt5682->regmap, true); - } - rt5682_calibrate(rt5682); if (rt5682->first_hw_init) {