Messages in this thread | | | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: [PATCHv4 01/12] usb: dwc2: Update Kconfig to support dual-role | Date | Mon, 22 Sep 2014 18:10:04 +0200 |
| |
Hi,
On Friday, September 19, 2014 07:02:49 PM Paul Zimmerman wrote: > > From: Bartlomiej Zolnierkiewicz [mailto:b.zolnierkie@samsung.com] > > 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
| |