On 09/12/2014 11:18 AM, Bartlomiej Zolnierkiewicz wrote: > > [ added linux-kernel ML to cc: ] > > Hi, > > On Tuesday, August 26, 2014 11:19:55 AM dinguyen@xxxxxxxxxxxxxxxxxxxxx wrote: >> From: Dinh Nguyen <dinguyen@xxxxxxxxxxxxxxxxxxxxx> >> >> Add the proper init calls for either host, gadget or both in platform.c >> >> Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxxxxxxxxxxxxx> >> Acked-by: Paul Zimmerman <paulz@xxxxxxxxxxxx> >> --- >> drivers/usb/dwc2/core.h | 13 +++++++++++++ >> drivers/usb/dwc2/gadget.c | 2 +- >> drivers/usb/dwc2/platform.c | 28 ++++++++++++++++++++++++---- > > Where are correspoding changes to pci.c? > > I cannot find them in your patchset. The current PCI driver only supports HCD. If you want PCI to support gadget, then it can be done in a separate patchset. > >> 3 files changed, 38 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h >> index f55e62d..3a49a00 100644 >> --- a/drivers/usb/dwc2/core.h >> +++ b/drivers/usb/dwc2/core.h >> @@ -960,6 +960,19 @@ extern void dwc2_dump_global_registers(struct dwc2_hsotg *hsotg); >> */ >> extern u16 dwc2_get_otg_version(struct dwc2_hsotg *hsotg); >> >> +/* Gadget defines */ >> +#if defined(CONFIG_USB_DWC2_PERIPHERAL) || defined(CONFIG_USB_DWC2_DUAL_ROLE) >> +extern int s3c_hsotg_remove(struct dwc2_hsotg *hsotg); >> +extern void s3c_hsotg_core_init(struct dwc2_hsotg *dwc2); >> +extern int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int irq); >> +#else >> +static inline void s3c_hsotg_core_init(struct dwc2_hsotg *dwc2) {} >> +static inline int s3c_hsotg_remove(struct dwc2_hsotg *dwc2) >> +{ return 0; } >> +static inline int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int irq) >> +{ return 0; } >> +#endif >> + >> #if defined(CONFIG_USB_DWC2_HOST) || defined(CONFIG_USB_DWC2_DUAL_ROLE) >> /** >> * dwc2_hcd_get_frame_number() - Returns current frame number >> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c >> index 96f868f..efa68a0 100644 >> --- a/drivers/usb/dwc2/gadget.c >> +++ b/drivers/usb/dwc2/gadget.c >> @@ -3572,7 +3572,7 @@ err_clk: >> * s3c_hsotg_remove - remove function for hsotg driver >> * @pdev: The platform information for the driver >> */ >> -static int s3c_hsotg_remove(struct dwc2_hsotg *hsotg) >> +int s3c_hsotg_remove(struct dwc2_hsotg *hsotg) >> { >> usb_del_gadget_udc(&hsotg->gadget); >> >> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c >> index dd2f8f5..2871f351 100644 >> --- a/drivers/usb/dwc2/platform.c >> +++ b/drivers/usb/dwc2/platform.c >> @@ -92,7 +92,14 @@ static int dwc2_driver_remove(struct platform_device *dev) >> { >> struct dwc2_hsotg *hsotg = platform_get_drvdata(dev); >> >> - dwc2_hcd_remove(hsotg); >> + if (IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL)) >> + s3c_hsotg_remove(hsotg); >> + else if (IS_ENABLED(CONFIG_USB_DWC2_HOST)) >> + dwc2_hcd_remove(hsotg); >> + else { /* dual role */ >> + dwc2_hcd_remove(hsotg); >> + s3c_hsotg_remove(hsotg); > > Why not simply always call: > > dwc2_hcd_remove(hsotg); > s3c_hsotg_remove(hsotg); > > and add appropriate stub for dwc2_hcd_remove() for > CONFIG_USB_DWC2_PERIPHERAL=y? Yes...I'll do this for v5. Same for the init(). Dinh -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html