linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Chen <peter.chen@nxp.com>
To: Igor Opaniuk <igor.opaniuk@gmail.com>,
	Fabio Estevam <festevam@gmail.com>,
	"stefan.wahren@i2se.com" <stefan.wahren@i2se.com>
Cc: Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	Stefan Agner <stefan.agner@toradex.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: RE: [chipidea] continuous USB resets on NXP i.MX 6ULL device
Date: Wed, 25 Sep 2019 00:44:39 +0000	[thread overview]
Message-ID: <VI1PR04MB53276A58AE76E5EADD822E498B870@VI1PR04MB5327.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <CAByghJYLLdtYiQGNCxJ4HEjm5Y1v0LQ1pc+dmHemoNWxx2h6jg@mail.gmail.com>

 
> 
> Hi Fabio, Peter, Stefan,
> 
> I've incidentally discovered your last year discussion in ML [1] (I hope it rings the
> bell) regarding the issue I'm still observing on the same device with the mainline
> kernel.
> 
> The difference between i.MX 6ULL EVK and this particular device, is that usbotg2 is
> used only in host mode with the usb hub integrated on the carrier board [2] [3].
> 
> root@colibri-imx6:~# lsusb -s 1:1 --tree
> /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
>     |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
> 
> However I can't reproduce the same behavior with i.MX 6ULL EVK with connected
> usb hub to usbotg2. Also this behavior can't be reproduced with NXP downstream
> kernel (Linux version 4.9.144) on my device.
> 
> After digging in a bit I found out that this happens only when autosuspend is
> enabled for the usb controller:
> echo auto > /sys/bus/usb/devices/1-1/power/control
> 
> It tries to go to suspend mode, but everytime fails and resumes:
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> suspended
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> resuming
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> suspended
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> suspended
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> suspended
> root@colibri-imx6:~# cat /sys/bus/usb/devices/1-1/power/runtime_status
> resuming
> 
> I'm observing ~2 seconds wakeup interrupts handled in ci_irq() in core.c and
> subsequent invocation of imx_controller_resume().
> 
> Meantime usboh3 remains enabled all the time (though
> imx_disable_unprepare_clks() should disable it):
> root@colibri-imx6:~# cat /sys/kernel/debug/clk/clk_summary | grep usb
>     usbphy2_gate                      1        1        0           0
>         0     0  50000
>     usbphy1_gate                      1        1        0           0
>         0     0  50000
>           pll7_usb_host               1        1        0   480000000
>         0     0  50000
>              usbphy2                  1        1        0   480000000
>         0     0  50000
>           pll3_usb_otg                2        3        0   480000000
>         0     0  50000
>              usbphy1                  0        0        0   480000000
>         0     0  50000
>                          usboh3       1        1        0    66000000
>         0     0  50000
> 
> While I'm trying to localize the root cause, maybe you can give some hints where to
> look into?
> 

Would you please look below two downstream patches see if it helps?

commit e8e95658fe75f3873e06d5ad72a6bf0bad40f068
Author: Li Jun <jun.li@nxp.com>
Date:   Mon Oct 16 23:13:19 2017 +0800

    MLK-16576 usb: phy: mxs: set hold_ring_off for USB2 PLL power up
    
    USB2 PLL use ring VCO, when the PLL power up, the ring VCO’s supply also
    ramp up. There is a possibility that the ring VCO start oscillation at
    multi nodes in this phase, especially for VCO which has many stages, then
    the multiwave will kept until PLL power down. Hold_ring_off(bit11) can
    force the VCO in one determined state when VCO supply start ramp up, to
    avoid this multiwave issue. Per IC design's suggestion it's better this
    bit can be off from 25us after pll power up to 25us before USB TX/RX.
    

