ALSA: hda/cs35l56: Call cs_dsp_power_down() before reloading firmware
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Mon, 31 Jul 2023 16:57:20 +0000 (17:57 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 1 Aug 2023 06:30:05 +0000 (08:30 +0200)
When firmware is reloaded after a system resume cs_dsp_power_down() should
be called before calling cs_dsp_power_up().

The fw_patched flag should also be cleared and only set again if the
firmware download succeeded.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230731165726.7940-4-rf@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/cs35l56_hda.c

index fda716e..b6b8cb2 100644 (file)
@@ -527,6 +527,12 @@ static int cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56)
        char *wmfw_filename = NULL;
        int ret = 0;
 
+       /* Prepare for a new DSP power-up */
+       if (cs35l56->base.fw_patched)
+               cs_dsp_power_down(&cs35l56->cs_dsp);
+
+       cs35l56->base.fw_patched = false;
+
        cs35l56_hda_request_firmware_files(cs35l56, &wmfw_firmware, &wmfw_filename,
                                           &coeff_firmware, &coeff_filename);