mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
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>
This commit is contained in:
parent
7b6466ad1d
commit
c36570970a
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user