Check for if the PCM format is supported during the hw_params callback. If
the profile is not supported then the userspace ALSA entity will receive an
error, and can take further action.
Signed-off-by: Wesley Cheng <[email protected]>
---
sound/soc/qcom/qdsp6/q6usb.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c
index a9da6dec6c6f..128e0974db4e 100644
--- a/sound/soc/qcom/qdsp6/q6usb.c
+++ b/sound/soc/qcom/qdsp6/q6usb.c
@@ -42,7 +42,14 @@ static int q6usb_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{
- return 0;
+ struct q6usb_port_data *data = dev_get_drvdata(dai->dev);
+ int direction = substream->stream;
+ int ret;
+
+ ret = snd_soc_usb_find_format(data->active_idx, params, direction);
+
+ return ret;
+
}
static const struct snd_soc_dai_ops q6usb_ops = {
.hw_params = q6usb_hw_params,
Hello!
On 12/24/22 2:31 AM, Wesley Cheng wrote:
> Check for if the PCM format is supported during the hw_params callback. If
> the profile is not supported then the userspace ALSA entity will receive an
> error, and can take further action.
>
> Signed-off-by: Wesley Cheng <[email protected]>
> ---
> sound/soc/qcom/qdsp6/q6usb.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c
> index a9da6dec6c6f..128e0974db4e 100644
> --- a/sound/soc/qcom/qdsp6/q6usb.c
> +++ b/sound/soc/qcom/qdsp6/q6usb.c
> @@ -42,7 +42,14 @@ static int q6usb_hw_params(struct snd_pcm_substream *substream,
> struct snd_pcm_hw_params *params,
> struct snd_soc_dai *dai)
> {
> - return 0;
> + struct q6usb_port_data *data = dev_get_drvdata(dai->dev);
> + int direction = substream->stream;
> + int ret;
You don't seem to need this variable, just use *return*
snd_soc_usb_find_format(...).
> +
> + ret = snd_soc_usb_find_format(data->active_idx, params, direction);
> +
> + return ret;
> +
> }
> static const struct snd_soc_dai_ops q6usb_ops = {
> .hw_params = q6usb_hw_params,
MBR, Sergey
Hi Sergey,
On 12/24/2022 12:19 AM, Sergey Shtylyov wrote:
> Hello!
>
> On 12/24/22 2:31 AM, Wesley Cheng wrote:
>
>> Check for if the PCM format is supported during the hw_params callback. If
>> the profile is not supported then the userspace ALSA entity will receive an
>> error, and can take further action.
>>
>> Signed-off-by: Wesley Cheng <[email protected]>
>> ---
>> sound/soc/qcom/qdsp6/q6usb.c | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c
>> index a9da6dec6c6f..128e0974db4e 100644
>> --- a/sound/soc/qcom/qdsp6/q6usb.c
>> +++ b/sound/soc/qcom/qdsp6/q6usb.c
>> @@ -42,7 +42,14 @@ static int q6usb_hw_params(struct snd_pcm_substream *substream,
>> struct snd_pcm_hw_params *params,
>> struct snd_soc_dai *dai)
>> {
>> - return 0;
>> + struct q6usb_port_data *data = dev_get_drvdata(dai->dev);
>> + int direction = substream->stream;
>> + int ret;
>
> You don't seem to need this variable, just use *return*
> snd_soc_usb_find_format(...) >
Thanks for catching this... Will fix it in the next submission I make.
Happy holidays!
Thanks
Wesley Cheng
On Fri, Dec 23, 2022 at 03:31:58PM -0800, Wesley Cheng wrote:
> Check for if the PCM format is supported during the hw_params callback. If
> the profile is not supported then the userspace ALSA entity will receive an
> error, and can take further action.
Ideally we'd wire up constraints for this but that gets complicated with
DPCM so it's probably disproportionate effort. Otherwise other than the
subject lines not using ASoC on this and the previous change I don't
have any issues that other people didn't raise, but then most of the
complication is in the USB bits.