From: Wesley Cheng <quic_wcheng@quicinc.com> To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>, <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>, <perex@perex.cz>, <broonie@kernel.org>, <lgirdwood@gmail.com>, <andersson@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <gregkh@linuxfoundation.org>, <Thinh.Nguyen@synopsys.com>, <bgoswami@quicinc.com>, <tiwai@suse.com>, <robh+dt@kernel.org>, <agross@kernel.org> Cc: <devicetree@vger.kernel.org>, <alsa-devel@alsa-project.org>, <linux-arm-msm@vger.kernel.org>, <linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <quic_jackp@quicinc.com>, <quic_plai@quicinc.com> Subject: Re: [RFC PATCH 02/14] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Date: Fri, 6 Jan 2023 16:51:21 -0800 [thread overview] Message-ID: <ed3d16a2-0320-596f-4091-ceef2d11fca9@quicinc.com> (raw) In-Reply-To: <65820e0e-be8b-c574-98d0-a2e60ee4be76@linux.intel.com> Hi Pierre, On 1/6/2023 8:09 AM, Pierre-Louis Bossart wrote: > >>>> The QC ADSP is able to support USB playback and capture, so that the >>>> main application processor can be placed into lower CPU power modes. >>>> This >>>> adds the required AFE port configurations and port start command to >>>> start >>>> an audio session. >>> >>> It would be good to clarify what sort of endpoints can be supported. I >>> presume the SOF-synchronous case is handled, but how would you deal with >>> async endpoints with feedback (be it explicit or implicit)? >>> >> >> Sure, both types of feedback endpoints are expected to be supported by >> the audio DSP, as well as sync eps. We have the logic there to modify >> the audio sample size accordingly. > > did you mean modify samples per USB frame (or uframe), so as to change > the pace at which data is transferred? If yes it'd be the same for Intel. > Yes, sorry for not being clear. Your understanding is correct. >>>> static const struct snd_soc_dapm_route q6afe_dapm_routes[] = { >>>> + {"USB Playback", NULL, "USB_RX"}, >>> >>> ... but here RX means playback? >>> >>> I am not sure I get the convention on directions and what is actually >>> supported? >>> >> >> The notation is based on the direction of which the audio data is >> sourced or pushed on to the DSP. So in playback, the DSP is receiving >> audio data to send, and capture, it is transmitting audio data received. >> (although we do not support capture yet) > > ok, it'd be good to add a comment on this convention. Usually RX/TX is > bus-centric. > Sure, will do. >> >>>> +struct afe_param_id_usb_cfg { >>>> +/* Minor version used for tracking USB audio device configuration. >>>> + * Supported values: AFE_API_MINOR_VERSION_USB_AUDIO_CONFIG >>>> + */ >>>> + u32 cfg_minor_version; >>>> +/* Sampling rate of the port. >>>> + * Supported values: >>>> + * - AFE_PORT_SAMPLE_RATE_8K >>>> + * - AFE_PORT_SAMPLE_RATE_11025 >>>> + * - AFE_PORT_SAMPLE_RATE_12K >>>> + * - AFE_PORT_SAMPLE_RATE_16K >>>> + * - AFE_PORT_SAMPLE_RATE_22050 >>>> + * - AFE_PORT_SAMPLE_RATE_24K >>>> + * - AFE_PORT_SAMPLE_RATE_32K >>>> + * - AFE_PORT_SAMPLE_RATE_44P1K >>>> + * - AFE_PORT_SAMPLE_RATE_48K >>>> + * - AFE_PORT_SAMPLE_RATE_96K >>>> + * - AFE_PORT_SAMPLE_RATE_192K >>>> + */ >>>> + u32 sample_rate; >>>> +/* Bit width of the sample. >>>> + * Supported values: 16, 24 >>>> + */ >>>> + u16 bit_width; >>>> +/* Number of channels. >>>> + * Supported values: 1 and 2 >>> >>> that aligns with my feedback on the cover letter, if you connect a >>> device that can support from than 2 channels should the DSP even expose >>> this DSP-optimized path? >>> >> >> My assumption is that I programmed the DAIs w/ PCM formats supported by >> the DSP, so I think the ASoC core should not allow userspace to choose >> that path if the hw params don't fit/match. > > Right, but the point I was trying to make is that if the device can do > more, why create this DSP path at all? > Yeah, I think this brings me back to needing to understand a bit more of how the userspace chooses which PCM device to use. At least for our current use cases, userspace would always route through the offload path, regardless of if the device can do more. It will just select a lower audio profile if so. >> >>> Oh and I forgot, what happens if there are multiple audio devices >>> connected, can the DSP deal with all of them? If not, how is this >>> handled? >>> >> >> This is one topic that we were pretty open ended on. At least on our >> implementation, only one audio device can be supported at a time. We >> choose the latest device that was plugged in or discovered by the USB >> SND class driver. > > Similar case for Intel. I have to revisit this, I don't recall the details. > Got it. Thanks Wesley Cheng
WARNING: multiple messages have this Message-ID (diff)
From: Wesley Cheng <quic_wcheng@quicinc.com> To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>, <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>, <perex@perex.cz>, <broonie@kernel.org>, <lgirdwood@gmail.com>, <andersson@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <gregkh@linuxfoundation.org>, <Thinh.Nguyen@synopsys.com>, <bgoswami@quicinc.com>, <tiwai@suse.com>, <robh+dt@kernel.org>, <agross@kernel.org> Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, quic_jackp@quicinc.com, quic_plai@quicinc.com Subject: Re: [RFC PATCH 02/14] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Date: Fri, 6 Jan 2023 16:51:21 -0800 [thread overview] Message-ID: <ed3d16a2-0320-596f-4091-ceef2d11fca9@quicinc.com> (raw) In-Reply-To: <65820e0e-be8b-c574-98d0-a2e60ee4be76@linux.intel.com> Hi Pierre, On 1/6/2023 8:09 AM, Pierre-Louis Bossart wrote: > >>>> The QC ADSP is able to support USB playback and capture, so that the >>>> main application processor can be placed into lower CPU power modes. >>>> This >>>> adds the required AFE port configurations and port start command to >>>> start >>>> an audio session. >>> >>> It would be good to clarify what sort of endpoints can be supported. I >>> presume the SOF-synchronous case is handled, but how would you deal with >>> async endpoints with feedback (be it explicit or implicit)? >>> >> >> Sure, both types of feedback endpoints are expected to be supported by >> the audio DSP, as well as sync eps. We have the logic there to modify >> the audio sample size accordingly. > > did you mean modify samples per USB frame (or uframe), so as to change > the pace at which data is transferred? If yes it'd be the same for Intel. > Yes, sorry for not being clear. Your understanding is correct. >>>> static const struct snd_soc_dapm_route q6afe_dapm_routes[] = { >>>> + {"USB Playback", NULL, "USB_RX"}, >>> >>> ... but here RX means playback? >>> >>> I am not sure I get the convention on directions and what is actually >>> supported? >>> >> >> The notation is based on the direction of which the audio data is >> sourced or pushed on to the DSP. So in playback, the DSP is receiving >> audio data to send, and capture, it is transmitting audio data received. >> (although we do not support capture yet) > > ok, it'd be good to add a comment on this convention. Usually RX/TX is > bus-centric. > Sure, will do. >> >>>> +struct afe_param_id_usb_cfg { >>>> +/* Minor version used for tracking USB audio device configuration. >>>> + * Supported values: AFE_API_MINOR_VERSION_USB_AUDIO_CONFIG >>>> + */ >>>> + u32 cfg_minor_version; >>>> +/* Sampling rate of the port. >>>> + * Supported values: >>>> + * - AFE_PORT_SAMPLE_RATE_8K >>>> + * - AFE_PORT_SAMPLE_RATE_11025 >>>> + * - AFE_PORT_SAMPLE_RATE_12K >>>> + * - AFE_PORT_SAMPLE_RATE_16K >>>> + * - AFE_PORT_SAMPLE_RATE_22050 >>>> + * - AFE_PORT_SAMPLE_RATE_24K >>>> + * - AFE_PORT_SAMPLE_RATE_32K >>>> + * - AFE_PORT_SAMPLE_RATE_44P1K >>>> + * - AFE_PORT_SAMPLE_RATE_48K >>>> + * - AFE_PORT_SAMPLE_RATE_96K >>>> + * - AFE_PORT_SAMPLE_RATE_192K >>>> + */ >>>> + u32 sample_rate; >>>> +/* Bit width of the sample. >>>> + * Supported values: 16, 24 >>>> + */ >>>> + u16 bit_width; >>>> +/* Number of channels. >>>> + * Supported values: 1 and 2 >>> >>> that aligns with my feedback on the cover letter, if you connect a >>> device that can support from than 2 channels should the DSP even expose >>> this DSP-optimized path? >>> >> >> My assumption is that I programmed the DAIs w/ PCM formats supported by >> the DSP, so I think the ASoC core should not allow userspace to choose >> that path if the hw params don't fit/match. > > Right, but the point I was trying to make is that if the device can do > more, why create this DSP path at all? > Yeah, I think this brings me back to needing to understand a bit more of how the userspace chooses which PCM device to use. At least for our current use cases, userspace would always route through the offload path, regardless of if the device can do more. It will just select a lower audio profile if so. >> >>> Oh and I forgot, what happens if there are multiple audio devices >>> connected, can the DSP deal with all of them? If not, how is this >>> handled? >>> >> >> This is one topic that we were pretty open ended on. At least on our >> implementation, only one audio device can be supported at a time. We >> choose the latest device that was plugged in or discovered by the USB >> SND class driver. > > Similar case for Intel. I have to revisit this, I don't recall the details. > Got it. Thanks Wesley Cheng
next prev parent reply other threads:[~2023-01-07 0:52 UTC|newest] Thread overview: 171+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-12-23 23:31 [RFC PATCH 00/14] Introduce QC USB SND audio offloading support Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 01/14] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 6:48 ` Greg KH 2022-12-24 6:48 ` Greg KH 2022-12-23 23:31 ` [RFC PATCH 02/14] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 1:37 ` kernel test robot 2023-01-04 23:33 ` Pierre-Louis Bossart 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 16:09 ` Pierre-Louis Bossart 2023-01-07 0:51 ` Wesley Cheng [this message] 2023-01-07 0:51 ` Wesley Cheng 2023-01-05 18:09 ` Krzysztof Kozlowski 2023-01-05 18:09 ` Krzysztof Kozlowski 2023-01-06 1:32 ` Wesley Cheng 2023-01-06 1:32 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 03/14] ASoC: qcom: Add USB backend ASoC driver for Q6 Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 2:17 ` kernel test robot 2022-12-24 2:17 ` kernel test robot 2022-12-24 9:02 ` Greg KH 2022-12-24 9:02 ` Greg KH 2022-12-27 13:04 ` Mark Brown 2022-12-27 13:04 ` Mark Brown 2022-12-27 13:45 ` Greg KH 2022-12-27 13:45 ` Greg KH 2022-12-27 14:02 ` Takashi Iwai 2022-12-27 14:02 ` Takashi Iwai 2022-12-27 14:11 ` Mark Brown 2022-12-27 14:11 ` Mark Brown 2022-12-27 15:11 ` Mark Brown 2022-12-27 15:11 ` Mark Brown 2022-12-27 21:06 ` Wesley Cheng 2022-12-27 21:06 ` Wesley Cheng 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 21:07 ` Wesley Cheng 2023-01-04 23:41 ` Pierre-Louis Bossart 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 16:16 ` Pierre-Louis Bossart 2022-12-23 23:31 ` [RFC PATCH 04/14] sound: usb: card: Introduce USB SND vendor op callbacks Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 11:03 ` Dmitry Baryshkov 2022-12-24 11:03 ` Dmitry Baryshkov 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 21:33 ` Dmitry Baryshkov 2022-12-27 21:33 ` Dmitry Baryshkov 2022-12-29 13:49 ` Oliver Neukum 2022-12-29 13:49 ` Oliver Neukum 2022-12-29 14:20 ` Takashi Iwai 2022-12-29 14:20 ` Takashi Iwai 2022-12-30 7:10 ` Wesley Cheng 2022-12-30 7:10 ` Wesley Cheng 2023-01-03 12:20 ` Oliver Neukum 2023-01-03 12:20 ` Oliver Neukum 2023-01-03 12:49 ` Takashi Iwai 2023-01-03 12:49 ` Takashi Iwai 2023-01-03 23:45 ` Wesley Cheng 2023-01-03 23:45 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 05/14] sound: usb: Export USB SND APIs for modules Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 6:48 ` Greg KH 2022-12-24 6:48 ` Greg KH 2022-12-23 23:31 ` [RFC PATCH 06/14] usb: core: hcd: Introduce USB HCD APIs for interrupter management Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 8:54 ` Greg KH 2022-12-24 8:54 ` Greg KH 2022-12-27 21:13 ` Wesley Cheng 2022-12-27 21:13 ` Wesley Cheng 2022-12-24 15:29 ` Alan Stern 2022-12-24 15:29 ` Alan Stern 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 21:07 ` Wesley Cheng 2022-12-28 8:59 ` Oliver Neukum 2022-12-28 8:59 ` Oliver Neukum 2022-12-28 15:16 ` Alan Stern 2022-12-28 15:16 ` Alan Stern 2022-12-28 20:31 ` Wesley Cheng 2022-12-28 20:31 ` Wesley Cheng 2022-12-29 1:41 ` Alan Stern 2022-12-29 1:41 ` Alan Stern 2022-12-23 23:31 ` [RFC PATCH 07/14] usb: host: xhci: Add XHCI secondary interrupter support Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 5:59 ` kernel test robot 2022-12-24 8:55 ` Greg KH 2022-12-24 8:55 ` Greg KH 2022-12-28 15:47 ` Mathias Nyman 2022-12-28 15:47 ` Mathias Nyman 2022-12-29 21:14 ` Wesley Cheng 2022-12-29 21:14 ` Wesley Cheng 2023-01-02 16:38 ` Mathias Nyman 2023-01-02 16:38 ` Mathias Nyman 2023-01-09 20:24 ` Wesley Cheng 2023-01-09 20:24 ` Wesley Cheng 2023-01-10 19:47 ` Mathias Nyman 2023-01-10 19:47 ` Mathias Nyman 2023-01-10 20:03 ` Wesley Cheng 2023-01-10 20:03 ` Wesley Cheng 2023-01-11 3:11 ` Wesley Cheng 2023-01-11 3:11 ` Wesley Cheng 2023-01-12 9:24 ` Mathias Nyman 2023-01-12 9:24 ` Mathias Nyman 2023-01-13 0:34 ` Wesley Cheng 2023-01-13 0:34 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 08/14] usb: dwc3: Add DT parameter to specify maximum number of interrupters Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 11:13 ` Dmitry Baryshkov 2022-12-24 11:13 ` Dmitry Baryshkov 2022-12-26 12:28 ` Krzysztof Kozlowski 2022-12-26 12:28 ` Krzysztof Kozlowski 2022-12-27 21:06 ` Wesley Cheng 2022-12-27 21:06 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 09/14] sound: usb: Introduce QC USB SND offloading support Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 2:27 ` kernel test robot 2023-01-02 17:28 ` Takashi Iwai 2023-01-02 17:28 ` Takashi Iwai 2023-01-04 22:38 ` Wesley Cheng 2023-01-04 22:38 ` Wesley Cheng 2023-01-04 23:51 ` Pierre-Louis Bossart 2023-01-06 1:06 ` Wesley Cheng 2023-01-06 1:06 ` Wesley Cheng 2022-12-23 23:31 ` [RFC PATCH 10/14] sound: usb: card: Check for support for requested audio format Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 8:59 ` Greg KH 2022-12-24 8:59 ` Greg KH 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 21:07 ` Wesley Cheng 2022-12-27 20:31 ` kernel test robot 2022-12-23 23:31 ` [RFC PATCH 11/14] sound: soc: soc-usb: Add PCM format check API for USB backend Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 2:17 ` kernel test robot 2022-12-24 2:17 ` kernel test robot 2022-12-23 23:31 ` [RFC PATCH 12/14] sound: soc: qcom: qusb6: Ensure PCM format is supported by USB audio device Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-24 8:19 ` Sergey Shtylyov 2022-12-24 8:19 ` Sergey Shtylyov 2022-12-24 8:50 ` Wesley Cheng 2022-12-24 8:50 ` Wesley Cheng 2023-01-03 17:44 ` Mark Brown 2023-01-03 17:44 ` Mark Brown 2022-12-23 23:31 ` [RFC PATCH 13/14] ASoC: dt-bindings: Add Q6USB backend bindings Wesley Cheng 2022-12-23 23:31 ` Wesley Cheng 2022-12-26 12:25 ` Krzysztof Kozlowski 2022-12-26 12:25 ` Krzysztof Kozlowski 2022-12-23 23:32 ` [RFC PATCH 14/14] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng 2022-12-23 23:32 ` Wesley Cheng 2022-12-26 12:27 ` Krzysztof Kozlowski 2022-12-26 12:27 ` Krzysztof Kozlowski 2023-01-03 17:46 ` Mark Brown 2023-01-03 17:46 ` Mark Brown 2023-01-05 18:09 ` Krzysztof Kozlowski 2023-01-05 18:09 ` Krzysztof Kozlowski 2023-01-04 0:46 ` Rob Herring 2023-01-04 0:46 ` Rob Herring 2022-12-24 6:45 ` [RFC PATCH 00/14] Introduce QC USB SND audio offloading support Greg KH 2022-12-24 6:45 ` Greg KH 2022-12-24 8:49 ` Wesley Cheng 2022-12-24 8:49 ` Wesley Cheng 2022-12-27 14:36 ` Mark Brown 2022-12-27 14:36 ` Mark Brown 2023-01-04 23:19 ` Pierre-Louis Bossart 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 1:05 ` Wesley Cheng 2023-01-06 15:57 ` Pierre-Louis Bossart 2023-01-07 0:46 ` Wesley Cheng 2023-01-07 0:46 ` Wesley Cheng
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=ed3d16a2-0320-596f-4091-ceef2d11fca9@quicinc.com \ --to=quic_wcheng@quicinc.com \ --cc=Thinh.Nguyen@synopsys.com \ --cc=agross@kernel.org \ --cc=alsa-devel@alsa-project.org \ --cc=andersson@kernel.org \ --cc=bgoswami@quicinc.com \ --cc=broonie@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=lgirdwood@gmail.com \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-usb@vger.kernel.org \ --cc=mathias.nyman@intel.com \ --cc=perex@perex.cz \ --cc=pierre-louis.bossart@linux.intel.com \ --cc=quic_jackp@quicinc.com \ --cc=quic_plai@quicinc.com \ --cc=robh+dt@kernel.org \ --cc=srinivas.kandagatla@linaro.org \ --cc=tiwai@suse.com \ /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: linkBe 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.