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
WARNING: multiple messages have this Message-ID (diff)
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: linux-usb@vger.kernel.org, Daniel Golle <daniel@makrotopia.org>,
linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
Chen-Yu Tsai <wenst@chromium.org>,
Mihai Ordean <research@mihaiordean.com>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.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
next prev parent reply other threads:[~2026-09-21 11:16 UTC|newest]
Thread overview: 10+ 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 ` 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-19 11:47 ` Frank Wunderlich
2026-09-21 9:59 ` AngeloGioacchino Del Regno
2026-09-21 9:59 ` AngeloGioacchino Del Regno
2026-09-21 11:16 ` Frank Wunderlich [this message]
2026-09-21 11:16 ` Frank Wunderlich
2026-09-19 11:47 ` [PATCH 2/2] usb: xhci-mtk: power down u3 ports skipped by u3p-dis-msk Frank Wunderlich
2026-09-19 11:47 ` 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 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.