diff options
author | Richard Fitzgerald <rf@opensource.cirrus.com> | 2023-07-31 18:57:19 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2023-08-01 08:30:04 +0200 |
commit | c36570970a585bc816e15478fde71476f96f5e9c (patch) | |
tree | f8e3ac1c7d40937a85a6e60b4b25656245b3b25d | |
parent | ALSA: hda/cs35l56: Complete firmware reboot before calling cs_dsp_run() (diff) | |
download | linux-c36570970a585bc816e15478fde71476f96f5e9c.tar.xz linux-c36570970a585bc816e15478fde71476f96f5e9c.zip |
ALSA: hda/cs35l56: Do not mark cache dirty after REINIT
Only call regcache_mark_dirty() in cs35l56_hda_fw_load() if
the CS35L56 was SYSTEM_RESET.
recache_mark_dirty() changes the behaviour of regcache_sync()
to write out cache values that are not the default value, and
skip cache values that are the default.
AUDIO_REINIT does not reset the registers. regcache_mark_dirty()
after AUDIO_REINIT could cause the regcache_sync() to sync
registers incorrectly because it will assume that all registers
have reset to default.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230731165726.7940-3-rf@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/cs35l56_hda.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/pci/hda/cs35l56_hda.c b/sound/pci/hda/cs35l56_hda.c index c3acda2daeeb..fda716e0db09 100644 --- a/sound/pci/hda/cs35l56_hda.c +++ b/sound/pci/hda/cs35l56_hda.c @@ -569,6 +569,7 @@ static int cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56) } else { /* Reset the device and wait for it to boot */ cs35l56_system_reset(&cs35l56->base, false); + regcache_mark_dirty(cs35l56->base.regmap); ret = cs35l56_wait_for_firmware_boot(&cs35l56->base); if (ret) goto err; @@ -579,7 +580,6 @@ static int cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56) if (ret) goto err; - regcache_mark_dirty(cs35l56->base.regmap); regcache_sync(cs35l56->base.regmap); regmap_clear_bits(cs35l56->base.regmap, CS35L56_PROTECTION_STATUS, |