Skip to content

Commit 01f943b

Browse files
Stefan Bindingsmb49
authored andcommitted
ALSA: hda: cs35l41: Ensure we pass up any errors during system suspend.
BugLink: https://bugs.launchpad.net/bugs/2029199 There are several steps required to put the system into system suspend. Some of these steps may fail, so the driver should pass up the errors if they occur. Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com> Link: https://lore.kernel.org/r/20230721151816.2080453-6-sbinding@opensource.cirrus.com Signed-off-by: Takashi Iwai <tiwai@suse.de> (cherry picked from commit f2a58481a5051704390c2d7653b07ab3d97782da linux-next) Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
1 parent d0d4aee commit 01f943b

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

sound/pci/hda/cs35l41_hda.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -626,17 +626,22 @@ static int cs35l41_system_suspend(struct device *dev)
626626
}
627627

628628
ret = pm_runtime_force_suspend(dev);
629-
if (ret)
629+
if (ret) {
630+
dev_err(dev, "System Suspend Failed, unable to runtime suspend: %d\n", ret);
630631
return ret;
632+
}
631633

632634
/* Shutdown DSP before system suspend */
633-
cs35l41_ready_for_reset(cs35l41);
635+
ret = cs35l41_ready_for_reset(cs35l41);
636+
637+
if (ret)
638+
dev_err(dev, "System Suspend Failed, not ready for Reset: %d\n", ret);
634639

635640
/*
636641
* Reset GPIO may be shared, so cannot reset here.
637642
* However beyond this point, amps may be powered down.
638643
*/
639-
return 0;
644+
return ret;
640645
}
641646

642647
static int cs35l41_system_resume(struct device *dev)
@@ -659,9 +664,13 @@ static int cs35l41_system_resume(struct device *dev)
659664
usleep_range(2000, 2100);
660665

661666
ret = pm_runtime_force_resume(dev);
667+
if (ret) {
668+
dev_err(dev, "System Resume Failed: Unable to runtime resume: %d\n", ret);
669+
return ret;
670+
}
662671

663672
mutex_lock(&cs35l41->fw_mutex);
664-
if (!ret && cs35l41->request_fw_load && !cs35l41->fw_request_ongoing) {
673+
if (cs35l41->request_fw_load && !cs35l41->fw_request_ongoing) {
665674
cs35l41->fw_request_ongoing = true;
666675
schedule_work(&cs35l41->fw_load_work);
667676
}

0 commit comments

Comments
 (0)