[PATCH 0/6] usb: cdns: fix suspend on J7200 by assuming reset on resume

From: Théo Lebrun
Date: Mon Nov 13 2023 - 09:27:09 EST


Hi,

Suspend on the TI J7200 platform is broken currently. There are two
components that need to be patched so that they assume reset on
resume: (1) the TI wrapper cdns3-ti & (2) the HOST role of the
controller.

Both only did their hardware configuration at probe time. We are talking
about suspend-to-RAM but also suspend-to-idle; we have power-domains
that turn off the controller in the second case which explains why
s2idle doesn't work either.

For cdns3-ti, we implement suspend & resume procedures only targeting
our newly created compatible (ti,j7200-usb). The goal is to avoid
breaking other platforms; it's unclear to me if power-domains are
toggling at s2idle on those as well. About S2R I don't think it's
targeted for those platforms.

For the HOST role, we add a quirk flag which gets passed as auxiliary
data by our wrapper TI driver. That avoids touching the behavior of
other platforms; again I'm unsure what is expected and I wouldn't want
to break stuff by re-initializing the role.

Those patches have been tested on the TI J7200 EVM GP. No need to
mention that other patches are required for S2R to work, but those will
be sent later down the road. Those USB patches are rather standalone.

Thanks,
Théo

--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Signed-off-by: Théo Lebrun <theo.lebrun@xxxxxxxxxxx>
---
Théo Lebrun (6):
dt-bindings: usb: ti,j721e-usb: add ti,j7200-usb compatible
usb: cdns3-ti: move reg writes from probe into an init_hw helper
usb: cdns3-ti: add suspend/resume procedures for J7200
usb: cdns3: support power-off of controller when in host role
usb: cdns3-ti: notify cdns core that hardware resets across suspend on J7200
arm64: dts: ti: k3-j7200: use J7200-specific USB compatible

.../devicetree/bindings/usb/ti,j721e-usb.yaml | 1 +
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 2 +-
drivers/usb/cdns3/cdns3-ti.c | 141 +++++++++++++++------
drivers/usb/cdns3/core.h | 1 +
drivers/usb/cdns3/host.c | 20 +++
5 files changed, 127 insertions(+), 38 deletions(-)
---
base-commit: 1d42d5c8f1ca11106579dcaadef4161fee03419e
change-id: 20231113-j7200-usb-suspend-2a47f2281e04

Best regards,
--
Théo Lebrun <theo.lebrun@xxxxxxxxxxx>