Re: [PATCH v3 00/28] Introduce QC USB SND audio offloading support

From: Pierre-Louis Bossart
Date: Wed Mar 15 2023 - 10:31:39 EST


Hi Wesley,

> Sorry made a mistake on the diagram.  There is no connection from
> SOC-USB to the APR/GLINK.  The Q6USB driver will be the one that is
> going to configure some of the Q6AFE ports along withe the Q6AFE DAI
> driver.
>
> |            ASoC
> ----------------------------------
> |  _________________________
> | |sm8250 platform card     |
> | |_________________________|
> |         |           |
> |      ___V____   ____V____
> |     |Q6USB   | |Q6AFE    |  #5
> |     |"codec" | |"cpu"    |
> |     |________| |_________|
> |         ^  ^        ^
> |      #6 |  |________|
> |      ___V____     |
> |     |SOC-USB |    |
> #7    |        |    |
> ----->|________|    |
> ---                 |
> | |                 |
> | |    _____________V________
> | |   |APR/GLINK             |
> | |   |______________________|
> | |              ^
> | | #8           |
> | |   ___________V___________
> | |->|audio DSP              |
> |    |_______________________|
> |
> |
>
>>>

Makes sense now, thank you for the clarification.

I'll have to dig more in this 'soc-usb' block, it's clearly a key
component that will have to maintain a consistent state across two
different parts of the stack and deal with probe/remove/shutdown.

>> My initial thought was to add a 'DSP offload' PCM to the USB card, you
>> added a "USB offload" PCM to the DSP card. Nice logical swap!
>>
>> Your proposal might be easier in practice since there's typically a
>> vendor-specific configuration file (UCM or custom) file for the DSP,
>> where USB information can be added.
>>
>> It's more problematic to change a generic USB card as we know it today
>> and bolt vendor-specific DSP information on top.
>>
>> The only open I have with your option is that there are still two
>> control paths to e.g. set the volume. It would be so much easier for
>> userspace if there was a single volume control no matter what path is
>> used for data, or make sure the kcontrols are 'mirrored' somehow. If we
>> found a way to address this issue that would be ideal.
>>
>
> Got it.  Let me look to see if that is something we can address/add.  I
> think the current implementation is that USB SND will expose some mixer
> controls based on the UAC descriptor parsing.  Then when they want to
> change the volume (for example) it will result in a USB SETUP transaction.
>
> So USB SND will eventually be the entity controlling these changes.

That's probably ok then, am I getting this right that the the DSP card
would not expose any USB-related kcontrols then, i.e. the ONLY path to
change volumes, etc., would through the regular USB card kcontrols?

That would limit the changes in the platform sound card to the addition
of a PCM USB device.