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

From: Paul Zimmerman
Date: Fri Sep 19 2014 - 15:03:26 EST


> 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.

> Also there is only one mode selection for both PCI and platform
> drivers so it is no longer possible to have both gadget platform
> support and host PCI support in one kernel.

There will be, once I update the dwc2 PCI support to include the gadget
functionality. Then, if you enable USB_DWC2_DUAL_ROLE and DWC2_PCI, you
should be set.

In the meantime, I believe the only platform today that needs PCI support
for dwc2 is our internal Synopsys development board, which is not an ARM
platform. So I don't think there is a real issue here.

> I think it would be the best to replace global mode selection
> choice option with just two independent suboptions for combined
> host+gadget platform driver which will enable host and gadget
> support to be compiled into the driver (you would need to enable
> both for dual role support). The actual selection of the mode
> used should be done at runtime using device tree.

See above. The dwc3 driver uses the same scheme as Dinh has implemented,
and I don't think there have been any problems with it.

--
Paul

--
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/