mbox series

[RFC,0/4] USB support for TQMa8MPxL + MBa8MPxL

Message ID 20220622130440.955465-1-alexander.stein@ew.tq-group.com (mailing list archive)
Headers show
Series USB support for TQMa8MPxL + MBa8MPxL | expand

Message

Alexander Stein June 22, 2022, 1:04 p.m. UTC
Hi everybody,

this is an RFC for USB support on TQMa8MPxL + MBa8MPxL. DT support is currently
in progress at [1]. This series is on top of that.
The DT configuration itself (patch 4) is rather straight forward, but leads to
the following dmesg errors regarding superspeed ports:
> [    8.549243] hub 2-1:1.0: hub_ext_port_status failed (err = -110)
> [   22.885263] usb 2-1: Failed to suspend device, error -110

This hardware works fine using the downstream kernel, because for imx8mp this
ITP sync feature is enabled conditionally [2] & [3].
Hacking this into mainline resulted in a working superspeed setup as well. I
also noticed that on some android kernel [4] depending in IP core version either
GCTL.SOFTITPSYNC or GFLADJ.GFLADJ_REFCLK_LPM_SEL is enabled unconditionally.
So I opted for the latter one using some quirk (patch 1-3).

I have to admit I do not know what this is actually about, nor why my setup
does not work without this change or why this fixed my problem. So maybe
someone with more knowledge can say if this is the way to go or what this is
about.

Note: I excluded the DT guys (for now) as this is more about usb internals, the
DT patches are for completeness.

Thanks and best regards,
Alexander

[1] https://patchwork.kernel.org/project/linux-arm-kernel/cover/20220622114949.889274-1-alexander.stein@ew.tq-group.com/
[2] https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/usb/dwc3/dwc3-imx8mp.c?h=lf-5.10.y#n134
[3] https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/usb/dwc3/core.c?h=lf-5.10.y#n333
[4] https://android.googlesource.com/kernel/msm/+/87a6b154766907020cc74c7726e8a68aaa9d7f6b%5E%21/#F0

Alexander Stein (4):
  dt-bindings: usb: dwc3: Add gfladj-refclk-lpm-sel-quirk
  usb: dwc3: core: add gfladj_refclk_lpm_sel quirk
  arm64: dts: imx8mp: Add snps,gfladj-refclk-lpm-sel quirk to USB nodes
  arm64: dts: tqma8mpql: add USB support

 .../devicetree/bindings/usb/snps,dwc3.yaml    |  5 ++
 .../freescale/imx8mp-tqma8mpql-mba8mpxl.dts   | 68 ++++++++++++++++++-
 arch/arm64/boot/dts/freescale/imx8mp.dtsi     |  2 +
 drivers/usb/dwc3/core.c                       |  8 ++-
 drivers/usb/dwc3/core.h                       |  2 +
 5 files changed, 83 insertions(+), 2 deletions(-)

Comments

Jun Li Sept. 5, 2022, 3:28 a.m. UTC | #1
Hi Alexander,
Alexander Stein <alexander.stein@ew.tq-group.com> 于2022年6月22日周三 21:13写道:
>
> Hi everybody,
>
> this is an RFC for USB support on TQMa8MPxL + MBa8MPxL. DT support is currently
> in progress at [1]. This series is on top of that.
> The DT configuration itself (patch 4) is rather straight forward, but leads to
> the following dmesg errors regarding superspeed ports:
> > [    8.549243] hub 2-1:1.0: hub_ext_port_status failed (err = -110)
> > [   22.885263] usb 2-1: Failed to suspend device, error -110
>
> This hardware works fine using the downstream kernel, because for imx8mp this
> ITP sync feature is enabled conditionally [2] & [3].
> Hacking this into mainline resulted in a working superspeed setup as well. I
> also noticed that on some android kernel [4] depending in IP core version either
> GCTL.SOFTITPSYNC or GFLADJ.GFLADJ_REFCLK_LPM_SEL is enabled unconditionally.
> So I opted for the latter one using some quirk (patch 1-3).
>
> I have to admit I do not know what this is actually about, nor why my setup
> does not work without this change or why this fixed my problem. So maybe
> someone with more knowledge can say if this is the way to go or what this is
> about.

Found this patch set some late.

Yes, your choice to enable GFLADJ.GFLADJ_REFCLK_LPM_SEL
is the right setting after checking with Synopsys, which can make USB2
with LPM supported devices work as well, as SOFTIPSYNC has below
description:
"If you plan to enable hardware-based LPM or software-based LPM
(PORTPMSC. HLE=1), then you cannot use this feature. Turn off
this feature by setting this bit to '0' and use the
GFLADJ.GFLADJ_REFCLK_LPM_SEL feature."

So could you please remove RFC mark and resume this
topic?

Thanks
Li Jun

>
> Note: I excluded the DT guys (for now) as this is more about usb internals, the
> DT patches are for completeness.
>
> Thanks and best regards,
> Alexander
>
> [1] https://patchwork.kernel.org/project/linux-arm-kernel/cover/20220622114949.889274-1-alexander.stein@ew.tq-group.com/
> [2] https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/usb/dwc3/dwc3-imx8mp.c?h=lf-5.10.y#n134
> [3] https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/usb/dwc3/core.c?h=lf-5.10.y#n333
> [4] https://android.googlesource.com/kernel/msm/+/87a6b154766907020cc74c7726e8a68aaa9d7f6b%5E%21/#F0
>
> Alexander Stein (4):
>   dt-bindings: usb: dwc3: Add gfladj-refclk-lpm-sel-quirk
>   usb: dwc3: core: add gfladj_refclk_lpm_sel quirk
>   arm64: dts: imx8mp: Add snps,gfladj-refclk-lpm-sel quirk to USB nodes
>   arm64: dts: tqma8mpql: add USB support
>
>  .../devicetree/bindings/usb/snps,dwc3.yaml    |  5 ++
>  .../freescale/imx8mp-tqma8mpql-mba8mpxl.dts   | 68 ++++++++++++++++++-
>  arch/arm64/boot/dts/freescale/imx8mp.dtsi     |  2 +
>  drivers/usb/dwc3/core.c                       |  8 ++-
>  drivers/usb/dwc3/core.h                       |  2 +
>  5 files changed, 83 insertions(+), 2 deletions(-)
>
> --
> 2.25.1
>