From 09d452118bfb51fa977dd57826fc687649b1fda5 Mon Sep 17 00:00:00 2001 From: Zhang Yubing Date: Fri, 21 Jun 2024 14:55:28 +0800 Subject: [PATCH] phy: rockchip: usbdp: support not trigger dp hpd If a mux device in DPTX driver, usbdp phy should not trigger dp hpd. DPTX driver will call phy_set_mode to transfer this info. Change-Id: I1d13858a9115a688bd9560eb41a2f86c76e73316 Signed-off-by: Zhang Yubing --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockchip/phy-rockchip-usbdp.c index d84339bfec64..a1072d584c33 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -181,6 +181,7 @@ struct rockchip_udphy { u32 dp_aux_din_sel; bool dp_sink_hpd_sel; bool dp_sink_hpd_cfg; + bool dp_hpd_disabled; u8 bw; int id; int dp_lanes; @@ -625,7 +626,8 @@ static int udphy_dp_hpd_event_trigger(struct rockchip_udphy *udphy, bool hpd) udphy->dp_sink_hpd_sel = true; udphy->dp_sink_hpd_cfg = hpd; - grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger, hpd); + if (!udphy->dp_hpd_disabled) + grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger, hpd); return 0; } @@ -1319,8 +1321,20 @@ static int rockchip_dp_phy_configure(struct phy *phy, static int rockchip_dp_phy_set_mode(struct phy *phy, enum phy_mode mode, int submode) { struct rockchip_udphy *udphy = phy_get_drvdata(phy); + int ret = 0; - return udphy_dpaux_select(udphy); + switch (submode) { + case 0: + ret = udphy_dpaux_select(udphy); + break; + case 1: + udphy->dp_hpd_disabled = true; + break; + default: + break; + } + + return ret; } static const struct phy_ops rockchip_dp_phy_ops = {