Re: [PATCHv4 01/12] usb: dwc2: Update Kconfig to support dual-role

From: Bartlomiej Zolnierkiewicz
Date: Mon Sep 22 2014 - 12:10:20 EST



Hi,

On Friday, September 19, 2014 07:02:49 PM Paul Zimmerman wrote:
> > From: Bartlomiej Zolnierkiewicz [mailto:b.zolnierkie@xxxxxxxxxxx]
> > Sent: Friday, September 19, 2014 7:50 AM
> >
> > Unfortunately after second look there are even more problems with Kconfig
> > changes, please see below.
> >
> > > >
> > > >> if USB_DWC2
> > > >>
> > > >> +choice
> > > >> + bool "DWC2 Mode Selection"
> > > >> + default USB_DWC2_DUAL_ROLE if (USB && USB_GADGET)
> > > >> + default USB_DWC2_HOST if (USB && !USB_GADGET)
> > > >> + default USB_DWC2_PERIPHERAL if (!USB && USB_GADGET)
> >
> > Previously it was possible to have following functionalities in
> > one kernel (for multiplatform kernels):
> >
> > - host PCI support
> > - host platform support
> > - gadget platform support
> >
> > Now mode selection will determine the used mode for combined
> > host+gadget platform driver. It is no longer possible to have
> > host platform and gadget platform support in one kernel.
>
> Why not? Why wouldn't it work if you enable USB_DWC2_DUAL_ROLE? The
> dwc3 driver uses the same scheme as this, and I have not heard any
> complaints about that not working.

Ok, it seems that this should work fine if:

- USB_DWC2_DUAL_ROLE is set

- dwc2 handles dr_mode properly

[ BTW dwc3 has the following code in its ->probe which dwc2 lacks
(the code sets the default dr_mode value):

if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
dwc->dr_mode = USB_DR_MODE_HOST;
else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))
dwc->dr_mode = USB_DR_MODE_PERIPHERAL;

if (dwc->dr_mode == USB_DR_MODE_UNKNOWN)
dwc->dr_mode = USB_DR_MODE_OTG;

It seems that correspoding changes are needed for dwc2. ]

- proper dr_mode is set in the DT dwc2 entry if the board needs it

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/