RE: [PATCH] usb: host: xhci-plat: add XHCI_MISSING_CAS quirk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Martin Kepplinger <martin.kepplinger@xxxxxxx>
> Sent: 2020年2月20日 1:37
> To: Jun Li <jun.li@xxxxxxx>; Peter Chen <peter.chen@xxxxxxx>;
> mathias.nyman@xxxxxxxxx
> Cc: linux-usb@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; Anson Huang
> <anson.huang@xxxxxxx>; shawnguo@xxxxxxxxxx; kernel@xxxxxxxxxxxxxx
> Subject: [PATCH] usb: host: xhci-plat: add XHCI_MISSING_CAS quirk
> 
> From: Li Jun <jun.li@xxxxxxx>
> 
> i.MX8MQ USB3 host needs XHCI_MISSING_CAS quirk to warm reset the port to enum the
> USB3 device plugged in while system sleep, as the port state is stuck in polling
> mode after resume.
> 
> Signed-off-by: Li Jun <jun.li@xxxxxxx>
> Acked-by: Peter Chen <peter.chen@xxxxxxx>
> ---
> 
> Hi,
> 
> Because resume from S3 suspend is broken for me on imx8mq, I stumbled upon this
> patch in NXP's linux tree. (Please note that I'm not the author and I've not yet
> put my SoB tag under it). This is just a
> question:
> 
> This patch (and the docs) clearly is missing in mainline Linux because the imx8mq
> devicetree description includes it (which does nothing now).
> 
> I've tested this and this particular addition doesn't fix my problem:
> 
> [   84.257538] imx8mq-usb-phy 381f0040.usb-phy: bus resume
> [   84.263195] imx8mq-usb-phy 382f0040.usb-phy: bus resume
> [   84.268898] dwc3 38100000.usb: driver resume
> 
> during resume from S3 suspend, here it still hangs.

Is your problem a system hang? If yes, this may another issue,
where the hang happens? dwc3_resume_common()?

The question patch is to give a warm reset for connected USB
device if the link state is not connect/CAS after system resume,
otherwise host will wait 2s for device appear:

[   44.834831] usb 2-1: Waited 2000ms for CONNECT
...
[   45.055718] PM: resume devices took 3.132 seconds

I will post this patch and doc(to be updated) to upstream later.

Li Jun
> 
> What else could be missing here? I'm using mainline Linux only of course.
> 
> thanks,
> 
>                             martin
> 
> 
> 
>  drivers/usb/host/xhci-plat.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index
> d90cd5ec09cf..4655016eaf45 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -291,6 +291,10 @@ static int xhci_plat_probe(struct platform_device *pdev)
> 
>  		device_property_read_u32(tmpdev, "imod-interval-ns",
>  					 &xhci->imod_interval);
> +
> +		if (device_property_read_bool(tmpdev,
> +					      "usb3-resume-missing-cas"))
> +			xhci->quirks |= XHCI_MISSING_CAS;
>  	}
> 
>  	hcd->usb_phy = devm_usb_get_phy_by_phandle(sysdev, "usb-phy", 0);
> --
> 2.20.1





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux