Re: [PATCH v2] usb: dwc3: Update nominal max votes for qcom usb

From: Peter Chen

Date: Mon Nov 09 2026 - 04:01:45 EST


On 26-11-05 15:32:16, Akash Kumar wrote:
> Increase the nominal max USB memory bandwidth vote to let DDR scale
> higher within its nominal corner, fixing glitches seen during
> simultaneous USB audio use cases.
>
> USB_MEMORY_PEAK_SS_BW is raised from 2500 MB/s to 4500 MB/s (+2000
> MB/s, ~1.8x). This ICC vote does not by itself determine DDR
> frequency; the vote-to-frequency mapping is platform-specific and
> comes from each target's interconnect/OPP table. On the tested
> targets, the old vote kept DDR pinned at 1 GHz within the nominal
> corner, even though DDR can run at 1.5 GHz (+50%) within the same
> corner. At 1 GHz, glitches were observed during multiple concurrent
> USB audio use cases.

How we decide which value is suitable, eg, you set 4500 here?
If DDR can run higher, and we have more stress test case like UAS
transfer + UVC transfer, do we need this value to be higher?

Is it okay we just set the highest value for USB, there is a platform
OPP table, and we let ICC choose the highest value for USB at specific
platform?

Peter

>
> Tested internally on RB3, RB4, RB8, Shikra, and other KLM targets.
> With the updated vote, DDR is allowed to run at the higher nominal
> frequency, and the following were measured (not merely projected):
>
> - USB memory throughput: 125 MB/s -> 145 MB/s (+16%)
> - RTD-USBC audio latency: 17.9 ms -> 16.6 ms (-7.3%)
>
> RTD-USBC is the round-trip audio latency measured over a USB-C audio
> path; lower is better. Note the +50% DDR frequency headroom does not
> map linearly to the +16% throughput gain, since throughput is also
> bounded by other factors along the USB/DDR path; the frequency
> increase is necessary but not sufficient to explain the full gain on
> its own.
>
> Signed-off-by: Akash Kumar <akash.kumar@xxxxxxxxxxxxxxxx>
> ---
> v2: Added Details of targets Tested.
> Added details for usb vote.
> Added KPI Details.
> Dropped USB AVG BW vote change which is not needed.
>
> Link to v1: https://lore.kernel.org/all/20260611081831.2743464-1-akash.kumar@xxxxxxxxxxxxxxxx/
> ---
> drivers/usb/dwc3/dwc3-qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> index ac68b4218b56..3a19385969dc 100644
> --- a/drivers/usb/dwc3/dwc3-qcom.c
> +++ b/drivers/usb/dwc3/dwc3-qcom.c
> @@ -46,7 +46,7 @@
> #define USB_MEMORY_AVG_HS_BW MBps_to_icc(240)
> #define USB_MEMORY_PEAK_HS_BW MBps_to_icc(700)
> #define USB_MEMORY_AVG_SS_BW MBps_to_icc(1000)
> -#define USB_MEMORY_PEAK_SS_BW MBps_to_icc(2500)
> +#define USB_MEMORY_PEAK_SS_BW MBps_to_icc(4500)
> #define APPS_USB_AVG_BW 0
> #define APPS_USB_PEAK_BW MBps_to_icc(40)
>
> --
> 2.43.0
>
>

--

Thanks,
Peter Chen