summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/cs35l56-sdw.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2024-04-10 01:26:37 +0300
committerMark Brown <broonie@kernel.org>2024-04-10 01:26:37 +0300
commit2e411e939da9557494a0d83eb2e50627d9ccb2af (patch)
treefb3b1531880a6acb55710b4e6cb3b4ae48d38ecf /sound/soc/codecs/cs35l56-sdw.c
parentf23e8f3ad3ea739be006459df4ed4e7b3f5242e6 (diff)
parentdfd2ffb373999630a14d7ff614440f1c2fcc704c (diff)
downloadlinux-2e411e939da9557494a0d83eb2e50627d9ccb2af.tar.xz
ASoC: cs35l56: Fixes to handling of ASP1 config
Merge series from Richard Fitzgerald <rf@opensource.cirrus.com>: This chain fixes some problems with some previous patches for handling the ASP1 config registers. The root of the problem is that the ownership of these registers can be either with the firmware or the driver, and that the chip has to be soft-reset after downloading the firmware. This chain adds and uses a regmap_read_bypassed() function so that the driver can leave the regmap in cache-only until the chip has rebooted, but still poll a register to detect when the chip has rebooted. Richard Fitzgerald (4): regmap: Add regmap_read_bypassed() ALSA: hda: cs35l56: Exit cache-only after cs35l56_wait_for_firmware_boot() ASoC: cs35l56: Fix unintended bus access while resetting amp ASoC: cs35l56: Prevent overwriting firmware ASP config drivers/base/regmap/regmap.c | 37 ++++++++++++++ include/linux/regmap.h | 8 +++ include/sound/cs35l56.h | 2 + sound/pci/hda/cs35l56_hda.c | 4 ++ sound/soc/codecs/cs35l56-sdw.c | 2 - sound/soc/codecs/cs35l56-shared.c | 83 ++++++++++++++++++++----------- sound/soc/codecs/cs35l56.c | 26 +++++++++- 7 files changed, 130 insertions(+), 32 deletions(-) -- 2.39.2
Diffstat (limited to 'sound/soc/codecs/cs35l56-sdw.c')
-rw-r--r--sound/soc/codecs/cs35l56-sdw.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/sound/soc/codecs/cs35l56-sdw.c b/sound/soc/codecs/cs35l56-sdw.c
index 14a5f86019aa..70ff55c1517f 100644
--- a/sound/soc/codecs/cs35l56-sdw.c
+++ b/sound/soc/codecs/cs35l56-sdw.c
@@ -188,8 +188,6 @@ static void cs35l56_sdw_init(struct sdw_slave *peripheral)
goto out;
}
- regcache_cache_only(cs35l56->base.regmap, false);
-
ret = cs35l56_init(cs35l56);
if (ret < 0) {
regcache_cache_only(cs35l56->base.regmap, true);