| From 8d7965e02b16e3a01807bd52405c48b19e39ed09 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 7 Jun 2021 17:22:37 -0500 |
| Subject: ASoC: rt5682-sdw: set regcache_cache_only false before reading |
| RT5682_DEVICE_ID |
| |
| From: Bard Liao <yung-chuan.liao@linux.intel.com> |
| |
| [ 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 <yung-chuan.liao@linux.intel.com> |
| Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> |
| Link: https://lore.kernel.org/r/20210607222239.582139-14-pierre-louis.bossart@linux.intel.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/codecs/rt5682-sdw.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| 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) { |
| -- |
| 2.30.2 |
| |