From: Peter Chen <peter.chen@kernel.org>
To: "Théo Lebrun" <theo.lebrun@bootlin.com>
Cc: "Pawel Laszczak" <pawell@cadence.com>,
"Roger Quadros" <rogerq@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Mathias Nyman" <mathias.nyman@intel.com>,
"Grégory Clement" <gregory.clement@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 0/5] Fix USB suspend on TI J7200 (cdns3-ti, cdns3, xhci)
Date: Sat, 14 Dec 2024 17:06:04 +0800 [thread overview]
Message-ID: <20241214090604.GC4102926@nchen-desktop> (raw)
In-Reply-To: <20241210-s2r-cdns-v6-0-28a17f9715a2@bootlin.com>
On 24-12-10 18:13:34, Théo Lebrun wrote:
> Currently, system-wide suspend is broken on J7200 because of a
> controller reset. The TI wrapper does not get re-initialised at resume
> and the first register access from cdns core fails.
>
> We address that in two ways:
>
> - In the cdns3-ti wrapper, if a reset has occured at resume,
> we reconfigure the hardware.
>
> - We add a xhci->lost_power flag. Identical to the XHCI_RESET_ON_RESUME
> quirk, expect that it can be set at runtime.
>
> At resume, to summarise, we do:
> xhci->lost_power = cdns_power_is_lost(cdns);
Is it possible you go to change xhci quirks runtime?
Peter
>
> The previous revision merged both XHCI_RESET_ON_RESUME quirk and
> xhci->lost_power concepts into a single one (the quirk was the default
> value of the flag). Now, we separate those. It simplifies things
> because no additional compatible is required; we can detect everything
> at runtime.
>
> Have a nice day,
> Théo
>
> Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
> ---
> Changes in v6:
> - Drop two upstreamed patches:
> 8e3dc6a51cca ("dt-bindings: usb: ti,j721e-usb: fix compatible list")
> d7fad3c5c53e ("arm64: dts: ti: k3-am64: add USB fallback compatible to J721E")
> - dt-bindings: fix dt-schema syntax in compatible property.
> - Change the approach about xhci->lost_power and the
> XHCI_RESET_ON_RESUME quirk. They are now separate and are checked
> independently at resume. The quirk stays the same, the flag can be
> detected at resume.
> - Drop many patches, now that we don't add a new compatible for J7200:
> dt-bindings: usb: ti,j721e-usb: add ti,j7200-usb compatible
> usb: cdns3: add quirk to platform data for reset-on-resume
> usb: cdns3-ti: grab auxdata from match data
> usb: cdns3-ti: add J7200 support with reset-on-resume behavior
> arm64: dts: ti: k3-j7200: use J7200-specific USB compatible
> - Link to v5: https://lore.kernel.org/r/20240726-s2r-cdns-v5-0-8664bfb032ac@bootlin.com
>
> Changes in v5:
> - dt-bindings: take Reviewed-by Rob and Conor for the first
> patch: "dt-bindings: usb: ti,j721e-usb: fix compatible list".
> - cdns3-ti:
> - We now do have HW init code inside cdns_ti_reset_and_init_hw().
> - It gets called at probe unconditionally and from ->runtime_resume()
> if a reset is detected (using the W1 register).
> - Auxdata patches have been reworked now that there is default auxdata
> since commit b50a2da03bd9 ("usb: cdns3-ti: Add workaround for
> Errata i2409"). We now have a patch that moves auxdata to match
> data: "usb: cdns3-ti: grab auxdata from match data".
> - cdns3/xhci: those are three new patches.
> - First, we rename "hibernated" to "lost_power" in arguments to
> the role ->resume() callbacks.
> - Then we add the xhci->lost_power flag, and only have it always copy
> the value from XHCI_RESET_ON_RESUME.
> - Finally, we set the flag from the host role driver.
> - Link to v4: https://lore.kernel.org/lkml/20240307-j7200-usb-suspend-v4-0-5ec7615431f3@bootlin.com/
>
> Changes in v4:
> - dt-bindings: usb: ti,j721e-usb:
> - Remove ti,am64-usb single compatible entry.
> - Reverse ordering of compatible pair j721e + am64
> (becoming am64 + j721e).
> - Add j7200 + j721e compatible pair (versus only j7200). It is the
> same thing as am64: only the integration differs with base j721e
> compatible.
> - NOT taking trailers from Conor as patches changed substantially.
> - arm64: dts: ti: j3-j7200:
> - Use j7200 + j721e compatible pair (versus only j7200 previously).
> - arm64: dts: ti: j3-am64:
> - Fix to use am64 + j721e compatible pair (versus only am64).
> This is a new patch.
> - Link to v3: https://lore.kernel.org/r/20240223-j7200-usb-suspend-v3-0-b41c9893a130@bootlin.com
>
> Changes in v3:
> - dt-bindings: use an enum to list compatibles instead of the previous
> odd construct. This is done in a separate patch from the one adding
> J7200 compatible.
> - dt-bindings: dropped Acked-by Conor as the changes were modified a lot.
> - Add runtime PM back. Put the init sequence in ->runtime_resume(). It
> gets called at probe for all compatibles and at resume for J7200.
> - Introduce a cdns_ti_match_data struct rather than rely on compatible
> from code.
> - Reorder code changes. Add infrastructure based on match data THEN add
> compatible and its match data.
> - DTSI: use only J7200 compatible rather than both J7200 then J721E.
> - Link to v2: https://lore.kernel.org/r/20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com
>
> Changes in v2:
> - Remove runtime PM from cdns3-ti; it brings nothing. That means our
> cdns3-ti suspend/resume patch is simpler; there is no need to handle
> runtime PM at suspend/resume.
> - Do not add cdns3 host role suspend/resume callbacks; they are not
> needed as core detects reset on resume & calls cdns_drd_host_on when
> needed.
> - cdns3-ti: Move usb2_refclk_rate_code assignment closer to the value
> computation.
> - cdns3/host.c: do not pass XHCI_SUSPEND_RESUME_CLKS quirk to xHCI; it
> is unneeded on our platform.
> - Link to v1: https://lore.kernel.org/r/20231113-j7200-usb-suspend-v1-0-ad1ee714835c@bootlin.com
>
> ---
> Théo Lebrun (5):
> usb: cdns3-ti: move reg writes to separate function
> usb: cdns3-ti: run HW init at resume() if HW was reset
> usb: cdns3: rename hibernated argument of role->resume() to lost_power
> xhci: introduce xhci->lost_power flag
> usb: cdns3: host: transmit lost_power signal from wrapper to XHCI
>
> drivers/usb/cdns3/cdns3-gadget.c | 4 +-
> drivers/usb/cdns3/cdns3-ti.c | 109 +++++++++++++++++++++++++--------------
> drivers/usb/cdns3/cdnsp-gadget.c | 2 +-
> drivers/usb/cdns3/core.h | 2 +-
> drivers/usb/cdns3/host.c | 10 ++++
> drivers/usb/host/xhci.c | 3 +-
> drivers/usb/host/xhci.h | 6 +++
> 7 files changed, 93 insertions(+), 43 deletions(-)
> ---
> base-commit: d1869e31ecb0bb7397c6a04c29f281864e9257e3
> change-id: 20240726-s2r-cdns-4b180cd960ff
>
> Best regards,
> --
> Théo Lebrun <theo.lebrun@bootlin.com>
>
next prev parent reply other threads:[~2024-12-14 9:06 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-10 17:13 [PATCH v6 0/5] Fix USB suspend on TI J7200 (cdns3-ti, cdns3, xhci) Théo Lebrun
2024-12-10 17:13 ` [PATCH v6 1/5] usb: cdns3-ti: move reg writes to separate function Théo Lebrun
2024-12-12 12:12 ` Roger Quadros
2024-12-10 17:13 ` [PATCH v6 2/5] usb: cdns3-ti: run HW init at resume() if HW was reset Théo Lebrun
2024-12-12 12:18 ` Roger Quadros
2024-12-13 15:28 ` Théo Lebrun
2024-12-17 21:13 ` Roger Quadros
2024-12-14 8:49 ` Peter Chen
2024-12-16 14:02 ` Théo Lebrun
2024-12-17 6:12 ` Peter Chen
2024-12-10 17:13 ` [PATCH v6 3/5] usb: cdns3: rename hibernated argument of role->resume() to lost_power Théo Lebrun
2024-12-14 8:51 ` Peter Chen
2024-12-10 17:13 ` [PATCH v6 4/5] xhci: introduce xhci->lost_power flag Théo Lebrun
2024-12-12 12:37 ` Roger Quadros
2024-12-13 16:03 ` Théo Lebrun
2024-12-17 21:00 ` Roger Quadros
2024-12-18 17:49 ` Théo Lebrun
2025-01-08 10:59 ` Théo Lebrun
2025-01-08 18:43 ` Mathias Nyman
2025-01-29 10:45 ` Théo Lebrun
2025-01-29 10:56 ` [PATCH 1/9] usb: host: xhci-plat: mvebu: use ->quirks instead of ->init_quirk() func Théo Lebrun
2025-01-29 10:56 ` [PATCH 2/9] usb: xhci: tegra: rename `runtime` boolean to `is_auto_runtime` Théo Lebrun
2025-01-29 10:56 ` [PATCH 3/9] usb: cdns3-ti: move reg writes to separate function Théo Lebrun
2025-01-29 10:56 ` [PATCH 4/9] usb: cdns3-ti: run HW init at resume() if HW was reset Théo Lebrun
2025-01-29 10:56 ` [PATCH 5/9] usb: cdns3: rename hibernated argument of role->resume() to lost_power Théo Lebrun
2025-01-29 10:56 ` [PATCH 6/9] usb: cdns3: call cdns_power_is_lost() only once in cdns_resume() Théo Lebrun
2025-01-29 10:56 ` [PATCH 7/9] usb: xhci: change xhci_resume() parameters to explicit the desired info Théo Lebrun
2025-01-29 10:56 ` [PATCH 8/9] usb: host: xhci-plat: allow upper layers to signal power loss Théo Lebrun
2025-01-29 10:56 ` [PATCH 9/9] usb: host: cdns3: forward lost power information to xhci Théo Lebrun
2024-12-10 17:13 ` [PATCH v6 5/5] usb: cdns3: host: transmit lost_power signal from wrapper to XHCI Théo Lebrun
2024-12-14 9:06 ` Peter Chen [this message]
2024-12-16 14:09 ` [PATCH v6 0/5] Fix USB suspend on TI J7200 (cdns3-ti, cdns3, xhci) Théo Lebrun
2024-12-17 6: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=20241214090604.GC4102926@nchen-desktop \
--to=peter.chen@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=gregory.clement@bootlin.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=pawell@cadence.com \
--cc=rogerq@kernel.org \
--cc=theo.lebrun@bootlin.com \
--cc=thomas.petazzoni@bootlin.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.