Re: [RFC PATCH v2 11/22] ASoC: qcom: Add USB backend ASoC driver for Q6

From: Wesley Cheng
Date: Mon Jan 30 2023 - 18:33:40 EST


Hi Pierre,

On 1/26/2023 7:44 AM, Pierre-Louis Bossart wrote:


On 1/25/23 21:14, Wesley Cheng wrote:
Create a USB BE component that will register a new USB port to the ASoC USB
framework. This will handle determination on if the requested audio
profile is supported by the USB device currently selected.

Can you clarify how? because ...


+static struct snd_soc_dai_driver q6usb_be_dais[] = {
+ {
+ .playback = {
+ .stream_name = "USB BE RX",
+ .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
+ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
+ SNDRV_PCM_RATE_192000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE |
+ SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U16_BE |
+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE |
+ SNDRV_PCM_FMTBIT_U24_LE | SNDRV_PCM_FMTBIT_U24_BE,
+ .channels_min = 1,
+ .channels_max = 2,
+ .rate_max = 192000,
+ .rate_min = 8000,
+ },
+ .id = USB_RX,
+ .name = "USB_RX_BE",
+ .ops = &q6usb_ops,
+ },
+};

... here I see a single DAI, so presumably ONE endpoint can be supported?


One USB audio device can be supported.
one AFE port = one USB audio device

I didn't see in the rest of the code how a card with multiple endpoint
would be rejected, nor how the capabilities are checked?


Need to take a look at this query a bit more. Let me try to pass in a format that can't be supported by the audio DSP, and see if the formats specified in this structure will not allow userspace to start the session.

When you say a "card with multiple endpoints" are you referring to a USB device that exposes multiple data (ISOC let's say) eps for its data interface? I haven't run into a device like that.

Thanks
Wesley Cheng