mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Frank Wunderlich" <frank.wunderlich@linux.dev>
To: "AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Frank Wunderlich" <linux@fw-web.de>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Brian Masney" <bmasney+clk@redhat.com>,
	"Jerome Brunet" <jbrunet+clk@baylibre.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"Mathias Nyman" <mathias.nyman@intel.com>,
	"Chunfeng Yun" <chunfeng.yun@mediatek.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: "Frank Wunderlich" <frank-w@public-files.de>,
	"Daniel Golle" <daniel@makrotopia.org>,
	"Mihai Ordean" <research@mihaiordean.com>,
	"Chen-Yu Tsai" <wenst@chromium.org>,
	linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH 1/2] clk: mediatek: mt7988: keep combo-lane U3 PHY ref clock enabled
Date: Mon, 21 Sep 2026 11:16:16 +0000	[thread overview]
Message-ID: <6b691a27f27eee1a058426cc7fd5a3fbdbfd45a6@linux.dev> (raw)
In-Reply-To: <a71b6552-ea57-4575-89e1-14d414d53569@collabora.com>

Am 21. September 2026 um 11:59 schrieb "AngeloGioacchino Del Regno" <angelogioacchino.delregno@collabora.com>:

Hi angelo

> On 9/19/26 13:47, Frank Wunderlich wrote:
> 
> > 
> > From: Mihai Ordean <research@mihaiordean.com>
> >  CLK_INFRA_USB_PIPE is the reference clock of xphyu3port0, the U3/PCIe
> >  combo serdes. On MT7988 that lane is shared between ssusb0's SuperSpeed
> >  side and pcie2, but only the consumer that claims the PHY holds the gate.
> >  On the BPI-R4 Pro, ssusb0 is configured USB2-only (u3p-dis-msk=1) and
> >  pcie2 claims the lane for the CN13/CN15 M.2 slot, so pcie2 is the sole
> >  holder. u3p-dis-msk does not remove ssusb0's SuperSpeed root hub: that is
> >  decided by xhci_has_one_roothub(), which keys off usb3_rhub.num_ports
> >  from the xHCI capability registers, so bus 2 is registered and live
> >  regardless. When the M.2 slot is empty, pcie2 fails link training (-110)
> >  and its error path calls phy_power_off()/phy_exit(), which gates this
> >  clock - and sspxtp_sel with it, as nothing else consumes it. The still
> >  registered SuperSpeed root hub is then left polling a serdes whose PHY
> >  reference clock has just stopped,
> > 
> I'm not sure why said clock cannot be assigned to the USB controller as well
> as the PCIe PHY to keep the refcount high, avoiding to gate it?

the clock is assigned to the phy which is assigned to both consumers

mt7988a.dtsi:

		xsphy: xs-phy@11e10000 {
			compatible = "mediatek,mt7988-xsphy",
				     "mediatek,xsphy";
			...

			xphyu3port0: usb-phy@3400 {
				reg = <0x3400 0x500>;
				clocks = <&infracfg CLK_INFRA_USB_PIPE>;

		ssusb0: usb@11190000 {
			compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci";
			...
			phys = <&xphyu2port0 PHY_TYPE_USB2>,
			       <&xphyu3port0 PHY_TYPE_USB3>;
		};

		pcie2: pcie@11280000 {
			compatible = "mediatek,mt7986-pcie",
				     "mediatek,mt8192-pcie";
			...

			phys = <&xphyu3port0 PHY_TYPE_PCIE>;
			phy-names = "pcie-phy";
			...
		};

but this seems not enough...do you mean we need to define the clock again for both
consumers (e.g. via assigned-clock-parents property)?

regards Frank

> Cheers,
> Angelo
> 
> > 
> > and asserts the shared SSUSB interrupt
> >  outside the xHCI event ring; xhci_irq() reads USBSTS with EINT clear and
> >  returns IRQ_NONE, so the core disables the line ("nobody cared") and the
> >  next USB teardown blocks forever in xhci_disable_slot().
> >  Boot logs show the storm threshold being crossed 86-107 ms after the
> >  pcie2 probe failure, while the earlier combo-mux switch to PCIe mode
> >  (~550 ms before) causes no trouble, pointing at the clock gating rather
> >  than the mux as the trigger.
> >  Mark the gate CLK_IS_CRITICAL so the combo lane keeps its reference clock.
> >  Only port 0's gate is affected; ssusb1 uses CLK_INFRA_USB_PIPE_CK_P1.
> >  Signed-off-by: Mihai Ordean <research@mihaiordean.com>
> >  Signed-off-by: Frank Wunderlich <frank-w@public-files.de>


regards Frank

  reply	other threads:[~2026-09-21 11:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-19 11:47 [RFC PATCH 0/2] Fix mt7988 usb with shared phy Frank Wunderlich
2026-09-19 11:47 ` [PATCH 1/2] clk: mediatek: mt7988: keep combo-lane U3 PHY ref clock enabled Frank Wunderlich
2026-09-21  9:59   ` AngeloGioacchino Del Regno
2026-09-21 11:16     ` Frank Wunderlich [this message]
2026-09-19 11:47 ` [PATCH 2/2] usb: xhci-mtk: power down u3 ports skipped by u3p-dis-msk Frank Wunderlich

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=6b691a27f27eee1a058426cc7fd5a3fbdbfd45a6@linux.dev \
    --to=frank.wunderlich@linux.dev \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=bmasney+clk@redhat.com \
    --cc=chunfeng.yun@mediatek.com \
    --cc=daniel@makrotopia.org \
    --cc=frank-w@public-files.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=jbrunet+clk@baylibre.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@fw-web.de \
    --cc=mathias.nyman@intel.com \
    --cc=matthias.bgg@gmail.com \
    --cc=research@mihaiordean.com \
    --cc=sboyd@kernel.org \
    --cc=wenst@chromium.org \
    /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

all inboxes | Powered by JetHome®