From: Robert Baldyga Date: Mon, 23 Feb 2015 12:57:14 +0000 (+0100) Subject: dwc3: gadget: register gadget in OTG core X-Git-Tag: submit/tizen/20150416.081342~37 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98a5dc87a8a6750fc3b31fa845a1cc7b83cd0ad8;p=platform%2Fkernel%2Flinux-exynos.git dwc3: gadget: register gadget in OTG core Gadget driver needs to be registered in OTG to perform dynamic role switching. Signed-off-by: Robert Baldyga --- diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index c16ec5558c7e..399a33d58fba 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -32,6 +32,7 @@ #include "debug.h" #include "core.h" +#include "otg.h" #include "gadget.h" #include "io.h" @@ -2774,8 +2775,18 @@ int dwc3_gadget_init(struct dwc3 *dwc) goto err4; } + if (dwc->dotg) { + ret = otg_set_peripheral(&dwc->dotg->otg, &dwc->gadget); + if (ret) { + dev_err(dwc->dev, "failed to set otg peripheral\n"); + goto err5; + } + } + return 0; +err5: + usb_del_gadget_udc(&dwc->gadget); err4: dwc3_gadget_free_endpoints(dwc); dma_free_coherent(dwc->dev, DWC3_EP0_BOUNCE_SIZE, @@ -2800,6 +2811,9 @@ err0: void dwc3_gadget_exit(struct dwc3 *dwc) { + if (dwc->dotg) + otg_set_peripheral(&dwc->dotg->otg, NULL); + usb_del_gadget_udc(&dwc->gadget); dwc3_gadget_free_endpoints(dwc);