]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: cs35l56: Check for successful runtime-resume in cs35l56_dsp_work()
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Mon, 11 May 2026 11:42:39 +0000 (12:42 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 12 May 2026 01:22:13 +0000 (10:22 +0900)
In cs35l56_dsp_work() check that the request for runtime-resume was
successful instead of assuming that it can't fail.

We may as well do this using the new PM_RUNTIME_ACQUIRE*() macros and
remove the manual pm_runtime_put_autosuspend() and associated gotos.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20260511114239.44970-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs35l56.c

index 849d70ca23d6f544991f68046fceca3a99593e74..4fbbdcc87151621e735d684e1a041fee11619513 100644 (file)
@@ -867,11 +867,16 @@ static void cs35l56_dsp_work(struct work_struct *work)
        if (!cs35l56->base.init_done)
                return;
 
-       pm_runtime_get_sync(cs35l56->base.dev);
+       PM_RUNTIME_ACQUIRE(cs35l56->base.dev, pm);
+       ret = PM_RUNTIME_ACQUIRE_ERR(&pm);
+       if (ret) {
+               dev_err(cs35l56->base.dev, "dsp_work failed to runtime-resume: %d\n", ret);
+               return;
+       }
 
        ret = cs35l56_read_prot_status(&cs35l56->base, &firmware_missing, &firmware_version);
        if (ret)
-               goto err;
+               return;
 
        /* Populate fw file qualifier with the revision and security state */
        kfree(cs35l56->dsp.fwf_name);
@@ -887,7 +892,7 @@ static void cs35l56_dsp_work(struct work_struct *work)
        }
 
        if (!cs35l56->dsp.fwf_name)
-               goto err;
+               return;
 
        dev_dbg(cs35l56->base.dev, "DSP fwf name: '%s' system name: '%s'\n",
                cs35l56->dsp.fwf_name, cs35l56->dsp.system_name);
@@ -905,8 +910,6 @@ static void cs35l56_dsp_work(struct work_struct *work)
                cs35l56_patch(cs35l56, firmware_missing);
 
        cs35l56_log_tuning(&cs35l56->base, &cs35l56->dsp.cs_dsp);
-err:
-       pm_runtime_put_autosuspend(cs35l56->base.dev);
 }
 
 static struct snd_soc_dapm_context *cs35l56_power_up_for_cal(struct cs35l56_private *cs35l56)