Hi, On Wed, Jul 10, 2013 at 04:11:52PM +0300, Roger Quadros wrote: > On 07/10/2013 02:42 PM, Felipe Balbi wrote: > > On Tue, Jul 09, 2013 at 02:16:32PM +0300, Roger Quadros wrote: > >> Hi, > >> > >> On 07/06/2013 03:52 PM, Ruchika Kharwar wrote: > >>> This patch adapts the dwc3 to use the device tree helper > >>> "of_usb_get_dr_mode" for the mode of operation of the dwc3 instance > >>> being probed. > >>> > >>> Signed-off-by: Ruchika Kharwar <ruchika@xxxxxx> > >>> --- > >>> drivers/usb/dwc3/core.c | 51 +++++++++++++++++++++++++---------------------- > >>> drivers/usb/dwc3/core.h | 5 ----- > >>> 2 files changed, 27 insertions(+), 29 deletions(-) > >>> > >>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > >>> index c35d49d..7b98e4f 100644 > >>> --- a/drivers/usb/dwc3/core.c > >>> +++ b/drivers/usb/dwc3/core.c > >>> @@ -517,14 +517,17 @@ static int dwc3_probe(struct platform_device *pdev) > >>> } > >>> > >>> if (IS_ENABLED(CONFIG_USB_DWC3_HOST)) > >>> - mode = DWC3_MODE_HOST; > >>> + mode = USB_DR_MODE_HOST; > >>> else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET)) > >>> - mode = DWC3_MODE_DEVICE; > >>> + mode = USB_DR_MODE_PERIPHERAL; > >>> else > >>> - mode = DWC3_MODE_DRD; > >>> + mode = of_usb_get_dr_mode(node); > >> > >> You need to check if "node" is not NULL before using > >> of_usb_get_dr_mode. > >> > >> Also what would happen if DT passes a mode which can't be supported > >> due to missing device driver? e.g. DT passes mode = "host" whereas > >> HOST is not enabled. > > > > hmm... look closely, she's already handling that, right ? If DWC3 > > Host-only, then mode is hardcoded to host, if DWC3 is Gadget-only, then > > mode is hardcoded to peripheral and if DWC3 is DRD, then she checks > > DeviceTree. > > > > In the above example if DT passes mode = "host" but > CONFIG_USB_DWC3_GADGET is enabled in config, the dwc3 driver will work > in gadget only mode. > There is no warning/information to the user that it can't be enabled > in host mode. > > All I'm saying is that there must be some kind of indication about the > requested mode not being available because of a configuration issue. oh, alright. But that's not part of $subject ;-) So there are just two fixes which needs to be made to this patch: 1) call of_usb_get_dr_mode() conditionally on dev->of_node 2) make sure platform_data can be used to pass the mode cheers -- balbi
Attachment:
signature.asc
Description: Digital signature