Subject: Re: [PATCH 7/8] usb: dwc3: qcom: Start USB in 'host mode' on the SDM845

From: Lee Jones <[email-masked]>
Date: Wed, 5 Jun 2019 09:34:54 +0100

On Wed, 05 Jun 2019, Bjorn Andersson wrote:

> On Tue 04 Jun 03:44 PDT 2019, Lee Jones wrote:
> 
> > When booting with Device Tree, the current default boot configuration
> > table option, the request to boot via 'host mode' comes from the
> > "dr_mode" property.
> 
> This has been the default on the MTP, but this is changing as this is
> causing issues when connected downstream from a hub (the typical
> development case for the primary USB port of a phone like device) and
> more importantly we don't have support for the PMIC blocks that control
> VBUS.

My point is not about which mode is currently chosen.  It's more about
the capability of choosing which mode is appropriate for a given
system via DT.

> Once these issues are resolved the dr_mode would be "otg".

OTG doesn't work on this H/W, so we need to specify "host" mode.

> > A property of the same name can be used inside
> > ACPI tables too.  However it is missing from the SDM845's ACPI tables
> > so we have to supply this information using Platform Device Properites
> > instead.
> > 
> 
> Afaict this would install a fall-back property, so in the case that we
> have specified dr_mode in DT (or ACPI) that would take precedence. So

That's correct.

> the commit message should reflect that this redefines the default choice
> to be "host", rather than "otg".

No problem.

> Which is in conflict with what's described for dr_mode in
> Documentation/devicetree/bindings/usb/generic.txt

This implementation only affects ACPI based platforms.  When booting
with DT, the description in that DT related document is still
accurate.

> And this driver is used on a range of different Qualcomm platforms, so I
> don't think this is SDM845 specific.

ACPI based platforms?

All the ones I've seen use the XHCI USB driver directly ("PNP0D10").
 
> > Signed-off-by: Lee Jones <[email-masked]>
> > ---
> >  drivers/usb/dwc3/dwc3-qcom.c | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> > 
> > diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> > index 349bf549ee44..f21fdd6cdd1a 100644
> > --- a/drivers/usb/dwc3/dwc3-qcom.c
> > +++ b/drivers/usb/dwc3/dwc3-qcom.c
> > @@ -468,6 +468,11 @@ static const struct acpi_device_id dwc3_qcom_acpi_match[] = {
> >  };
> >  MODULE_DEVICE_TABLE(acpi, dwc3_qcom_acpi_match);
> >  
> > +static const struct property_entry dwc3_qcom_acpi_properties[] = {
> > +	PROPERTY_ENTRY_STRING("dr_mode", "host"),
> > +	{}
> > +};
> > +
> >  static int dwc3_qcom_probe(struct platform_device *pdev)
> >  {
> >  	struct device_node	*np = pdev->dev.of_node, *dwc3_np;
> > @@ -603,6 +608,13 @@ static int dwc3_qcom_probe(struct platform_device *pdev)
> >  			goto platform_unalloc;
> >  		}
> >  
> > +		ret = platform_device_add_properties(qcom->dwc3,
> > +						     dwc3_qcom_acpi_properties);
> > +		if (ret < 0) {
> > +			dev_err(&pdev->dev, "failed to add properties\n");
> > +			goto platform_unalloc;
> > +		}
> > +
> >  		ret = platform_device_add(qcom->dwc3);
> >  		if (ret) {
> >  			dev_err(&pdev->dev, "failed to add device\n");

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel