From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5ED223DA7C6 for ; Tue, 15 Sep 2026 15:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484783; cv=none; b=TjPde1TUU2EttxYHUDFXI/4VUq1fbx5y4XdeFLXd2xJK6BHUDsJX/QSu0tbtlLf7sTpdtvwue4UDRX47tJLyXnVVQuQp/e02SisbIamerBKGpgkYGEWG2xFCM1dQVdXpuUYiVREny0ZyxplSNVqQseAH9H+98ezUK6RT0KONMlE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484783; c=relaxed/simple; bh=T/O/y40l4OvjR7/IWyTPneK/pahaizerNwZ71+yNOZM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oD7K1wgHJabMsBmjldJR7ckI4E66D2YamywXm8bTzMR8CPGTkQmzvYN7HKf7JrvaFR9T0ikkhZzaVx+qEjn/RA52SrZANzHKeZpKv0KTol3gbJg8zlJaVIBoTku1BLV5eCfpmYLhtHpgBUgz0vi1913Ou4hs4BvmNePhn/sZadk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=nwzgb/dm; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="nwzgb/dm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484778; bh=T/O/y40l4OvjR7/IWyTPneK/pahaizerNwZ71+yNOZM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nwzgb/dmrNgmbwEf+liKQCN9vDHeJV6OxQms+UMCAUxfjjCqmQHLjTkkW8ky7e+bi 81z1KphxNhPxyq8N2VgfqtyQ9qGLbDQQkqEsCAR4oERdo3Cnb9VQdGc10cuO9tqqYq n3bAv46g2jNH1zjx+OTiwQ0RommQ/MR/00WAxV8dOUBfD6K30JIp094MI2zY70/UMN IPyz57mtS+DkEwpwhhR6AaG6qEVt94uiCVWUJxJwB7Leo9z99bXGpc6jfgcgLSIZeB KnzjUJQsASBoW0aEMDPRmKPXUo423Gv9eAujjzxQtJVtKZI/SKsOIOM36f6Esnb62c jnbJAcnhvNl4A== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 950CE17E005A; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 5F209480029; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:04 +0200 Subject: [PATCH v15 01/11] phy: rockchip: usbdp: Drop DP HPD handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-1-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5925; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=T/O/y40l4OvjR7/IWyTPneK/pahaizerNwZ71+yNOZM=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXum9kixylWlkHUFtZbGwfMJVKXFV6RdK6 Jg2iraPb+3XFIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7pAAoJENju1/PI O/qaxcYP/RtZTwjP2MjCNbTlqi0zschkWczstGYQteQopq46qymO/SXExVhZnDjd/SsdR4pCUys 52npyHJAw8O84QixyY7XZyVNJ8HVeb6xXWoaiSykXzttI2i061ESCTiexn7jB0pXkeqUc+T6WYc pfkZBcu+t2DNZRWb/GLoP+XyfT870QVRif3NiFgWls+PCHxkKzTUJZ1xean7D6N19AbFa0SFqwT Ueg0CufAeZFocAIdGklOK6D1pNuwAjkQH65US+UVKDUXuf6pKWyxRMp+7LeyRtA3Ba+8FqoIRgC 9SAUiY01+t6d9xLwrUpRc/h26Y8LrsMoLPB/XNF1ChyXjsuxLVJaGfobHKumI/dB2J58mlwkybg jmLYze6sIBVuvdaA60YbgrD7GcITmxLSToWitscMFhY/j9z5BSu12sRpsr3iWuKS1j1u5nvu1vG rkDEsr0ypUSA/a3U4WomJIpTYbzwBkZr6+oSDmsZ1M+Ekg0Gguqh4MYyflwkwTHB7J+PydozDxt +3AnhgjUmBAn5iss8zIzAN/Z3HBCoGqSkkAfdrbPRY3scBulwAocjSbayI+3U1LxdMqTPsTRs36 VqeypZFTVidAAcY3PB9/ANQ9c6LH0jmc5gZZyRDhbp+7TYKrOwKIPH2rQcydz/99K9W/tlxHFyU E3yRRuBvkqEHr3HSpQlwwvQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A 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. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 85 ++++-----------------------= ---- 1 file changed, 9 insertions(+), 76 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index fa8324879a97..03a276c08fa8 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -127,7 +127,6 @@ struct rk_udphy_grf_cfg { =20 struct rk_udphy_vogrf_cfg { /* vo-grf */ - struct rk_udphy_grf_reg hpd_trigger; u32 dp_lane_reg; }; =20 @@ -185,14 +184,11 @@ 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; int id; =20 - bool dp_in_use; int dp_lanes; =20 /* PHY const config */ @@ -576,19 +572,6 @@ static void rk_udphy_dp_lane_enable(struct rk_udphy *u= dphy, int dp_lanes) CMN_DP_CMN_RSTN, FIELD_PREP(CMN_DP_CMN_RSTN, 0x0)); } =20 -static void rk_udphy_dp_hpd_event_trigger(struct rk_udphy *udphy, bool hpd) -{ - const struct rk_udphy_cfg *cfg =3D udphy->cfgs; - - udphy->dp_sink_hpd_sel =3D true; - udphy->dp_sink_hpd_cfg =3D 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 =3D=3D mode) @@ -999,29 +982,6 @@ static void rk_udphy_power_off(struct rk_udphy *udphy,= u8 mode) rk_udphy_disable(udphy); } =20 -static int rk_udphy_dp_phy_init(struct phy *phy) -{ - struct rk_udphy *udphy =3D phy_get_drvdata(phy); - - mutex_lock(&udphy->mutex); - - udphy->dp_in_use =3D true; - - mutex_unlock(&udphy->mutex); - - return 0; -} - -static int rk_udphy_dp_phy_exit(struct phy *phy) -{ - struct rk_udphy *udphy =3D phy_get_drvdata(phy); - - mutex_lock(&udphy->mutex); - udphy->dp_in_use =3D false; - mutex_unlock(&udphy->mutex); - return 0; -} - static int rk_udphy_dp_phy_power_on(struct phy *phy) { struct rk_udphy *udphy =3D phy_get_drvdata(phy); @@ -1253,8 +1213,6 @@ static int rk_udphy_dp_phy_configure(struct phy *phy, } =20 static const struct phy_ops rk_udphy_dp_phy_ops =3D { - .init =3D rk_udphy_dp_phy_init, - .exit =3D rk_udphy_dp_phy_exit, .power_on =3D rk_udphy_dp_phy_power_on, .power_off =3D rk_udphy_dp_phy_power_off, .configure =3D rk_udphy_dp_phy_configure, @@ -1308,6 +1266,14 @@ static int rk_udphy_typec_mux_set(struct typec_mux_d= ev *mux, struct rk_udphy *udphy =3D typec_mux_get_drvdata(mux); u8 mode; =20 + /* + * Ignore mux events not involving DP AltMode, because + * the mode field is being reused, e.g. state->mode =3D=3D 4 + * could be either TYPEC_MODE_USB4 or TYPEC_DP_STATE_C. + */ + if (!state->alt || state->alt->svid !=3D USB_TYPEC_DP_SID) + return 0; + mutex_lock(&udphy->mutex); =20 switch (state->mode) { @@ -1339,22 +1305,7 @@ static int rk_udphy_typec_mux_set(struct typec_mux_d= ev *mux, break; } =20 - if (state->alt && state->alt->svid =3D=3D USB_TYPEC_DP_SID) { - struct typec_displayport_data *data =3D 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); =20 mutex_unlock(&udphy->mutex); return 0; @@ -1509,20 +1460,6 @@ static int rk_udphy_probe(struct platform_device *pd= ev) return 0; } =20 -static int __maybe_unused rk_udphy_resume(struct device *dev) -{ - struct rk_udphy *udphy =3D 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 =3D { - SET_LATE_SYSTEM_SLEEP_PM_OPS(NULL, rk_udphy_resume) -}; - static const char * const rk_udphy_rst_list[] =3D { "init", "cmn", "lane", "pcs_apb", "pma_apb" }; @@ -1546,7 +1483,6 @@ static const struct rk_udphy_cfg rk3576_udphy_cfgs = =3D { }, .vogrfcfg =3D { { - .hpd_trigger =3D RK_UDPHY_GEN_GRF_REG(0x0000, 11, 10, 1, 3), .dp_lane_reg =3D 0x0000, }, }, @@ -1587,11 +1523,9 @@ static const struct rk_udphy_cfg rk3588_udphy_cfgs = =3D { }, .vogrfcfg =3D { { - .hpd_trigger =3D RK_UDPHY_GEN_GRF_REG(0x0000, 11, 10, 1, 3), .dp_lane_reg =3D 0x0000, }, { - .hpd_trigger =3D RK_UDPHY_GEN_GRF_REG(0x0008, 11, 10, 1, 3), .dp_lane_reg =3D 0x0008, }, }, @@ -1627,7 +1561,6 @@ static struct platform_driver rk_udphy_driver =3D { .driver =3D { .name =3D "rockchip-usbdp-phy", .of_match_table =3D rk_udphy_dt_match, - .pm =3D &rk_udphy_pm_ops, }, }; module_platform_driver(rk_udphy_driver); --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79CB33DB339 for ; Tue, 15 Sep 2026 15:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484782; cv=none; b=dcIUYbjCem4sNmRlfCn/E3RFyR4TOK2ioI6FtdtxQsxhqFbw2pi0Xhqz5G3prgZ7PZS7USCzp0CO42hxqAMtOCq4Dh07FXadRDQMy8ONPqBVMYlPJePQsUMneNFrZfRSEmAycVWiSmVIoyEBftyEe7CINb5CkhodWubnGnWgJf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484782; c=relaxed/simple; bh=aDjYZwERGTJiJG4ozumjnc6hne3xhMzRv8ABZSNpd+E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ETkLtc5L+G4u7GMAJFKmCBMGxNY1gKha+yuoD5iQw5c9dKPD1/VYEWDBnp6ny8qrUfMDWZcHmYlLH7ys40qBsOOgU9OtbUljiJ+t0I47AtVacdQaGmSMsQgGI/ru/NK2dPSuiizMqQHA72zYzpwgq1y4Wmsn7er3LkML2c9xpDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=VkrYVeqW; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="VkrYVeqW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484778; bh=aDjYZwERGTJiJG4ozumjnc6hne3xhMzRv8ABZSNpd+E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VkrYVeqWo8xcdS7DPv+ReRGnTo0+loU8wEfrNe/42p83Z3a0G1oT2dOlq/LYWJAB3 9/ultUtjQhwb1zG8zfN+ffJEGgtHPGbFNgQCLnVGj3pVA3fJr9FpeKg4ZCZXCgRj68 hadCqEL3JL9N6+fZ4aWDi9HR5ssbL3SfgyEHEHGOljm+BxVZoNF7SIUmtetcf1C+U/ QCtudrPIW2GJ/6WycLIiECOL0SqTHlBCY7mMtDuXvp0VzMvt8Y2rDxwH3598pnbKv/ Dj9nnyQMzHogOm5eyk60uauxI7BwJgnzMj2f7Tw4WN58bdj1r5QNQgqB+CIgtarjtc XKXSpHXzoL7JQ== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 9D79E17E01C5; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 6075A48002F; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:05 +0200 Subject: [PATCH v15 02/11] phy: rockchip: usbdp: Rename mode_change to phy_needs_reinit Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-2-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1900; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=aDjYZwERGTJiJG4ozumjnc6hne3xhMzRv8ABZSNpd+E=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXunL0OwZnhXEJ2biylrCBLOC7K3FRHWM0 I+Z9WYxol3B+YkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7pAAoJENju1/PI O/qaDsoP/02ITRUoEU5gveI7bfsRZ54Xa29vbsuez8djEwL8rwF+/++fxMkJwI+93p30UBnYFRK th6Mat5lX8L0iZX2kBB+etY9Z3Q00DlLpSC4M0wjeVF1ddj+X167aX23e6OMCBCjb7ZK705yRvF QFGzCG7CL/OZJ8Tu97AkOG7BYH3s/qH0BAiHgSn4Gn/L7B6qu57U5OtOjVgciEW+EkRgU3VAuo7 Qxsa9c/hu7KCLvNjyoXleqPHHGtCpwi3fM3Kvkt5upEEhKYFqp1OADwfo4OedmR+8gfSNykz9XP oD31Y6iQethfbkuPau+t1Wg0Bk6Sk9/rqXpx8CrfvJEp8jM34198RnVqSjypSxEwJzaX3b1YdLg S/knPL9qhXIQ9M6bEnt1p9vxXFRmppkcXvN7WaeodgAbtI6KqDd539gix6s22XApNowx64MvLTy u1/Umi1cPYPHOP8dL7AhG6Opn+Lrkwr8TytzRHe7bJkk45KO5ab28i0XQqTZ3eLwFhsUNqhh1vP pqWj4bddjuoHjtDXihGYryDEN06luLokp9RQrfJpo+F7pZ7ReQZWE6X3GwdozKGtyVQ7Rmu/m8v M7ifVGd45Dqba1ZBMACISXwBmeIKa2QtA6todFK0DBYdNjCFuniP82uCyUOQa08LSpo3uYwyzUr VLuFmhNq8f9uyc5uiWZkwzA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Right now the mode_change property is set whenever the mode changes between USB-only, DP-only and USB-DP. It is needed, because on any mode change the PHY needs to be re-initialized. Apparently at least DP also requires a re-init when the cable orientation is changed, which is currently not being done (except when the orientation switch also involves a mode change). Prepare for this by renaming mode_change to phy_needs_reinit. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 03a276c08fa8..9767fba23660 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -170,7 +170,7 @@ struct rk_udphy { =20 /* PHY status management */ bool flip; - bool mode_change; + bool phy_needs_reinit; u8 mode; u8 status; =20 @@ -577,7 +577,7 @@ static void rk_udphy_mode_set(struct rk_udphy *udphy, u= 8 mode) if (udphy->mode =3D=3D mode) return; =20 - udphy->mode_change =3D true; + udphy->phy_needs_reinit =3D true; udphy->mode =3D mode; } =20 @@ -950,15 +950,15 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) =20 if (udphy->mode & UDPHY_MODE_USB) rk_udphy_u3_port_disable(udphy, false); - udphy->mode_change =3D false; - } else if (udphy->mode_change) { + udphy->phy_needs_reinit =3D false; + } else if (udphy->phy_needs_reinit) { if (udphy->mode =3D=3D UDPHY_MODE_DP) rk_udphy_u3_port_disable(udphy, true); =20 ret =3D rk_udphy_init(udphy); if (ret) return ret; - udphy->mode_change =3D false; + udphy->phy_needs_reinit =3D false; } =20 udphy->status |=3D mode; --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EDE93DAAAF for ; Tue, 15 Sep 2026 15:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484783; cv=none; b=N35t/QZMt+WIoQfO6din0Pfd2MeeV9QiisfJGdMnyOpruljMTwGqmWVxR/hRt5xMoQDtP9/ao6lIV2vcJzgC6TxbTDNoLrqkYELZj3gRFA/yRtHZiuX/dCQz2eA1H0bpAqCe8Lk8kFERPg3B3nDcm2dj3P+jBO/Lw/w5OvTjIUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484783; c=relaxed/simple; bh=ORTgeXoBWHzhph1db5nH3ROLXbfd5UE84Yvg8siOcNc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LfwqrC3t6aGNdw9X11FqICYtKtp9Q6Kr8Deb9h5fGjn0cHYI6jVdn7sKiQQd+uRLW4hzD4ghYg7rgBa+ZIM1J3t5DtIb9Y3HXe4SoQaNNJ1rdgu3IX8dUWxSk7GWXLmhoi9/L+V7aU1Zvc7j8LlLk/OAsMekBR6fyUMAJmqcEAI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=VZbpz08/; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="VZbpz08/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484778; bh=ORTgeXoBWHzhph1db5nH3ROLXbfd5UE84Yvg8siOcNc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VZbpz08/GTHJOTDuae6L1HH4jzDWq4Jj0uF0HEt0TRnI5m9k95yAnqyXddXsrASC/ 5yLENW2jbDN6Hd46JbA7cNxn5pabLEhexpbBJ61Dyj+MoqegCyqph4ZSI8qMbxuVwW yceQO3s+43k1YPtVH0W/v5q78mOeF4Gll9xnGjdSROkCNjZ3WmYl4QhLglzwaBFJ8H X7H2ttQ1FGrygms5luyj7G9b6RTwg0NXuq8jwc2mzFcrynQA36DkhZr50pH/m/VXpY mGzqYUVhlX2LgDqHsKfmpXHaGi1oKU01RHfUdqx4OXAYgaajP2moW6llfozn/TlvD4 LJAPVUUqUldbw== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 9C26817E015A; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 622DA480030; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:06 +0200 Subject: [PATCH v15 03/11] phy: rockchip: usbdp: Re-init the PHY on orientation change Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-3-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1326; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=ORTgeXoBWHzhph1db5nH3ROLXbfd5UE84Yvg8siOcNc=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXuqvJxfb6SjKucFa5VdpqsNmkVhLhP8fG UXucuxt7FkaRYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qa9HwP/2cU48QE1osoI9QFtS6x+MpynnM2oZW33/E0WStGxTuofP+w3S3EOwKzEEevJVq9r8O 0XvzFn/jT5Ovkvz+xKgRrmxpzJtwe9iA5tpIJsut9t/1Es8dpC8EBNOSGwzbkg9841NpYEtoDR+ rAlZWnbp0oYchd1/58Bf2uVoaKXc19P7LBKvxYvIxEHW/umRx7xaPEjLPpt7F5/qocaAfZljazt j2KxWKG1D03cDYKijbmqY4+XL5oLBZNje2oKyDiu/+fIKKjv4BXqgxNpv9fgXgSdBm4PhfddOXC 4AvVyFIf8T5BvMBN/c5XTvaJ0bOiazhzBl1YuSTtskz0zfDkU9Ebz9Cw5wcGP10J8QUnG8qJj38 Mh+6EzipsJXhxTpP78gm1DxvmSbnR0TQoGsq5UrLAQTSqWNGJDT33yh0OYCGYIIiAxUqyoIr8NV rtYdkyKCLlW8cGtVCLwkvIxs9NvWopOn13usow8WvbJZ//E7qv41Yl+OFLPWPr8hawnmpxrB/39 fm4tSqLCK/hofRBOHl8EWzg+ho199M20pfLkDyLULrTWpg3+y/XZDX/sBGY8X8SiyW5XccRny95 KuB7bYg7tSl2/jAklL42I07rM1DGTYrCuJxNTQb4QlRBOKr3GVms8CPBkneIxUU6oNmxWtPRJMz b/414njHDrwxxv0oD1pI6LA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Changing the cable orientation reconfigures the lane muxing, which requires re-initializing the PHY. Without this DP functionality breaks, if the cable is re-plugged with swapped orientation. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 9767fba23660..9a4ead585151 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -619,6 +619,7 @@ static int rk_udphy_orien_sw_set(struct typec_switch_de= v *sw, enum typec_orientation orien) { struct rk_udphy *udphy =3D typec_switch_get_drvdata(sw); + bool flipped =3D orien =3D=3D TYPEC_ORIENTATION_REVERSE; =20 mutex_lock(&udphy->mutex); =20 @@ -630,7 +631,10 @@ static int rk_udphy_orien_sw_set(struct typec_switch_d= ev *sw, goto unlock_ret; } =20 - udphy->flip =3D orien =3D=3D TYPEC_ORIENTATION_REVERSE; + if (udphy->flip !=3D flipped) + udphy->phy_needs_reinit =3D true; + + udphy->flip =3D flipped; rk_udphy_set_typec_default_mapping(udphy); rk_udphy_usb_bvalid_enable(udphy, true); =20 --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AB3D3DB62E for ; Tue, 15 Sep 2026 15:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484782; cv=none; b=s7RXbexGsar21Dw6usATlU6Rb3S+3Hl6tp3DX4bHsySCVMhpLzVFoJcwndOdSn2VlyIUawrKZH8sJrT+tqSIm2+633+GIA4VdzRSNbSDokXM4clGYDOVcBMhwcwIPUDR0VPhrD5luzfpmXUtrVQl8/JfRbM/YGcB55BTeYgHHvI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484782; c=relaxed/simple; bh=xWOZIz9WSUhLjBYsv6AkugFXIXpASrJ7YH862/vRHwI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Yf3tRnOvfOkmou6oiYVDwZ8QS2z8Vvx2msd5JxlDj3+anKcgqcCH3pOlVWnVt9219jxkArZxcd9KWO7a+BjibQxvZoCCvYCcVYlOr+PllNRgxtxYn2b00xFB86ZsddY6Ce3KIMdxzkCRa5RrErZuUuQih4anHCQIV+YMqx+2Go0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=NsWtqok7; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="NsWtqok7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484778; bh=xWOZIz9WSUhLjBYsv6AkugFXIXpASrJ7YH862/vRHwI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NsWtqok7OIvqJhETVLpGUtUt9pXgY/3MC1yfRNLjeXKB0QrhEIoSxrR4fCl/RhuL5 cMjxmbg5PKb+UKYEBS+0VXfBp6PN9sdxotXBKxpiEvtiOZVAqU7ip5YCqZdneN5jG4 nvsVU6W8An79ymhsKaSJ4oS5sd96NegEYBUYPk0d8RgarazFJ8UpYHShthCBkUJcCi yJi3Ei6cInrlr16wRK1CY5BPaIxE8tm/HW3bCxTdFL4OQhF37aPbmML53J61W8q9x6 naElGKcnRDw++vSuOVfSCCMn7T1gGXssKejZbEGHlid7CpVJtXq0Lrw59djIKaFRSQ swnjmCTN/wJJg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id A056217E090C; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 64629480031; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:07 +0200 Subject: [PATCH v15 04/11] phy: rockchip: usbdp: Factor out lane_mux_sel setup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-4-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4649; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=xWOZIz9WSUhLjBYsv6AkugFXIXpASrJ7YH862/vRHwI=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXuoQiwfZlfIqn6Dg0xpcyts0Z614HPXjz el21LiN6n78FokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qaAwIP/iIvARM5eDLOjPhxPPBQbcPUU+UHY871DMd+MDL3eCbpCIa96Vwu5fLpopX4qS+n901 yTEBNbjxvJ1i5qjYwc90xlmrNQHbGmldGtjt+kxQXrPtIdYM+gOS6A7Bo9blYOXhvAs2ibqyDRo Qs6O4RqBINOUISoNrGHvHsqVHO06iIFhnEeAGw5YeuySATPBgjfM7ccEnTULSmbN386qFOEOTHC LW04HuKd+/R6CAVwuMYd5N1/gQ8j3gtxs9GWcu8dcTY6uMitR7oB+Vr29z9aOI0s0VcbtOG0b64 YyobVV3I8WxFzAk0zCH4OPebZMMzGSYYNI3OWcePaU9Lk7K3ulwCvLyNkTnZKjKnkYMtfjDrUxi SONjhg4a9JRoF8QLYvZFnayoKk7Hz23bgP7OA58PMpbExf0CD6O+urP+fO4mIx3AoqBCyWETu7l O6r/pfyEPBfp4SnVGTwXbS2W+V7798JfPlj2h7UONNmaa6t1VaHlDimvFG2encldSSV5Xm9P8ta 0vFTB6fq0r459bOergYbsUH14tWD6OLUnXtwGf7oDKhaJKe16K2sjYoE6UlBALwMtO2nWGYG0Rl mQl0uL0ikrcwobb12ToQporw/uTNxdcKk1Qt6csfVsm8BAtxbkqTi0th0b6m4A/aStT24Lryf6X 3YNoq/Yi6c14QoAJUCnw/8g== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Avoid describing the USB+DP lane_mux_sel logic twice by introducing a helper function to reduce code duplication. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 81 +++++++++++++++------------= ---- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 9a4ead585151..4a073301067f 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -581,6 +581,42 @@ static void rk_udphy_mode_set(struct rk_udphy *udphy, = u8 mode) udphy->mode =3D mode; } =20 +static void rk_udphy_set_typec_state(struct rk_udphy *udphy, unsigned long= state) +{ + u8 mode; + + switch (state) { + case TYPEC_DP_STATE_C: + case TYPEC_DP_STATE_E: + udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; + mode =3D UDPHY_MODE_DP; + udphy->dp_lanes =3D 4; + break; + + case TYPEC_DP_STATE_D: + default: + if (udphy->flip) { + udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_USB; + udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_USB; + } else { + udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_USB; + udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_USB; + udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_DP; + udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; + } + mode =3D UDPHY_MODE_DP_USB; + udphy->dp_lanes =3D 2; + break; + } + + rk_udphy_mode_set(udphy, mode); +} + static void rk_udphy_set_typec_default_mapping(struct rk_udphy *udphy) { if (udphy->flip) { @@ -588,10 +624,6 @@ static void rk_udphy_set_typec_default_mapping(struct = rk_udphy *udphy) udphy->dp_lane_sel[1] =3D 1; udphy->dp_lane_sel[2] =3D 3; udphy->dp_lane_sel[3] =3D 2; - udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_USB; udphy->dp_aux_dout_sel =3D PHY_AUX_DP_DATA_POL_INVERT; udphy->dp_aux_din_sel =3D PHY_AUX_DP_DATA_POL_INVERT; gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 1); @@ -601,18 +633,14 @@ static void rk_udphy_set_typec_default_mapping(struct= rk_udphy *udphy) udphy->dp_lane_sel[1] =3D 3; udphy->dp_lane_sel[2] =3D 1; udphy->dp_lane_sel[3] =3D 0; - udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; udphy->dp_aux_dout_sel =3D PHY_AUX_DP_DATA_POL_NORMAL; udphy->dp_aux_din_sel =3D PHY_AUX_DP_DATA_POL_NORMAL; gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0); gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 1); } =20 - rk_udphy_mode_set(udphy, UDPHY_MODE_DP_USB); - udphy->dp_lanes =3D 2; + /* default to USB3 + DP as 4 lane USB is not supported */ + rk_udphy_set_typec_state(udphy, TYPEC_DP_STATE_D); } =20 static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw, @@ -1268,7 +1296,6 @@ static int rk_udphy_typec_mux_set(struct typec_mux_de= v *mux, struct typec_mux_state *state) { struct rk_udphy *udphy =3D typec_mux_get_drvdata(mux); - u8 mode; =20 /* * Ignore mux events not involving DP AltMode, because @@ -1280,38 +1307,10 @@ static int rk_udphy_typec_mux_set(struct typec_mux_= dev *mux, =20 mutex_lock(&udphy->mutex); =20 - switch (state->mode) { - case TYPEC_DP_STATE_C: - case TYPEC_DP_STATE_E: - udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; - mode =3D UDPHY_MODE_DP; - udphy->dp_lanes =3D 4; - break; - - case TYPEC_DP_STATE_D: - default: - if (udphy->flip) { - udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_USB; - } else { - udphy->lane_mux_sel[0] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[1] =3D PHY_LANE_MUX_USB; - udphy->lane_mux_sel[2] =3D PHY_LANE_MUX_DP; - udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; - } - mode =3D UDPHY_MODE_DP_USB; - udphy->dp_lanes =3D 2; - break; - } - - rk_udphy_mode_set(udphy, mode); + rk_udphy_set_typec_state(udphy, state->mode); =20 mutex_unlock(&udphy->mutex); + return 0; } =20 --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 723193D9522 for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484786; cv=none; b=QZ2l1FrwHGk2QTtfNwEudG6C1mBaAQcveCjlz7LWNgbcGSavJsJO0vlP3Daaekn8SGoCsuvoaITobCbmf3ybUr5xuBzzxYFvsUgOKSY6SKtRjqOuwidY8iYVMm2zpZespFgp7xf6udeXhAbdXACxUH1ANT/WFnx1dol179kYZm4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484786; c=relaxed/simple; bh=qQRz0pWsFv0v+wwF9XnKP83GCZcDy8m7SEF9Z1JUkWg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fXYhfcPT6P6PCqpZvaef8E1UtvmMMG/lvOhqf1qhgNKNc6mX74wHw3NaWG96Cnu/IrBD8s3rVzLyzOxfFFWOPpeGXCh3irMIvE3O/D8qAoQpZD3J568w7s4FuAXOtE+0lMTOepbTq9jWKusODNnygQH0MTYaLAalOk3GSZqPTiI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=IZzFJ41s; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="IZzFJ41s" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=qQRz0pWsFv0v+wwF9XnKP83GCZcDy8m7SEF9Z1JUkWg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IZzFJ41sNIcsD6gDXwKfZIaqsWtGHL892myyr4tp4MT+Q1E1Ew1OovNLW1YMKKdLs Q6dub3RoyJUwfO2E2fh/HLOMF690Dqqlgw/FOvBEJHz/+ulZoXbAYaQXxB0t+iT/xH pci0KaOW7xuDdIBOigd1qbdPOt0cBzaEZyS57qRA1uIOthNWLzLEyZek8s5cOugbb7 hGdo7/opjAcUT0Fm2m2lib1H98ArPpehsB+FShBJgZyRZ/cGbmZW6FMRbRZ3sjWFU+ nCqYqBAI2nkVjV3+El2SJ8bqCdo+VUndEI8BSxrcb/Dpuh5cj+2BfpwBE20S1KkuU1 wFfP3FDkik6Cw== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id E562717E0936; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 662F4480035; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:08 +0200 Subject: [PATCH v15 05/11] phy: rockchip: usbdp: Properly handle TYPEC_STATE_SAFE and TYPEC_STATE_USB Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-5-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Sashiko , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1828; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=qQRz0pWsFv0v+wwF9XnKP83GCZcDy8m7SEF9Z1JUkWg=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXuopSxSweOFFqi1I5lfgjq6tGiHXzSZQl /0iqKNG52xNcokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qax5IP/08DtM+41mYSjMAB3XlU4teTJfYeLfsxRhzA9f01jke+hdmrU4D4991SSgCILA5V5o+ ELgR194o4HfX7vkDIycsWkmX4mSaYsjvncsLc/ia4td/OSfjaM7YNHxkTvFWSFSJZqYwVrqPigP 6u5FiwY54yzieiUauD5jJcpsUa4Z9SVi/BszMAnaZuh4Hti9A8NyS52i9vMXrv9LlXJIZOvWItT wnhTJ0N0oLzW1lN9lWxA2HZu3T6wQfKs0wduFZ1QOd5PUkPsmyiH+rq5zZmbmLrrlHnY0eNtK8k V3pifuqxrbcu/yapN75wMBHUzJEfCySSYk0Hu6Ifyk0J8kf25sHdmC2ZBXTO3L6typ8F3KuVeZZ VkjEHPmsLFAcpDo9F2DG3rAzoZJon6ASNDwsaLyBZTBtN1WK3ECxVc3F7xMsTue0d0C+QY7kJZi xrzqpwAaPoTiwuHtgmufQrb5mHZLXua8fYzg3dmqwq3lpzz5w5kPTs7x5kT0QKtueh/vipuWSnG NjycsWGRBdwAa1ihMeR+l67N2h1qGeoCzKgxzEE8FSCOoUu20NEaebIYk/e1tCO2mSSWtDcNOZ/ sRwYCoR1iwqN8qKEHEyqxv8TJ93NfMBhgXudPTYEybFPC95Kbzu5RM9115c0+4NsyR4cX6wHcG7 ZoGfC6Mfp0kBKviXcqXwxNA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Handle TYPEC_STATE_SAFE and TYPEC_STATE_USB Type-C state events, so that the muxing is properly updated when exiting DP AltMode. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260619155020.CC7361F000E9%40smtp.ke= rnel.org Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 4a073301067f..9ba571f7b9bf 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1292,17 +1292,26 @@ static const struct phy_ops rk_udphy_usb3_phy_ops = =3D { .owner =3D THIS_MODULE, }; =20 +static bool rk_udphy_is_supported_mode(struct typec_mux_state *state) +{ + /* Handle Safe State and USB State */ + if (state->mode < TYPEC_STATE_MODAL) + return true; + + /* Handle DP AltMode */ + if (state->alt && state->alt->svid =3D=3D USB_TYPEC_DP_SID) + return true; + + return false; +} + static int rk_udphy_typec_mux_set(struct typec_mux_dev *mux, struct typec_mux_state *state) { struct rk_udphy *udphy =3D typec_mux_get_drvdata(mux); =20 - /* - * Ignore mux events not involving DP AltMode, because - * the mode field is being reused, e.g. state->mode =3D=3D 4 - * could be either TYPEC_MODE_USB4 or TYPEC_DP_STATE_C. - */ - if (!state->alt || state->alt->svid !=3D USB_TYPEC_DP_SID) + /* Ignore mux events not involving USB or DP */ + if (!rk_udphy_is_supported_mode(state)) return 0; =20 mutex_lock(&udphy->mutex); --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7398C3DD86C for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484788; cv=none; b=GBOXwdPzNpg2QB4s/fuHKYNN52Ea4kxKjbPHoZDOAyez4mT4GPfVOa7GjUMl6P56SQBSczfJaVMksAQ/dUs8N8+J1LfSznSc4ltgszSEO2QWSQWlaex39XWtF3aOhM3PewIiyR1A0LX0wzB/1aDekLJxJyNqbRxCDtRKhrU4mE4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484788; c=relaxed/simple; bh=HP/2TxuLTpSBzkdGrral25VDP+HVgOhclYZLr8N0aFs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IN+2caDLBkij5zl4BGWkvzjNiCytUeQ0IoY6RoG2b/fxBSN29tnSVn345oZfT9sgoU+Pbc5o6SggayBKa0e9dHsIv9vXNWuDmCWpmyjdD2QvX1SLSxCtA1qnlT0/KfHubh9mOwQVjtTWD45ZInlm/LFiSOeGse/z6Pka2KjVay4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=l/ikF1Tz; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="l/ikF1Tz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=HP/2TxuLTpSBzkdGrral25VDP+HVgOhclYZLr8N0aFs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=l/ikF1Tzt9Ld//WzIiUbLEs7ujOEGqTmoHO53/krHEP0Tc9USLcGyvMnDSDBKboig YjgotMkCvzyPe3eh2++oji1qBTf8EW3PJVkxX/elJTjYVO9GE9/YSwTd8yaMVdM1Cm MKMDQagpFaaO0jFXKQCjWF78AJKbzIBOLfMVZTT5ynfGMO8fVuZaSk8rpP4W3W4w5o WNg/B1a/vwYvrigjB9IYvDo0sJ587xg732NFbnBMFV6W3CNGwE45xQ2174gT9ZfgMI OJGG/tAhqmwIATfQNMgAAmJBuugq5ib8BCOzjx0z/2jmWhG7KOhhqeYiDbOgzvR+EP dsmCYIDwKJvZQ== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id E7F8917E0B0F; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 67CA2480038; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:09 +0200 Subject: [PATCH v15 06/11] phy: rockchip: usbdp: Use guard functions for mutex Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-6-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4473; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=HP/2TxuLTpSBzkdGrral25VDP+HVgOhclYZLr8N0aFs=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXurWemrtH2KCb2hobF8Tg4oQf2Mpa357v njsyih0UbbnnokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qa90cP/jfPozEdktBhmGR6K1mIbArHr+X0EFLQ6z9yzlCGU8Ij9KiDAqF7Vg7MPi/93HzIMe1 XQLZI0KxVy0qmxiH+aaKnO4X1is5GKO/GaHkpJ3PE8V0nMXDu2AT3bpi1j0DN5p2dYdhSZfnWTZ i30OqtEeNilmOjKt+69EpCzH/Ug6wsKa7qBPGs5rOsd29Km+9fKxGJ4zB+BkYywMPkYwAERV1tm 1MR1KeGTYSHewqHRn0sD/dyl9Y03kV00ikdg6nHG/kYQM3Tlb2soqavsinwwSfaOUioK9SbBQCo 1lxbIHLVm88i0e2ySnbRGNyW77rmybyamTMAKGN11X90fuxdPSCYoqYM37CNDc1Pwzm+2JFDuyF tJKU+J1h/NINcHBr94hedJSJvnVfdKjqGFOHDSnv653IyO+q2VaU9669AT7FwLctlF7NJ6CGnyv /EbVTuG4oExxCm7O9FNaI8e5YCQQVgpWQzECkFWdMLy6SjtbOGMJFZvHI9puyI4YfsL/+pXZUVe CFqHfsHyNRceZmzAYFJDXfLs0LHN1vBDK9GPXH2Bkj65tmV8wu+BBe/zHql/S3v0Iv/m310lFiP 7DU+i3qpLgrHff30jx/3dV7g9pBunxex8jz+8XGl/Uj1lU6Y1RgT9uFr1r/JaCtDLa49BalBmRD a15MbzJsnTBEKURfFUWg0rQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Convert the driver to use guard functions for mutex handling as a small cleanup. There is a small functional change in the DP PHY power up function, which no longer sleeps if the internal powerup code returns an error. This is not a problem as the sleep is only relevant for successful power-up. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 54 +++++++++++++--------------= ---- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 9ba571f7b9bf..9864024b9c0a 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -649,14 +650,15 @@ static int rk_udphy_orien_sw_set(struct typec_switch_= dev *sw, struct rk_udphy *udphy =3D typec_switch_get_drvdata(sw); bool flipped =3D orien =3D=3D TYPEC_ORIENTATION_REVERSE; =20 - mutex_lock(&udphy->mutex); + guard(mutex)(&udphy->mutex); =20 if (orien =3D=3D TYPEC_ORIENTATION_NONE) { gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0); gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 0); /* unattached */ rk_udphy_usb_bvalid_enable(udphy, false); - goto unlock_ret; + + return 0; } =20 if (udphy->flip !=3D flipped) @@ -666,8 +668,6 @@ static int rk_udphy_orien_sw_set(struct typec_switch_de= v *sw, rk_udphy_set_typec_default_mapping(udphy); rk_udphy_usb_bvalid_enable(udphy, true); =20 -unlock_ret: - mutex_unlock(&udphy->mutex); return 0; } =20 @@ -1019,26 +1019,25 @@ static int rk_udphy_dp_phy_power_on(struct phy *phy) struct rk_udphy *udphy =3D phy_get_drvdata(phy); int ret; =20 - mutex_lock(&udphy->mutex); + scoped_guard(mutex, &udphy->mutex) { + phy_set_bus_width(phy, udphy->dp_lanes); =20 - phy_set_bus_width(phy, udphy->dp_lanes); - - ret =3D rk_udphy_power_on(udphy, UDPHY_MODE_DP); - if (ret) - goto unlock; + ret =3D rk_udphy_power_on(udphy, UDPHY_MODE_DP); + if (ret) + return ret; =20 - rk_udphy_dp_lane_enable(udphy, udphy->dp_lanes); + rk_udphy_dp_lane_enable(udphy, udphy->dp_lanes); =20 - rk_udphy_dp_lane_select(udphy); + rk_udphy_dp_lane_select(udphy); + } =20 -unlock: - mutex_unlock(&udphy->mutex); /* * If data send by aux channel too fast after phy power on, * the aux may be not ready which will cause aux error. Adding * delay to avoid this issue. */ usleep_range(10000, 11000); + return ret; } =20 @@ -1046,10 +1045,10 @@ static int rk_udphy_dp_phy_power_off(struct phy *ph= y) { struct rk_udphy *udphy =3D phy_get_drvdata(phy); =20 - mutex_lock(&udphy->mutex); + guard(mutex)(&udphy->mutex); + rk_udphy_dp_lane_enable(udphy, 0); rk_udphy_power_off(udphy, UDPHY_MODE_DP); - mutex_unlock(&udphy->mutex); =20 return 0; } @@ -1254,35 +1253,30 @@ static const struct phy_ops rk_udphy_dp_phy_ops =3D= { static int rk_udphy_usb3_phy_init(struct phy *phy) { struct rk_udphy *udphy =3D phy_get_drvdata(phy); - int ret =3D 0; =20 - mutex_lock(&udphy->mutex); + guard(mutex)(&udphy->mutex); + /* DP only or high-speed, disable U3 port */ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) { rk_udphy_u3_port_disable(udphy, true); - goto unlock; + return 0; } =20 - ret =3D rk_udphy_power_on(udphy, UDPHY_MODE_USB); - -unlock: - mutex_unlock(&udphy->mutex); - return ret; + return rk_udphy_power_on(udphy, UDPHY_MODE_USB); } =20 static int rk_udphy_usb3_phy_exit(struct phy *phy) { struct rk_udphy *udphy =3D phy_get_drvdata(phy); =20 - mutex_lock(&udphy->mutex); + guard(mutex)(&udphy->mutex); + /* DP only or high-speed */ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) - goto unlock; + return 0; =20 rk_udphy_power_off(udphy, UDPHY_MODE_USB); =20 -unlock: - mutex_unlock(&udphy->mutex); return 0; } =20 @@ -1314,12 +1308,10 @@ static int rk_udphy_typec_mux_set(struct typec_mux_= dev *mux, if (!rk_udphy_is_supported_mode(state)) return 0; =20 - mutex_lock(&udphy->mutex); + guard(mutex)(&udphy->mutex); =20 rk_udphy_set_typec_state(udphy, state->mode); =20 - mutex_unlock(&udphy->mutex); - return 0; } =20 --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7384C3DD867 for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484788; cv=none; b=MUlOVJ3beMU/G1AXvDkKxx3Vjx++UZDd2vgjAUekfbyTK4j7hA5uo/mt2DETELQqctgITWTbhUC+I937m53hRMqMQpo35tv1BhQsvtcZNSsRaftTPQGf9kGytqIOte6BtekQiQtgiveQy4Pka6u+8G6Ck6ZEmJSnnGqZdpOa9YQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484788; c=relaxed/simple; bh=vdDrjiEKTnq8slqmHla/LpW9vq2n25PPqUvoUhamiMQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=byXlD4bzzsAoiQ1KbeV2+snOYGliXin4N33I8XhZWq/rn0G8G7de1Gnl7m0Ws9eLlKBUV900gDalJvjVwLiZaqFZIgN9LfGwqRLYsVpfzeybsGvjcpjk//MRO/3PxYXICkcW+N26M6DIrEjQCgpJccX3QYUM0yri9YL3LVQVHXE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=FhfQjAhg; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="FhfQjAhg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=vdDrjiEKTnq8slqmHla/LpW9vq2n25PPqUvoUhamiMQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FhfQjAhg0lWML77et9kXBWSd5sfDPyE6PFUtoHVlknqJy62TEb880BWmyHAuc3KK5 6pS2wP9eBc/V6oreidb7ZsRqUQPzFXxJQRuQOjuQlrex79xD4n0TofL9JDVGG5rdUQ PuLckLl4tz+J6iFC+jrbCYKzSNMYUxxeN9G18S7st2x9R69q/Y3Ue+Qq82z1MpdX3V dYNuCw5BJKiETRoCCsSoRMLe9Sz6ad08UtCmXhDcEyqm8fO+B1hBcfE5aLBCxpgqXi z4dLvKCTL5D2Jm31HM+mdqc0HynQgh42YxXxhTNJexgbovIIVeEztZU/heFzkydKHR TiTzPRYXB5gyw== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id F0F4A17E0D69; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 6989748003A; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:10 +0200 Subject: [PATCH v15 07/11] phy: rockchip: usbdp: Hold mutex in DP PHY configure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-7-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Sashiko , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1410; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=vdDrjiEKTnq8slqmHla/LpW9vq2n25PPqUvoUhamiMQ=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXuqrmUDFinw2vWcKL6ny6SsFGri9AYUGu KzPMzkbCqtWW4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qavLcP/iy8kD8BxsxRSSExBieSYJ7mX+nm1nU/sMBnd/P5uibVB+ikcDSHJwmFa6F/jBDkuih okv5kV1hwXqNEPaeRpAYrj68diheqS0OiWukcFYT0Dd7OntOLo4RmAhl4UPOpYH11gGN9Yj1ZBw qxtNd678Qe6MwW0FX6ngUEgmeg6m07+Grp9ZgkKJ52s59eY61akScTZzjRAwHrwkhW8plj5yV6D MlEL6xpUvLKQaV3Je1QOjk9Jyd4G9By/weBDqBf0pEbpWwvKdh2U9BB7d6C6qdQogsCLiArfCRg hCC5ZdQWMEJvZS0OSDr89fTzkv28bB83dn0XArLaGUE1Faxg9ZKe/R/WQqIKXk1+Yjs+V3e1r38 fZziwwxTKzHQkr+8DmkBka4c/T6EvyNqdqFrlXX8Ob3b3edWcOPd+0/5p5fqqFTeEvX/O1a7Xnt nbeFqtJ122shPQFXWkfQG/PJ20+cxUroPdASFP3pgevnaz128pzX7kAIoKCBQWYlhlmvbKwpg71 oBG5Uu3heHpt7jOrt4TJ5drH9Nk4wjuAXO+eEyibmmjwhxzkAzk21XMQQLS5TWIrZyqC4JlLdcp 9pzC0B7nAPJC7BqqIqPATbMASyzqrXvpVgXYqcnCUBRPNODquO1IOvcFLNEyy2MDJf3BhXvF63i 8YfPuVxn+Ha5Qck75l5wroA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A rk_udphy_dp_phy_configure() accesses some variables from the struct rk_udphy, which are updated independently from the USB-C framework. The USB-C mux/orientation switch functions already hold a mutex to ensure mutual exclusive access to the struct rk_udphy states, so simply hold the same one in the DP PHY configuration function. Reproducing problems due to this on real hardware would be really hard, but could be possible when quickly re-connecting the USB-C connector. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://lore.kernel.org/linux-phy/20260612164627.23D391F000E9@smtp.= kernel.org/ Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 9864024b9c0a..2888a0a97088 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1153,6 +1153,8 @@ static int rk_udphy_dp_phy_configure(struct phy *phy, u32 i, val, lane; int ret; =20 + guard(mutex)(&udphy->mutex); + if (dp->set_rate) { ret =3D rk_udphy_dp_phy_verify_link_rate(udphy, dp); if (ret) --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 725E03DA5A7 for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484786; cv=none; b=BNVm0m3iDWYNFh6dFHjL/h3FjTB2TxYw5fs3PWILidqjCQQLJgvEM9OwBJM1GXB3HOIaVMRPbmy8LLBgfjzc76BAbEgEfcyrehleNJUciECC83/wr/hGIi8XjRKrj9cBSpo1rY4CgVhlTSYGAQd7RJAJ5A3FIhaspaSVaAT2VNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484786; c=relaxed/simple; bh=3VCECqA2k6xTSDdA+dQDIssXamdM2G2rU7qCTIr/yAA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nv0t7U6H8uGVqdf9hb4c5wPIs/NSVqyOvJXXzlEfGutjfvM4bwUFJ7sbaJ1L+0P2Md7rOp5tqi9YJo3LDy86c1y/1aHY9Zlu7k3lPt9PN/Aj7SvyZuy49zKKrv1gxzP+YigfWuyPYMWh+/grSfFL213c7NTSNVavz9XInTQ4EMA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=OlMbDor/; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="OlMbDor/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=3VCECqA2k6xTSDdA+dQDIssXamdM2G2rU7qCTIr/yAA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OlMbDor/N5EKCHNqt8gjiXFg/rIAqcf6eYhQG9dHlYKj/1qy7De0Ua+hVARqkkkEw WY+n7k0M4T7I1qv9AjI8Q+J8ZwfBwyDZbNEQL4gHQF75F1hy6WfkmnQGz42SlzXSkh kzCUprLd1F6Bdg4i5zFkzALl5PD/NPCbanpU6qYBSnj6TLVa9WZ+PGC0IiaDUlebJg PaUggAI/soZlMnDzrBxXrkT2KElpeVjInQiqMJu/x0pcV6XicfyK5n+F7O4BqSU9Z2 jWQr9dy6q85lzVz8rPV/W76wsZok038wlth+ja1mNUUDoa8a8h0ikBIa3ySQTL/XVN Uv9ZmcAmdJ14w== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id EEF6317E0D43; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 6B37B48003D; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:11 +0200 Subject: [PATCH v15 08/11] phy: rockchip: usbdp: Add some extra debug messages Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-8-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3301; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=3VCECqA2k6xTSDdA+dQDIssXamdM2G2rU7qCTIr/yAA=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXurUvbIMyjX9rhX1LOL2iIJyybyYBzXsb CaZ3Fvm6jA2hYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qaJhUP/1y3vIvtCyq0W6mzcxf6s2toVgKG8uRavAG/omXoNWm+Zrkj5BZaX9XjaW5QhND80wZ 8fxqeYFbMa490SSP9LVAG0KOO9/A8fFJsjZOiodgAV+J8B7mpCe3aX6vnLY/8u833a6qHB6m2b4 NoLvVBw5rnCNd6KRtcgJpHTCgT3AJojFOKXkFWeuQA8sA8UtOF7tYRECplSQrMt+AlS7c4mFonF DgQX/SpwpP1vbZtFSakKX+QT6J0bMnolXRKnzC+/gdWUNEIjkvNa7+QV5dKL/jvuoQuHI+g3kGk ccSrlZzxcH7lQybYe0cTJSc1b7pWCvvEzSyPTYuC8/5qGwBY/CsvFw5aId04O5BFy0DcgrYhFfE 3NRY7Zlk4Z3IM4p/slFPj+bHUHmXhkpHS4tKT7NM7RdmY3AwQ2HDWN9GnRRqxvLsMfnLW0xQe7S mQG+nwgKgfARc8r2e1IBvfS75PN1zkJIzcYLGHXwSiD4r1jZhmTPoUI22D+RunJ7yb7gTON1e/b lMd0ev8fxSbiTNSGAjBt+kgKfdhF7F72OzgkAbguNSt8OhIOSS2lSSDPmVDcAYECKSblwO3Oi2J 1ibfiVzbogBYzm+Ye31282L4r/ns8IcHyVIb0JcgOe7p3Bas7kSsHNl8QtL1IojOgDow0+sc6HI wnlxDyLRfWFFijlqBUiUwRg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A It's useful to log PHY reinit to ease debugging issues around USB-C hotplugging. Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 2888a0a97088..23cfb9bbd334 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -461,6 +462,8 @@ static int rk_udphy_reset_deassert(struct rk_udphy *udp= hy, char *name) return reset_control_deassert(list[idx].rstc); } =20 + dev_err(udphy->dev, "failed to de-assert missing reset line: %s\n", name); + return -EINVAL; } =20 @@ -487,6 +490,8 @@ static void rk_udphy_u3_port_disable(struct rk_udphy *u= dphy, u8 disable) const struct rk_udphy_cfg *cfg =3D udphy->cfgs; const struct rk_udphy_grf_reg *preg; =20 + dev_dbg(udphy->dev, "USB3 port %s\n", str_on_off(!disable)); + preg =3D udphy->id ? &cfg->grfcfg.usb3otg1_cfg : &cfg->grfcfg.usb3otg0_cf= g; rk_udphy_grfreg_write(udphy->usbgrf, preg, disable); } @@ -661,8 +666,10 @@ static int rk_udphy_orien_sw_set(struct typec_switch_d= ev *sw, return 0; } =20 - if (udphy->flip !=3D flipped) + if (udphy->flip !=3D flipped) { + dev_dbg(udphy->dev, "cable orientation changed, PHY re-init required.\n"= ); udphy->phy_needs_reinit =3D true; + } =20 udphy->flip =3D flipped; rk_udphy_set_typec_default_mapping(udphy); @@ -780,6 +787,11 @@ static int rk_udphy_init(struct rk_udphy *udphy) const struct rk_udphy_cfg *cfg =3D udphy->cfgs; int ret; =20 + dev_dbg(udphy->dev, "reinit PHY with USB3=3D%s and DP=3D%s (%u lanes) fli= pped=3D%s\n", + str_on_off(udphy->mode & UDPHY_MODE_USB), + str_on_off(udphy->mode & UDPHY_MODE_DP), + udphy->dp_lanes, str_yes_no(udphy->flip)); + rk_udphy_reset_assert_all(udphy); usleep_range(10000, 11000); =20 @@ -850,6 +862,8 @@ static int rk_udphy_setup(struct rk_udphy *udphy) { int ret; =20 + dev_dbg(udphy->dev, "enable PHY\n"); + ret =3D clk_bulk_prepare_enable(udphy->num_clks, udphy->clks); if (ret) { dev_err(udphy->dev, "failed to enable clk\n"); @@ -868,6 +882,7 @@ static int rk_udphy_setup(struct rk_udphy *udphy) =20 static void rk_udphy_disable(struct rk_udphy *udphy) { + dev_dbg(udphy->dev, "disable PHY\n"); clk_bulk_disable_unprepare(udphy->num_clks, udphy->clks); rk_udphy_reset_assert_all(udphy); } @@ -1307,8 +1322,12 @@ static int rk_udphy_typec_mux_set(struct typec_mux_d= ev *mux, struct rk_udphy *udphy =3D typec_mux_get_drvdata(mux); =20 /* Ignore mux events not involving USB or DP */ - if (!rk_udphy_is_supported_mode(state)) + if (!rk_udphy_is_supported_mode(state)) { + dev_dbg(udphy->dev, "ignore mux event with mode=3D%lu\n", state->mode); return 0; + } + + dev_dbg(udphy->dev, "new mode: %lu\n", state->mode); =20 guard(mutex)(&udphy->mutex); =20 --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 72E9F3DD847 for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; cv=none; b=Ucs0qtB+UXX2QQFFiOc0uSgxDXlUxtYKpKgO+03FIfVZN+IVfk2nAEsH4YrgM5+GyJDRt3PJwaaoP82ss8UvrOvs2z3CPOuH1HfaWDpB2g6Vl7TFytj8wjzUMZXTxz8pZ6xjplKi/w2fY3qfiQ935WpUYD50vkB55QtZP0LG9BM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; c=relaxed/simple; bh=PX3bW1sBE7HEbhsLaU0fKDW6DOA5Axs3TotiYYFI6k4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TnECWKnITKK0at/X4+4zwxP3t3l+H+2tHXeEU4GOblEdjVYsJk4Gap/YL8dY02aK9HvhbUuibFM/lziFTk491akphVU9hGR6Dg+kavTIGYH4igqalyYNWskfyDP+vSAeZtnrL1Lyh/NOkXP5VWq+HD6HxpexcNckN0pinQe+ok0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=W/pmP1la; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="W/pmP1la" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=PX3bW1sBE7HEbhsLaU0fKDW6DOA5Axs3TotiYYFI6k4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=W/pmP1laxa9RN9kKhCDAeJCDoOp2/SM4H/Otop1uexGqCzo4mnOtRlLZRrXK8krAM wyjan8pFu3i3iSmK+ActDRmkmzA0CSuUhtq+NDzGckBJXdaxUyjYKCmyMP6EFgyTYz jdRelqkwUTYB9rw7dVH7McG13XwtOCJxF//R8cigiSBwcTJPSrKnGnHspBGA+grWHR g4Beky0ZO9OndAKY+TEEIIDlbEMa0VMr3GPtM7ebLV98+7DMJW6vxhM6WIJaXvBFUw gHr1MhVHdOMYDmrWRLlNlazR06+GcZMBxOvIKvuXeknk7eGnUXVLWIyQ+uXVyhvKt7 crd3CNhVf8eKg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 01C8E17E0D7F; Tue, 15 Sep 2026 17:06:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 6CF3C480047; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:12 +0200 Subject: [PATCH v15 09/11] phy: rockchip: usbdp: Avoid xHCI SErrors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-9-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2044; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=PX3bW1sBE7HEbhsLaU0fKDW6DOA5Axs3TotiYYFI6k4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXup5pTCfJZPMKPAyDkFAvXceTFPoun30E qk56mvc29fbJYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qaeDoP/0wEZruFvau6rYIJJsEyN++PLXP+AP/4yT+KMIa7zZ/bMdyIg2O/CSLq8zbXtZpHt3C TdklKDfR8VSXdZ6UwyvgeRog7Uf6wcSMrykpkbYjZ7q1nnwNT9cFC2YWOnbgqMU70cJUmxEk2Z3 qf8RbO7Fp9bIPnaPThieKMuBqMuo/OSybIaak5OJMh/BldmWRH5VfY2SmBJ/eiby2e3C5tNteBp Cuf3tAkyU0zqJfeulI494J2IUWXpiLRH1LKV+1db+TvKi1gIbScEL4pE9Kpcuo9cIsKzQbmHIA0 0GBJCQZkV5JtPvOKYJo1zG9WxadIGICo0PeTJqSmIKaC1VKnZQdSoF5WvVkpGFP8wZY2BWsXWjy dcNNPJHUr5hlRFrdSuhGaX8gduilHkYuFdym3orBPcnkVatEj1GmLVpmUJXG/lNnOkAq3f0y/JO mNKXTovT3081PGu0bUpK0IlhrcmicgkURilLS2LMYkoj3qRvfU2FO0NMzokZbDWYi8kWdvH04Zk nrG137r8QWIBGkq3hkaovE+fGbcXBAcrav+acRiw3x3t2Qv23QYsi3fRyI3pFjoC/BK02p5tv1j BOCGZDm30Pil/A2BRXTwlSkiXTFfecKm55fM8E70jIGhEpJ9WvUCXYc2XGvLlw4Sf/Q3FAS3JD+ g3rFSlhx6uxoHSfzp4q0uqQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A The USBDP PHY provides the PIPE clock to the USB3 controller, which means the PHY must be fully running when anything tries to access the xHCI registers. When switching between USB3-only, USB3 + DP and DP-only mode, the PHY must be re-initialized resulting in a short period of the PHY being disabled. If the DWC3 driver decides to access the xHCI at this point the system will fail with an SError. This patch avoids the problems by disabling the USB3 port before re-initializing it. This does a couple of things: - forces phystatus to 0 from GRF (not from PHY) - switches PIPE clock source from PHY to UTMI (safe fallback clock) - num_u3_port=3D0 The last part will be ignored, as DWC3 already probed, but the clock re-routing will avoid the SError. There is a small delay afterwards to make sure the mux happened. The datasheet gives no hints how long it takes, so delay time is a guess. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 23cfb9bbd334..4116b4b18882 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -999,12 +999,15 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) rk_udphy_u3_port_disable(udphy, false); udphy->phy_needs_reinit =3D false; } else if (udphy->phy_needs_reinit) { - if (udphy->mode =3D=3D UDPHY_MODE_DP) - rk_udphy_u3_port_disable(udphy, true); + rk_udphy_u3_port_disable(udphy, true); + udelay(10); =20 ret =3D rk_udphy_init(udphy); if (ret) return ret; + + if (!udphy->hs && udphy->mode & UDPHY_MODE_USB) + rk_udphy_u3_port_disable(udphy, false); udphy->phy_needs_reinit =3D false; } =20 --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 72FCA3DD866 for ; Tue, 15 Sep 2026 15:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; cv=none; b=OysDVY4LjLylUYf9X77Kw0cQZ5NB7s6/rrUAwQzXzo1wk6j1L7yi8mHna+JUg4nebkD+7UNRZ2ZaOdqE2kA7Bv8DpQZVL7EW5ob9oryVjx3J1aFX1t/dW8kBAzWeLGtpvsLEAi8XzZLJf+bg5mDO7XjTMQn7ObZiVs4H1biQIDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; c=relaxed/simple; bh=V6k4hsOr+z+jN8GLnIWddKeAE3UAbZEYwhtva3zTSYE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f7+V/b+ut7bEf1EoMMvKx4M1NDtsiKXhlFMPjUCEYcAECvPTCYFUEj6zqA8ye4lZtEOtOfyBZlRjkVa6mT59ydPwE7l+ifGrzHrYUxOMrii2i/jw6EShluOum5XTlgoYc5fDjL909eukw9RLqNSOKb+pqm0MtmQaNB3u10lMkTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=aTDBlHE0; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="aTDBlHE0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=V6k4hsOr+z+jN8GLnIWddKeAE3UAbZEYwhtva3zTSYE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aTDBlHE0vhK6o5IreGPTwxZ2ddAl0Pd+NuJJfKsooKWGuuf3/TmpQzIdUg5jjhszt AftKR3pp7S6Arv6pOzhalwFYvkAkOWuL3LSJSSQN2h9exmF4kqIqnGtwfO++uuoTfc LMVtWTsLgpQAosgFIqcO1rA25KOxFxAKERjfJq8tKimRErgzfbk/a3pylN4XBL/spQ 2wbLpLxGUN/l3UrXj0uK2qU6XHY0nyeJ1113JW//bLReaILHtIj35dvEAGBNNfkn1M JBU03c2XhZDi3yDHfN1CX87U+E/CHXtOAv7HB12DqQ3umSI+mOup86kSw0OSB0oDAV utEynti/HvTjg== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0832217E0E2F; Tue, 15 Sep 2026 17:06:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 6E998480048; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:13 +0200 Subject: [PATCH v15 10/11] phy: rockchip: usbdp: Handle rk_udphy_reset_deassert errors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-10-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Sashiko , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2434; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=V6k4hsOr+z+jN8GLnIWddKeAE3UAbZEYwhtva3zTSYE=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXuoGTMq1a1IgjMev+B4vmaKlPqSTbqjY9 ISlG177GwLs7YkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qaBFgP/AvNACnspG5ISXaT4SH90dZDQNt6l3Vxk84UKl8fqLFODBTXzQ36N98cfYx8lOeHNcy E3S2n6nM2whwXTqlJAzU197yJenf3CPpS8rTYFypOZorMbqq/8vYhsrH0CaUdSujFBpJQgGjFgW CesV9WrcJ7cIMidQIXcljtmenNwJKK4uPr/Lm0faXOsM7N7Hd4hiamRPl9scvtLQg8yvUHMbtDR RpunMVkgj9H0w2yddKD+GtgqpWM5wsrbdLf697QStdcmeQ/rDUMiGu9CeX5rXVZfKKWzgaGP2ZG ovJq9czZWbpy6nR8x8WzImYOcfEa6s1e6WA5jHCOEthgcvEe+++8YxJbV+yASssjjYdYSuihSpp xbJJYRU1vN2e0lNmHIyjw+1IbOVaWtA2pYtKkK4zB2zcd6fmAakJRI2Lf+irNjBgEFHrK5D+YoF 7DJ+UFR41ZbddpW/WRAC5k5pbbHm+BrNgAJNIc+TEkjRX0NFjd+e8mNSl1ILb4O15yQEwp7dQDy /rKqGOeZc8NRruflUvj8eha4NYRQb1KU5Nm8E4pAMwIGnLabqov1oUeIQOj2GSFEgZ2Rge7o24q Itg9mt1bhNs/P1hZjrqqZXl9Rj55HcfSJGZpyws4z6cZ8US8JQN9gCDW4o7AEQMo1z/2O22POFS ladZJOnHN8nc4veMZ9HkyAg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Handle rk_udphy_reset_deassert returning errors to avoid theoretical (Rockchip reset controller driver does not return errors) SError. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260626211151.2332F1F000E9%40smtp.ke= rnel.org Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 4116b4b18882..9eb8e40f6afb 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -802,8 +802,12 @@ static int rk_udphy_init(struct rk_udphy *udphy) /* Step 1: power on pma and deassert apb rstn */ rk_udphy_grfreg_write(udphy->udphygrf, &cfg->grfcfg.low_pwrn, true); =20 - rk_udphy_reset_deassert(udphy, "pma_apb"); - rk_udphy_reset_deassert(udphy, "pcs_apb"); + ret =3D rk_udphy_reset_deassert(udphy, "pma_apb"); + if (ret) + goto assert_resets; + ret =3D rk_udphy_reset_deassert(udphy, "pcs_apb"); + if (ret) + goto assert_resets; =20 /* Step 2: set init sequence and phy refclk */ ret =3D regmap_multi_reg_write(udphy->pma_regmap, rk_udphy_init_sequence, @@ -829,8 +833,11 @@ static int rk_udphy_init(struct rk_udphy *udphy) FIELD_PREP(CMN_DP_LANE_EN_ALL, 0)); =20 /* Step 4: deassert init rstn and wait for 200ns from datasheet */ - if (udphy->mode & UDPHY_MODE_USB) - rk_udphy_reset_deassert(udphy, "init"); + if (udphy->mode & UDPHY_MODE_USB) { + ret =3D rk_udphy_reset_deassert(udphy, "init"); + if (ret) + goto assert_resets; + } =20 if (udphy->mode & UDPHY_MODE_DP) { regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET, @@ -842,8 +849,14 @@ static int rk_udphy_init(struct rk_udphy *udphy) =20 /* Step 5: deassert cmn/lane rstn */ if (udphy->mode & UDPHY_MODE_USB) { - rk_udphy_reset_deassert(udphy, "cmn"); - rk_udphy_reset_deassert(udphy, "lane"); + ret =3D rk_udphy_reset_deassert(udphy, "cmn"); + if (ret) + goto assert_resets; + + ret =3D rk_udphy_reset_deassert(udphy, "lane"); + if (ret) + goto assert_resets; + } =20 /* Step 6: wait for lock done of pll */ --=20 2.53.0 From nobody Fri Sep 25 07:23:39 2026 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3C053DCDBF for ; Tue, 15 Sep 2026 15:06:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; cv=none; b=liGChxZsbJKK9oGfLMo7KiYfR4i10020QSR+1j26+xLhdhqQEyxY6FPCJeXMGOeW37zodLhfy/Xh7sPm8eb0882Oe3CyLBqOC31Y3LGm0pXioR71HzeAW6nYoZN0JN3FPRHzNLBz+NPXC+qCVQgT0hzeHjNkMoKXo/lbV/9wUhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789484787; c=relaxed/simple; bh=aDQ/1e1Xg3m88hGXk0Rm2Is+cqI/LbDQTr1ZWB0+sQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bWi6oRSA3itI0G4bZ/VQk17qEJI45XLOWTHc3KcSgkfXiGjeJEkURq20Nw9sRNeq7pJ+Lj0gbVPVfBu7zMLm6bBaX8IW7Wi6bPXiKAMDIuyLC5eRQWte4zAsAVBkQBdvmTdkyyS084ztK6bCJcd3f9vFR96Z0JX/PWO2CsJMSW0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=htWbhbm+; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="htWbhbm+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1789484779; bh=aDQ/1e1Xg3m88hGXk0Rm2Is+cqI/LbDQTr1ZWB0+sQ4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=htWbhbm+cbRnv7zFxt4fnhu70m1RSCuAWH3x+cpebu0cndrMsuP53pUn4hzfw9tKW mSy05XlKKqaSfQUr4pzuWk61e0zsWB6gSA6nJu4lksfIZys4elhMegvxlCmn9iVAok hiGMVsF0XKMSqIbDoeFtWQzGg6ZmIFzIttVCM7RthLf1fb6NGA/YAZZ9V/ha6vkG/U Ybs1XTyP+pqufI4viBiCn/QgdxLWd9UACnKQcFVPn27rl3gsJ8BuxCSiRYeXmI38Sj EGk+fLVAZ4lpZevo0VZzHs5S6otB2VB4PDp2vg5nfmfVhAu5jlYPEEGv8cXLZZbiv5 0xxsCF0ttF49w== Received: from jupiter.universe (unknown [100.64.1.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0EF8D17E0E3F; Tue, 15 Sep 2026 17:06:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 7056448004C; Tue, 15 Sep 2026 17:06:18 +0200 (CEST) From: Sebastian Reichel Date: Tue, 15 Sep 2026 17:06:14 +0200 Subject: [PATCH v15 11/11] phy: rockchip: usbdp: Only enable USB3 when not in high-speed mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260915-rockchip-usbdp-cleanup-part2-v15-11-8d507cb1174f@collabora.com> References: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> In-Reply-To: <20260915-rockchip-usbdp-cleanup-part2-v15-0-8d507cb1174f@collabora.com> To: Vinod Koul , Neil Armstrong , Manivannan Sadhasivam , Heiko Stuebner , Zhang Yubing , Frank Wang Cc: linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Sebastian Reichel , Sashiko , Igor Paunovic X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1157; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=aDQ/1e1Xg3m88hGXk0Rm2Is+cqI/LbDQTr1ZWB0+sQ4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGqpXupz9GLsg8nfTYzZWLzNzFFiWqReisegu H4r80Yc2ZkwK4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqqV7qAAoJENju1/PI O/qaNqAP/2JM/g1kB25CekaV+kJr3qs6/mjsPNSnOel1XeO7Hb8fWdxbq78OYersVcABCOlm6f+ vTDO5TUXIHg/c67D+qzcn95aiLAjPlI0Wy+nyqZnIMhh1aRRkCTWdzbORBIYgYC+qmjj6V8U1Zn WlYVLtn2Butnu6QDRT3PoYc9hwNq2YlDmWT53Hum4jjPfYNe5BMr58jDZ8uH/Kb08xUbb53Aahv gV4HjauwKOoheo3HxpnLRut5TkmmHgtlos11zLWulNhlKimw05MaUJH2e27unHtI/0wyzyLRSqy DxEMThsmz40NuxrNE6iX8pReW1/LzD/dUYh71kXKlGeCSUQ61+OMP0/21Y8RaGu+CpRhpZ/QsFq 5Q5WqPRsV3Qrjn5K9TGDga97Ygpe4PA7gAB4PPzj6dkedM5+XJTlVLTKcdJfCliG0DWbqmTfTXQ dqYBPcyIMeEameuNBzb+GtOmj6nKNkT10rY3QCTxi/TjnbqXBZwmo3ScENmNDWB/w+hswEl4x4b I3Qy3ngJcyaK5I8m9IVTF2u2sAbF2/htWJe0M+NIZ49vq+f6CyUODWG5d02yqoKB48siCRBR3yz SUgjISO5y9qVX25bwzak32y3AzYfNv4oIQ0vpkN+nzbrkUsQoupw4awvTQvCqCx7QrKgbrdT8Br /G19HsRgYK+W+t4B8GKgqBQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Ensure that USB3 mode is not accidently enabled during PHY re-init for systems that are configured as high-speed only via DT. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260626212424.C215E1F000E9%40smtp.ke= rnel.org Tested-by: Igor Paunovic # Orange Pi 5 Plus Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 9eb8e40f6afb..e748acdd2d31 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1008,7 +1008,7 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) if (ret) return ret; =20 - if (udphy->mode & UDPHY_MODE_USB) + if (!udphy->hs && udphy->mode & UDPHY_MODE_USB) rk_udphy_u3_port_disable(udphy, false); udphy->phy_needs_reinit =3D false; } else if (udphy->phy_needs_reinit) { --=20 2.53.0