commit aa4680d844a340a5b6b60484f6e04cb9ba613c65
Author: Peter Chen <peter.chen@nxp.com>
Date:   Wed Sep 7 12:16:59 2016 +0800

    MLK-13125 usb: phy: phy-mxs-usb: enable weak 1p1 regulator for imx6ul during suspend
    
    For imx6ul PHY, when the system enters suspend, its 1p1 is off by default,
    that may cause the PHY get inaccurate USB DP/DM value. If the USB wakeup
    is enabled at this time, the unexpected wakeup may occur when the system
    enters suspend.
    
    In this patch, when the vbus is there, we enable weak 1p1 during the PHY
    suspend API, in that case, the USB DP/DM will be accurate for USB PHY,
    then unexpected usb wakeup will not be occurred, especially for the USB
    charger is connected scenario. The user needs to enable PHY wakeup for
    USB wakeup function using below setting.

Peter

> Thanks for helping me!
> 
> [1]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc.info%2
> F%3Fl%3Dlinux-
> usb%26m%3D151844741732751&amp;data=02%7C01%7Cpeter.chen%40nxp.co
> m%7Cb61742d4ff4646c2cb9408d740d735fe%7C686ea1d3bc2b4c6fa92cd99c5c30
> 1635%7C0%7C0%7C637049165376859788&amp;sdata=eZdOVCuyVyA502DgwoN
> 16QmU5WDknrqCK5xmEbIovAE%3D&amp;reserved=0
> [2]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%
> 2Ftorvalds%2Flinux%2Fblob%2Fmaster%2Farch%2Farm%2Fboot%2Fdts%2Fimx6
> ull-
> colibri.dtsi%23L191&amp;data=02%7C01%7Cpeter.chen%40nxp.com%7Cb61742d
> 4ff4646c2cb9408d740d735fe%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C
> 0%7C637049165376859788&amp;sdata=7%2FVP15v1XGeQzweIu%2FaGhJEt1ov
> Tn4zl%2F3pghKBcGlw%3D&amp;reserved=0
> [3]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%
> 2Ftorvalds%2Flinux%2Fblob%2Fmaster%2Farch%2Farm%2Fboot%2Fdts%2Fimx6
> ull-colibri-eval-
> v3.dtsi%23L143&amp;data=02%7C01%7Cpeter.chen%40nxp.com%7Cb61742d4ff4
> 646c2cb9408d740d735fe%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7
> C637049165376859788&amp;sdata=M43BXrJedKgszOJkZ9W4h5bqQo9WBaxe7C
> L4tAD2Ouk%3D&amp;reserved=0
> 
> --
> Best regards - Freundliche Grüsse - Meilleures salutations
> 
> Igor Opaniuk
> 
> mailto: igor.opaniuk@gmail.com
> skype: igor.opanyuk
> +380 (93) 836 40 67
> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fua.linkedin.co
> m%2Fin%2Fiopaniuk&amp;data=02%7C01%7Cpeter.chen%40nxp.com%7Cb61742
> d4ff4646c2cb9408d740d735fe%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7
> C0%7C637049165376859788&amp;sdata=qzgWZaeraIUjiLG24s9x%2BUQEnRrJ2
> TiRKD%2F6ndna4Ws%3D&amp;reserved=0

  reply	other threads:[~2019-09-25  0:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-24 10:08 [chipidea] continuous USB resets on NXP i.MX 6ULL device Igor Opaniuk
2019-09-25  0:44 ` Peter Chen [this message]
2019-09-30 11:35   ` Igor Opaniuk
2019-10-02 16:15     ` Igor Opaniuk
2019-10-08  3:17       ` Peter Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=VI1PR04MB53276A58AE76E5EADD822E498B870@VI1PR04MB5327.eurprd04.prod.outlook.com \
    --to=peter.chen@nxp.com \
    --cc=festevam@gmail.com \
    --cc=igor.opaniuk@gmail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=marcel.ziswiler@toradex.com \
    --cc=stefan.agner@toradex.com \
    --cc=stefan.wahren@i2se.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).