From: Sebastian Reichel <sebastian.reichel@collabora.com>
To: Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Heiko Stuebner <heiko@sntech.de>,
Frank Wang <frank.wang@rock-chips.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>
Cc: Andy Yan <andy.yan@rock-chips.com>,
Dmitry Baryshkov <lumag@kernel.org>,
Yubing Zhang <yubing.zhang@rock-chips.com>,
Alexey Charkov <alchark@gmail.com>,
linux-phy@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
linux-kernel@vger.kernel.org, kernel@collabora.com,
devicetree@vger.kernel.org,
Sebastian Reichel <sebastian.reichel@collabora.com>
Subject: [PATCH v4 12/16] phy: rockchip: usbdp: Drop DP HPD handling
Date: Tue, 28 Apr 2026 18:13:51 +0200 [thread overview]
Message-ID: <20260428-rockchip-usbdp-cleanup-v4-12-7775671ece22@collabora.com> (raw)
In-Reply-To: <20260428-rockchip-usbdp-cleanup-v4-0-7775671ece22@collabora.com>
Drop the HPD handling logic from the USBDP PHY. The registers involved
require the display controller power domain being enabled and thus the
HPD signal should be handled by the displayport controller itself.
Apart from that the HPD handling as it is done here is incorrect and
misses hotplug events happening after the USB-C connector (e.g. when
a USB-C to HDMI adapter is involved and the HDMI cable is replugged).
Proper USB-C DP HPD support requires some restructuring of the DP
controller driver, which will happen independent of this patch. The
mainline kernel does not yet support USB-C DP AltMode on RK3588 and
RK3576, so it is fine to drop this code without adding the counterpart
in the DRM in an atomic change.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
drivers/phy/rockchip/phy-rockchip-usbdp.c | 47 +------------------------------
1 file changed, 1 insertion(+), 46 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockchip/phy-rockchip-usbdp.c
index 77ad2a89d4f2..3f1233f50686 100644
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
@@ -186,8 +186,6 @@ struct rk_udphy {
u32 dp_lane_sel[4];
u32 dp_aux_dout_sel;
u32 dp_aux_din_sel;
- bool dp_sink_hpd_sel;
- bool dp_sink_hpd_cfg;
unsigned int link_rate;
unsigned int lanes;
u8 bw;
@@ -579,19 +577,6 @@ static void rk_udphy_dp_lane_enable(struct rk_udphy *udphy, int dp_lanes)
CMN_DP_CMN_RSTN, FIELD_PREP(CMN_DP_CMN_RSTN, 0x0));
}
-static void rk_udphy_dp_hpd_event_trigger(struct rk_udphy *udphy, bool hpd)
-{
- const struct rk_udphy_cfg *cfg = udphy->cfgs;
-
- udphy->dp_sink_hpd_sel = true;
- udphy->dp_sink_hpd_cfg = hpd;
-
- if (!udphy->dp_in_use)
- return;
-
- rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger, hpd);
-}
-
static void rk_udphy_mode_set(struct rk_udphy *udphy, u8 mode)
{
if (udphy->mode == mode)
@@ -1360,22 +1345,7 @@ static int rk_udphy_typec_mux_set(struct typec_mux_dev *mux,
break;
}
- if (state->alt && state->alt->svid == USB_TYPEC_DP_SID) {
- struct typec_displayport_data *data = state->data;
-
- if (!data) {
- rk_udphy_dp_hpd_event_trigger(udphy, false);
- } else if (data->status & DP_STATUS_IRQ_HPD) {
- rk_udphy_dp_hpd_event_trigger(udphy, false);
- usleep_range(750, 800);
- rk_udphy_dp_hpd_event_trigger(udphy, true);
- } else if (data->status & DP_STATUS_HPD_STATE) {
- rk_udphy_mode_set(udphy, mode);
- rk_udphy_dp_hpd_event_trigger(udphy, true);
- } else {
- rk_udphy_dp_hpd_event_trigger(udphy, false);
- }
- }
+ rk_udphy_mode_set(udphy, mode);
mutex_unlock(&udphy->mutex);
return 0;
@@ -1531,20 +1501,6 @@ static int rk_udphy_probe(struct platform_device *pdev)
return 0;
}
-static int __maybe_unused rk_udphy_resume(struct device *dev)
-{
- struct rk_udphy *udphy = dev_get_drvdata(dev);
-
- if (udphy->dp_sink_hpd_sel)
- rk_udphy_dp_hpd_event_trigger(udphy, udphy->dp_sink_hpd_cfg);
-
- return 0;
-}
-
-static const struct dev_pm_ops rk_udphy_pm_ops = {
- SET_LATE_SYSTEM_SLEEP_PM_OPS(NULL, rk_udphy_resume)
-};
-
static const char * const rk_udphy_rst_list[] = {
"init", "cmn", "lane", "pcs_apb", "pma_apb"
};
@@ -1649,7 +1605,6 @@ static struct platform_driver rk_udphy_driver = {
.driver = {
.name = "rockchip-usbdp-phy",
.of_match_table = rk_udphy_dt_match,
- .pm = &rk_udphy_pm_ops,
},
};
module_platform_driver(rk_udphy_driver);
--
2.53.0
next prev parent reply other threads:[~2026-04-28 16:14 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 16:13 [PATCH v4 00/16] phy: rockchip: usbdp: Fixes, DP 1-lane support and cleanups Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 01/16] dt-bindings: phy: rockchip-usbdp: add improved ports scheme Sebastian Reichel
2026-05-05 15:44 ` Rob Herring
2026-05-05 15:45 ` Rob Herring (Arm)
2026-04-28 16:13 ` [PATCH v4 02/16] phy: rockchip: usbdp: Do not loose USB3 PHY status Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 03/16] phy: rockchip: usbdp: Keep clocks running on PHY re-init Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 04/16] phy: rockchip: usbdp: Amend SSC modulation deviation Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 05/16] phy: rockchip: usbdp: Fix LFPS detect threshold control Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 06/16] phy: rockchip: usbdp: Add missing mode_change update Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 07/16] phy: rockchip: usbdp: Support single-lane DP Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 08/16] phy: rockchip: usbdp: Rename DP lane functions Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 09/16] phy: rockchip: usbdp: Use FIELD_PREP_WM16_CONST Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 10/16] phy: rockchip: usbdp: Cleanup DP lane selection function Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 11/16] phy: rockchip: usbdp: Register DP aux bridge Sebastian Reichel
2026-04-28 16:13 ` Sebastian Reichel [this message]
2026-04-28 16:13 ` [PATCH v4 13/16] phy: rockchip: usbdp: Rename mode_change to phy_needs_reinit Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 14/16] phy: rockchip: usbdp: Re-init the PHY on orientation change Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 15/16] phy: rockchip: usbdp: Factor out lane_mux_sel setup Sebastian Reichel
2026-04-28 16:13 ` [PATCH v4 16/16] phy: rockchip: usbdp: Use guard functions for mutex Sebastian Reichel
2026-05-03 16:50 ` [PATCH v4 00/16] phy: rockchip: usbdp: Fixes, DP 1-lane support and cleanups Vinod Koul
2026-05-03 19:12 ` Heiko Stuebner
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=20260428-rockchip-usbdp-cleanup-v4-12-7775671ece22@collabora.com \
--to=sebastian.reichel@collabora.com \
--cc=alchark@gmail.com \
--cc=andy.yan@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=frank.wang@rock-chips.com \
--cc=heiko@sntech.de \
--cc=kernel@collabora.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=lumag@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=robh@kernel.org \
--cc=vkoul@kernel.org \
--cc=yubing.zhang@rock-chips.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox