[PATCH v3 3/8] USB: dwc2: Fix HBstLen setting for external DMA mode
Mattijs Korpershoek
mkorpershoek at baylibre.com
Tue Jan 7 10:16:43 CET 2025
Hi Junhui,
Thank you for the patch.
On sam., janv. 04, 2025 at 11:37, Junhui Liu <junhui.liu at pigmoral.tech> wrote:
> From: Kongyang Liu <seashell11234455 at gmail.com>
>
> The loop used to calculate HBstLen for extern DMA mode does not produce
> the correct result according to the datasheet [1]. Replacing that loop
> with a direct calculation using LOG2 to correctly assign the burst length
> in the GAHBCFG register for external DMA mode.
>
> [1] https://rockchip.fr/RK312X%20TRM/chapter-26-usb-otg-2-0.pdf#page=24
>
> Signed-off-by: Kongyang Liu <seashell11234455 at gmail.com>
> Reviewed-by: Marek Vasut <marex at denx.de>
> Tested-by: Peter Robinson <pbrobinson at gmail.com>
> Signed-off-by: Junhui Liu <junhui.liu at pigmoral.tech>
Reviewed-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>
>
> ---
> Additionally, the boards I have only use internal DMA mode, and it’s
> unclear which chips employ external DMA. The testing was performed by
> comparing against the datasheet, and the results are shown in [2].
>
> [2] https://gist.github.com/Judehahh/34530da390b58728102778406e602cb1
> ---
> drivers/usb/host/dwc2.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
> index 609de18faa3abc5f4ecb0c23cf3590966bad7992..954650d856a4f2e95d74e1b5716c0ebe83fa9ba8 100644
> --- a/drivers/usb/host/dwc2.c
> +++ b/drivers/usb/host/dwc2.c
> @@ -448,11 +448,8 @@ static void dwc_otg_core_init(struct udevice *dev)
> case DWC2_HWCFG2_ARCHITECTURE_SLAVE_ONLY:
> break;
> case DWC2_HWCFG2_ARCHITECTURE_EXT_DMA:
> - while (brst_sz > 1) {
> - ahbcfg |= ahbcfg + (1 << DWC2_GAHBCFG_HBURSTLEN_OFFSET);
> - ahbcfg &= DWC2_GAHBCFG_HBURSTLEN_MASK;
> - brst_sz >>= 1;
> - }
> + ahbcfg |= (LOG2(brst_sz >> 1) << DWC2_GAHBCFG_HBURSTLEN_OFFSET) &
> + DWC2_GAHBCFG_HBURSTLEN_MASK;
>
> #ifdef DWC2_DMA_ENABLE
> ahbcfg |= DWC2_GAHBCFG_DMAENABLE;
>
> --
> 2.47.1
More information about the U-Boot
mailing list