[PATCH v6 80/87] usb: gadget: at91_udc: register with udc-core
Anders Roxell <[email protected]>
| Newsgroups | gmane.comp.boot-loaders.u-boot.general,gmane.comp.boot-loaders.u-boot |
|---|---|
| Message-ID | <[email protected]> |
udc-core provides usb_gadget_register_driver() now, and it only knows controllers that called usb_add_gadget_udc(). at91_udc never does, so no gadget works there. at91_udc_ops already has udc_start and udc_stop, so only the registration is missing. taurus and smartweb call at91_udc_probe() from board code and there is no udevice to use as the parent, so pass NULL. udc-core only stores the pointer. Signed-off-by: Anders Roxell <[email protected]> --- drivers/usb/gadget/at91_udc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 5b0c55d59c8d..ee2af2d699ff 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c @@ -1494,6 +1494,16 @@ int at91_udc_probe(struct at91_udc_data *pdata) /* Clear all pending interrupts - UDP may be used by bootloader. */ at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff); + /* + * The boards call this from board code, there is no udevice to hang + * the gadget on, so pass NULL as the parent. + */ + retval = usb_add_gadget_udc(NULL, &udc->gadget); + if (retval) { + pr_err("failed to register udc: %d\n", retval); + return retval; + } + INFO("%s version %s\n", driver_name, DRIVER_VERSION); return 0; } -- 2.53.0