[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <10eb3973-03c4-74cd-d28a-014fc280cdf8@linux.intel.com>
Date: Wed, 20 Apr 2022 12:39:26 -0500
From: Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
To: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>,
robh+dt@...nel.org, vkoul@...nel.org,
yung-chuan.liao@...ux.intel.com
Cc: devicetree@...r.kernel.org, alsa-devel@...a-project.org,
linux-kernel@...r.kernel.org, quic_srivasam@...cinc.com
Subject: Re: [PATCH v3 1/3] soundwire: qcom: add runtime pm support
> @@ -1017,6 +1032,15 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream,
> struct snd_soc_dai *codec_dai;
> int ret, i;
>
> + ret = pm_runtime_get_sync(ctrl->dev);
> + if (ret < 0 && ret != -EACCES) {
> + dev_err_ratelimited(ctrl->dev,
> + "pm_runtime_get_sync failed in %s, ret %d\n",
> + __func__, ret);
> + pm_runtime_put_noidle(ctrl->dev);
> + return ret;
here there's an error handling, but ...
> + }
> +
> sruntime = sdw_alloc_stream(dai->name);
> if (!sruntime)
> return -ENOMEM;
> @@ -1044,6 +1068,9 @@ static void qcom_swrm_shutdown(struct snd_pcm_substream *substream,
>
> sdw_release_stream(ctrl->sruntime[dai->id]);
> ctrl->sruntime[dai->id] = NULL;
> + pm_runtime_mark_last_busy(ctrl->dev);
> + pm_runtime_put_autosuspend(ctrl->dev);
> +
> }
>
> static const struct snd_soc_dai_ops qcom_swrm_pdm_dai_ops = {
> @@ -1197,12 +1224,23 @@ static int qcom_swrm_get_port_config(struct qcom_swrm_ctrl *ctrl)
> static int swrm_reg_show(struct seq_file *s_file, void *data)
> {
> struct qcom_swrm_ctrl *swrm = s_file->private;
> - int reg, reg_val;
> + int reg, reg_val, ret;
> +
> + ret = pm_runtime_get_sync(swrm->dev);
> + if (ret < 0 && ret != -EACCES) {
> + dev_err_ratelimited(swrm->dev,
> + "pm_runtime_get_sync failed in %s, ret %d\n",
> + __func__, ret);
> + pm_runtime_put_noidle(swrm->dev);
... here it's missing?
I have a fix ready but thought I would check first if this was intentional
https://github.com/thesofproject/linux/pull/3602/commits/6353eec8dc971c5f0fda0166ae1777f71784ea32
> + }
>
> for (reg = 0; reg <= SWR_MSTR_MAX_REG_ADDR; reg += 4) {
> swrm->reg_read(swrm, reg, ®_val);
> seq_printf(s_file, "0x%.3x: 0x%.2x\n", reg, reg_val);
> }
> + pm_runtime_mark_last_busy(swrm->dev);
> + pm_runtime_put_autosuspend(swrm->dev);
> +
>
> return 0;
Powered by blists - more mailing lists