From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
robh@kernel.org, vkoul@kernel.org
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
bgoswami@codeaurora.org, spapothi@codeaurora.org,
linux-kernel@vger.kernel.org, lgirdwood@gmail.com,
broonie@kernel.org
Subject: Re: [alsa-devel] [PATCH v4 2/2] soundwire: qcom: add support for SoundWire controller
Date: Fri, 1 Nov 2019 11:39:38 -0500 [thread overview]
Message-ID: <3d17a2a2-3033-e740-a466-e6cf7919adb2@linux.intel.com> (raw)
In-Reply-To: <926bd15f-e230-8f5e-378d-355bfeeecf27@linaro.org>
>>> +static int qcom_swrm_prepare(struct snd_pcm_substream *substream,
>>> + struct snd_soc_dai *dai)
>>> +{
>>> + struct qcom_swrm_ctrl *ctrl = dev_get_drvdata(dai->dev);
>>> +
>>> + if (!ctrl->sruntime[dai->id])
>>> + return -EINVAL;
>>> +
>>> + return sdw_enable_stream(ctrl->sruntime[dai->id]);
>>
>> So in hw_params you call sdw_prepare_stream() and in _prepare you call
>> sdw_enable_stream()?
>>
>> Shouldn't this be handled in a .trigger operation as per the
>> documentation "From ASoC DPCM framework, this stream state is linked to
>> .trigger() start operation."
>
> If I move sdw_enable/disable_stream() to trigger I get a big click noise
> on my speakers at start and end of every playback. Tried different
> things but nothing helped so far!. Enabling Speaker DACs only after
> SoundWire ports are enabled is working for me!
> There is nothing complicated on WSA881x codec side all the DACs are
> enabled/disabled as part of DAPM.
that looks like a work-around to me? If you do a bank switch without
anything triggered, you are most likely sending a bunch of zeroes to
your amplifier and enabling click/pop removals somehow.
It'd be worth looking into this, maybe there's a missing digital
mute/unmute that's not done in the right order?
>
>>
>> It's also my understanding that .prepare will be called multiples times,
>
> I agree, need to add some extra checks in the prepare to deal with this!
>
>> including for underflows and resume if you don't support INFO_RESUME.
>
>>
>> the sdw_disable_stream() is in .hw_free, which is not necessarily
>> called by the core, so you may have a risk of not being able to recover?
>
> Hmm, I thought hw_free is always called to release resources allocated
> in hw_params.
>
> In what cases does the core not call this?
yes, but prepare can be called without hw_free called first. that's why
we updated the state machine to allow for DISABLED|DEPREPARED ->
PREPARED transitions.
>>> +static const struct dev_pm_ops qcom_swrm_dev_pm_ops = {
>>> + SET_RUNTIME_PM_OPS(qcom_swrm_runtime_suspend,
>>> + qcom_swrm_runtime_resume,
>>> + NULL
>>> + )
>>> +};
>>
>> Maybe define pm_runtime at a later time then? We've had a lot of race
>> conditions to deal with, and it's odd that you don't support plain
>> vanilla suspend first?
>>
> Trying to keep things simple for the first patchset! added this dummies
> to keep the soundwire core happy!
If you are referring to the errors when pm_runtime is not enabled, we
fixed this is the series that's been out for review for 10 days now...
see '[PATCH 03/18] soundwire: bus: add PM/no-PM versions of read/write
functions', that should remove the need for dummy functions.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
WARNING: multiple messages have this Message-ID (diff)
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
robh@kernel.org, vkoul@kernel.org
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
bgoswami@codeaurora.org, linux-kernel@vger.kernel.org,
spapothi@codeaurora.org, lgirdwood@gmail.com, broonie@kernel.org
Subject: Re: [alsa-devel] [PATCH v4 2/2] soundwire: qcom: add support for SoundWire controller
Date: Fri, 1 Nov 2019 11:39:38 -0500 [thread overview]
Message-ID: <3d17a2a2-3033-e740-a466-e6cf7919adb2@linux.intel.com> (raw)
In-Reply-To: <926bd15f-e230-8f5e-378d-355bfeeecf27@linaro.org>
>>> +static int qcom_swrm_prepare(struct snd_pcm_substream *substream,
>>> + struct snd_soc_dai *dai)
>>> +{
>>> + struct qcom_swrm_ctrl *ctrl = dev_get_drvdata(dai->dev);
>>> +
>>> + if (!ctrl->sruntime[dai->id])
>>> + return -EINVAL;
>>> +
>>> + return sdw_enable_stream(ctrl->sruntime[dai->id]);
>>
>> So in hw_params you call sdw_prepare_stream() and in _prepare you call
>> sdw_enable_stream()?
>>
>> Shouldn't this be handled in a .trigger operation as per the
>> documentation "From ASoC DPCM framework, this stream state is linked to
>> .trigger() start operation."
>
> If I move sdw_enable/disable_stream() to trigger I get a big click noise
> on my speakers at start and end of every playback. Tried different
> things but nothing helped so far!. Enabling Speaker DACs only after
> SoundWire ports are enabled is working for me!
> There is nothing complicated on WSA881x codec side all the DACs are
> enabled/disabled as part of DAPM.
that looks like a work-around to me? If you do a bank switch without
anything triggered, you are most likely sending a bunch of zeroes to
your amplifier and enabling click/pop removals somehow.
It'd be worth looking into this, maybe there's a missing digital
mute/unmute that's not done in the right order?
>
>>
>> It's also my understanding that .prepare will be called multiples times,
>
> I agree, need to add some extra checks in the prepare to deal with this!
>
>> including for underflows and resume if you don't support INFO_RESUME.
>
>>
>> the sdw_disable_stream() is in .hw_free, which is not necessarily
>> called by the core, so you may have a risk of not being able to recover?
>
> Hmm, I thought hw_free is always called to release resources allocated
> in hw_params.
>
> In what cases does the core not call this?
yes, but prepare can be called without hw_free called first. that's why
we updated the state machine to allow for DISABLED|DEPREPARED ->
PREPARED transitions.
>>> +static const struct dev_pm_ops qcom_swrm_dev_pm_ops = {
>>> + SET_RUNTIME_PM_OPS(qcom_swrm_runtime_suspend,
>>> + qcom_swrm_runtime_resume,
>>> + NULL
>>> + )
>>> +};
>>
>> Maybe define pm_runtime at a later time then? We've had a lot of race
>> conditions to deal with, and it's odd that you don't support plain
>> vanilla suspend first?
>>
> Trying to keep things simple for the first patchset! added this dummies
> to keep the soundwire core happy!
If you are referring to the errors when pm_runtime is not enabled, we
fixed this is the series that's been out for review for 10 days now...
see '[PATCH 03/18] soundwire: bus: add PM/no-PM versions of read/write
functions', that should remove the need for dummy functions.
next prev parent reply other threads:[~2019-11-01 16:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-30 15:31 [alsa-devel] [PATCH v4 0/2] soundwire: Add support to Qualcomm SoundWire master Srinivas Kandagatla
2019-10-30 15:31 ` Srinivas Kandagatla
2019-10-30 15:31 ` [alsa-devel] [PATCH v4 1/2] dt-bindings: soundwire: add bindings for Qcom controller Srinivas Kandagatla
2019-10-30 15:31 ` Srinivas Kandagatla
2019-11-05 1:49 ` [alsa-devel] " Rob Herring
2019-11-05 1:49 ` Rob Herring
2019-10-30 15:31 ` [alsa-devel] [PATCH v4 2/2] soundwire: qcom: add support for SoundWire controller Srinivas Kandagatla
2019-10-30 15:31 ` Srinivas Kandagatla
2019-10-30 16:28 ` [alsa-devel] " Pierre-Louis Bossart
2019-10-30 16:28 ` Pierre-Louis Bossart
2019-11-01 16:17 ` Srinivas Kandagatla
2019-11-01 16:17 ` Srinivas Kandagatla
2019-11-01 16:39 ` Pierre-Louis Bossart [this message]
2019-11-01 16:39 ` Pierre-Louis Bossart
2019-11-01 17:22 ` Srinivas Kandagatla
2019-11-01 17:22 ` Srinivas Kandagatla
2019-11-01 17:52 ` Pierre-Louis Bossart
2019-11-01 17:52 ` Pierre-Louis Bossart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3d17a2a2-3033-e740-a466-e6cf7919adb2@linux.intel.com \
--to=pierre-louis.bossart@linux.intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=bgoswami@codeaurora.org \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=spapothi@codeaurora.org \
--cc=srinivas.kandagatla@linaro.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.