Message ID | 20221223233200.26089-13-quic_wcheng@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Introduce QC USB SND audio offloading support | expand |
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 <quic_wcheng@quicinc.com> > --- > 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 <quic_wcheng@quicinc.com> >> --- >> 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.
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,
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 <quic_wcheng@quicinc.com> --- sound/soc/qcom/qdsp6/q6usb.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)