ALSA: hda: cs35l56: Fix lifecycle of codec pointer

BugLink: https://bugs.launchpad.net/bugs/2078304

[ Upstream commit d339131bf02d4ed918415574082caf5e8af6e664 ]

The codec should be cleared when the amp driver is unbound and when
resuming it should be tested to prevent loading firmware into the device
and ALSA in a partially configured system state.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20240531112716.25323-1-simont@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Portia Stephens <portia.stephens@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
Simon Trimmer
2024-05-31 12:27:16 +01:00
committed by Stefan Bader
parent 6663a7c97b
commit 3d839cc449
+5
View File
@@ -715,6 +715,8 @@ static void cs35l56_hda_unbind(struct device *dev, struct device *master, void *
if (comps[cs35l56->index].dev == dev)
memset(&comps[cs35l56->index], 0, sizeof(*comps));
cs35l56->codec = NULL;
dev_dbg(cs35l56->base.dev, "Unbound\n");
}
@@ -820,6 +822,9 @@ static int cs35l56_hda_system_resume(struct device *dev)
cs35l56->suspended = false;
if (!cs35l56->codec)
return 0;
ret = cs35l56_is_fw_reload_needed(&cs35l56->base);
dev_dbg(cs35l56->base.dev, "fw_reload_needed: %d\n", ret);
if (ret > 0) {