diff options
author | Mark Brown <broonie@kernel.org> | 2024-04-10 01:26:37 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2024-04-10 01:26:37 +0300 |
commit | 2e411e939da9557494a0d83eb2e50627d9ccb2af (patch) | |
tree | fb3b1531880a6acb55710b4e6cb3b4ae48d38ecf /sound/soc/codecs/cs35l56-sdw.c | |
parent | f23e8f3ad3ea739be006459df4ed4e7b3f5242e6 (diff) | |
parent | dfd2ffb373999630a14d7ff614440f1c2fcc704c (diff) | |
download | linux-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.c | 2 |
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); |