[PATCH] usb: dwc3-generic: Fix build errors when USB_DWC3_GADGET is disabled

Tom Rini trini at konsulko.com
Mon Feb 26 02:47:08 CET 2024


On Mon, Feb 26, 2024 at 01:02:04AM +0100, Jonas Karlman wrote:
> On 2024-02-25 23:01, Marek Vasut wrote:
> > On 2/25/24 4:27 PM, Jonas Karlman wrote:
> >> Build fail with the following error when DM_USB_GADGET is enabled and
> >> USB_DWC3_GADGET is disabled:
> >>
> >>    dwc3/dwc3-generic.o: in function `dm_usb_gadget_handle_interrupts':
> >>    dwc3/dwc3-generic.c:201:(.text.dm_usb_gadget_handle_interrupts+0x10):
> >>      undefined reference to `dwc3_gadget_uboot_handle_interrupt'
> >>
> >> Build also fail with the following error when USB_GADGET_DWC2_OTG +
> >> DM_USB_GADGET is enabled and USB_DWC3_GADGET is disabled:
> >>
> >>    gadget/dwc2_udc_otg.o: in function `dm_usb_gadget_handle_interrupts':
> >>    gadget/dwc2_udc_otg.c:947: multiple definition of `dm_usb_gadget_handle_interrupts';
> >>      dwc3/dwc3-generic.o:dwc3/dwc3-generic.c:197: first defined here
> >>
> >> Fix this by checking for USB_DWC3_GADGET in addition to DM_USB_GADGET.
> >>
> >> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> >> ---
> >>   drivers/usb/dwc3/dwc3-generic.c | 4 ++--
> >>   1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
> >> index 6fb2de8a5ace..891d01957619 100644
> >> --- a/drivers/usb/dwc3/dwc3-generic.c
> >> +++ b/drivers/usb/dwc3/dwc3-generic.c
> >> @@ -192,7 +192,7 @@ static int dwc3_generic_of_to_plat(struct udevice *dev)
> >>   	return 0;
> >>   }
> >>   
> >> -#if CONFIG_IS_ENABLED(DM_USB_GADGET)
> >> +#if IS_ENABLED(CONFIG_USB_DWC3_GADGET) && CONFIG_IS_ENABLED(DM_USB_GADGET)
> > 
> > Maybe just make USB_DWC3_GADGET depend on (or select?) DM_USB_GADGET , 
> > since I think the DWC3 code doesn't work without DM anyway .
> 
> Do you mean in addition to this? I do not think that alone is something
> that will address my intention to be able to disable the gadget part of
> the dwc3-generic driver.
> 
> Before this patch it was possible to enable disable host or gadget by
> using USB_HOST/SPL_USB_HOST and DM_USB_GADGET/SPL_DM_USB_GADGET options.
> 
> However, Rockchip RK3328 boards have dwc2 otg and dwc3 host, trying to
> use DM_USB_GADGET for dwc2 and USB_HOST for dwc3 is currently not
> possible and result in the build errors reported, i.e. multiple
> definition of dm_usb_gadget_handle_interrupts() and undefined reference
> to dwc3_gadget_uboot_handle_interrupt().
> 
> After this patch I can use dm dwc2 gadget and dwc3 host without issue.

Note that *DM_* symbols can be confusing. At this point, in SPL
SPL_DM_USB and SPL_DM_USB_GADGET are encouraged but not required for
host/gadget drivers. In full U-Boot, DM_USB is required for all host
drivers and really should be enabled in all cases for DM_USB_GADGET. We
can't enforce that at the Kconfig level because of, iirc, some of the
armv7 part gadget drivers (more than one). But for newer and still very
active chips, we should be using DM_USB_GADGET unconditionally in full
U-Boot.

So perhaps part of the issue is that dwc2/dwc3 need some hopefully now
legacy code removed.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240225/64e5e6af/attachment.sig>


More information about the U-Boot mailing list