From nobody Tue Jun 30 10:35:46 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 4AB5778F2B; Fri, 26 Jun 2026 20:55:04 +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=1782507305; cv=none; b=ZxMOHYsj6um4s44nVAUnYDQPptaz9kkcPQFNQKCNNKmuBFsD15/PGeJJYm3NjJJmHXlY3ug7ydN4tcH53Y5IgT54buOe9vm0h/kJ8yWPmWfsZ96ndN6NIGj9Fl95MGMnXT/r1Jl3jclTQSvx8gMFhH39JMbdEq1oEeQAFoa++Lg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507305; c=relaxed/simple; bh=hH0QGrmLbuu/B4YZadFae3inm/JzWTkz0OQ7ld9Btpc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cWiANU/nZOn8PlmsZlIXREAIq95/WnyrMYtx/ProFmKStVJkRDpZnP/nOxD0rN/JkzOef0JiamtHIgI2Brkr2ymYN3i0yplk/uVmpwzeCucD3qJsMnViP0nQxd+pgJcBVTqMdvyn+A1R3VpQq0tjRVM2O7vh7S8wA2uyhP6ViNI= 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=eyxiluI+; 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="eyxiluI+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=hH0QGrmLbuu/B4YZadFae3inm/JzWTkz0OQ7ld9Btpc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eyxiluI+UcnfAdFgxkj9ULNGsKuka3AlbcKJBQOEWUUGAcDkP6GjrqTGTjzxIjIs1 5g3Ui+bETqg7TdSCZd+7sy5tnLs4hTeWcgjQCsgUvPpGkwDMbMbUTOlVGF5mx+zsLr wnBWJTKAlHJ2UNleDkE2X71ZMGAEqLSgLfk0/bJ215soSt233khGfzbWdabMZ38nq3 C8B2YxLWYK+hsVvTKQmPVFSaAaq+G0o3TqL/xeDxm6xq0DbfDgE/VG6HRffsHuzG7e hfSJKOSbuPLc7voh49mNoBxM5ZrEVEsqxnCJcyQrWOvmfiKkhgeKTQxo3+g9ZdVcy1 AiXfMO0n/A7jA== 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 64A6A17E1164; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 0CE02480026; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:54 +0200 Subject: [PATCH v8 01/29] dt-bindings: phy: rockchip-usbdp: add improved ports scheme 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: <20260626-rockchip-usbdp-cleanup-v8-1-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2290; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=hH0QGrmLbuu/B4YZadFae3inm/JzWTkz0OQ7ld9Btpc=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5ySZkUc+unG/FSLMgqRkl6iB8fnAY/wuo pXDZZjk/5BATokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuckAAoJENju1/PI O/qaQ3IQAKhnBIq35/VZ++v20D+qCemm+EYfG3bzd4r7xOrhH0Hk3D9nWTFB4s8WoHQUSinqQHJ gxtTGCSEOki/OHkZEIcMO4b0xq0nGz+l2ApBRNU2QS/5+93JVUEVSigPiYrw2DBHoZ9Dpbp5q/d b1ouVQaSOOkrNg2kxD5DnB26s1Ms9+IgqSq9AegEk/4SI3mZje50luKCfrMtsyuuBGJzffinOx9 L/IBzoeEJMmiefqwi4Uij/d5e8uaac6DpUZc3nCT2qStDnLHQVOV2Dw8X1/cYkbd9tsGNliqmog 35HDc3a9NeVBT3nVT3xs5oHas9wKWTNs3dXrOAgDy46F6poo6nreEjcdmfHQ9QUu0XtWQyxIK/7 SIMPZTIAqJagnOTDyFO4mqHs2lwX9KnuE3tybEa3SokzA/gTenTEjdqBQAM/O8jnKtKolVIcwyU JqIc9CP54ggyd4AjeVdDYJ/sLj62NenOuD4nhM+Ss5aeazni20itAeRTFmj981nyhABBPcvjuXg CDqWoZKoXED3BB9Q6sWvPDdYmSfl4XlGy0nF0OUyOD3wZ4PpI5mKWOpbswub9WqMnZiYzRF2tYy BGygIZT+kOtqaUevNMQKXv0l5NtgNG0+I2zIT+uVd7rfEBx4pFlFQX8YYwIGQrI15TkpMBoaf3b TCB31JI1Q8xCohaNnj3AonQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Currently the Rockchip USBDP PHY is missing a documented port scheme. Meanwhile upstream RK3588 DTS files are a bit messy and use different port schemes. The upstream USBDP PHY Linux kernel driver does not yet parse the ports at all and thus does not create any implicit ABI either. But with the current mess it is not possible to properly support USB-C DP AltMode. Thus this introduces a proper port scheme following roughly the ports design of the Qualcomm QMP USB4-USB3-DP PHY controller binding with a slight difference that there is an additional port for the USB-C SBU port as the Rockchip USB-DP PHY also contains the SBU mux. Reviewed-by: Rob Herring (Arm) Signed-off-by: Sebastian Reichel --- .../bindings/phy/phy-rockchip-usbdp.yaml | 23 ++++++++++++++++++= ++++ 1 file changed, 23 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml = b/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml index 8b7059d5b182..f728acf057e4 100644 --- a/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml +++ b/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml @@ -114,6 +114,29 @@ properties: A port node to link the PHY to a TypeC controller for the purpose of handling orientation switching. =20 + ports: + $ref: /schemas/graph.yaml#/properties/ports + properties: + port@0: + $ref: /schemas/graph.yaml#/properties/port + description: + Output endpoint of the PHY for USB (or DP when configured into 4= lane + mode), which should point to the superspeed port of a USB connec= tor. + + port@1: + $ref: /schemas/graph.yaml#/properties/port + description: Incoming endpoint from the USB controller + + port@2: + $ref: /schemas/graph.yaml#/properties/port + description: Incoming endpoint from the DisplayPort controller + + port@3: + $ref: /schemas/graph.yaml#/properties/port + description: + Output endpoint of the PHY for DP, which should either point to = the + SBU port of a USB-C connector or a DisplayPort connector input p= ort. + required: - compatible - reg --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 4AD8B3AD510; Fri, 26 Jun 2026 20:55:04 +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=1782507306; cv=none; b=EMVm+Gv/GzBY6M09ZAvbSrmyyx8ESIWTII1R3J+eXyN7ceeBWSoLu23PAeFV9xwPP5gMy+/f46A7YMMPW3kxd+gLRiTGOHtjrkyPGxOR8B6Ut1GSZfn/14IYl7SnV3sW8aCEV3lcaaBSCjpIKPkiSpafoCDECz83pROxKhW+jNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507306; c=relaxed/simple; bh=USg1ohYmbXwetA6mCilQyNqt0XA2ZTz/AW7yPMSqQVI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pp+erkRyqRfvcCfWM+mMBbcHKvEZPa0V5O4veCWG91TruyTnFPGlE6noMmdEAy+k3kMXCHX2uoCQzFji7AF5IU2FEobBuGzNWGd4xTnZ7e+9GhBZN17sJs7+sp8hkJWZI7GvzbWCm9K89UGXstF0/5OeKQFEeeL/Qk3ny/gURvs= 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=fjKGfUu/; 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="fjKGfUu/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=USg1ohYmbXwetA6mCilQyNqt0XA2ZTz/AW7yPMSqQVI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fjKGfUu/SgCkMFsLGGOpRa09uW4xKO0KPwoxxOsdMrySTXZhGtoLebulEpBMF0+Rb cVRh0i4fF2wUcr4IAoU4TgQS3Y6J9l0RxIMJxecTQ7q1kro9oCaQ4hDEmEWmdu5eA7 5vaBfXd47GhALcpISn2u+cZIJHs/Xi7ML/B11aIK5Hq4ijyYenSJhfqUS7rNh8HM5L 1rwXFyF0zCUR7GzBOfjWtHppUtUFIP3fa5QIyCqQaRTW8n0/9tLM/NeHLFigJqqOxU P3o1mStnn8nFSLCCBoclKcJFe/8fJdETd7a7EZMOahG3rg4/WqiyhI3QQxpsgUfQCT 44QIYbTn82mtQ== 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 5EB2B17E0C88; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 0DC37480029; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:55 +0200 Subject: [PATCH v8 02/29] phy: rockchip: usbdp: Update mode_change after error 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: <20260626-rockchip-usbdp-cleanup-v8-2-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1789; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=USg1ohYmbXwetA6mCilQyNqt0XA2ZTz/AW7yPMSqQVI=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yQ0wncuIq0TqEaIQ0cGZ6hiF3QKJvVIq ow3WgHj4ebDaIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuckAAoJENju1/PI O/qavPQQAKACkti70G1jJsqhNOAQ8DrvY2FbnT7ygWto0Uj+7VpmMQCYn2My4kR3kvyZ4WqXvFM Pxju6kJJ7h03GlK9HNx0vF81yIoekaWAN8rju8ffWUN6VZ9fHiAq7VE/jjbPBtqD+Vv5QCyokHl LjUmLGVmKGC+fB4ggvpErEePSnIJ5GCt1ZYvKGp9Q2Tz2TdFxXKtmDNMH735v+2GwWdWUOJBqm2 i8L3qVMjcSXtWaRNIZk2QuJ81OUGT/TEaXAC6zyl3UHt0lB6dc3gl2I4jooCUWZrsgMcE/aSPnL WGv8NXIdK+M6z4k8JCIrNUU+KmyJXR1GCAWpNGgPk9+8qSwuC/i8VkHiq83nUWqWW2SuDZeTdWr BzpfviTJuR2ZkFhi7db3tfQkAjA0yz0xQRSmggHCIFJqgnqHYKL1jNhvG4e/yyesCAjBzrPQqNM qEdRrUpM6xXxMJGU9z2HafAIgwqJUtSJwMccwD1KJKUXvdc143AnnbPzpkqrMl1SUuvYZp6Lc/t sKVhzmkWYAeQ609POJAvxmpcnhwjnuCwLegKFdD5o32HrieyC1IgmAIEI/It4D+mdXRv9wsuD7/ rYKB6hl114jYSPfMO7I9/8QvkKnpXtHztEtAdZmqJavMAakCHj5P9cyrvsVfWcS2M66kMmaLC3O 9B0dDM+eS8KmdPbWRQwYo8w== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A If rk_udphy_init() or rk_udphy_setup() fails, the reinit will not be tried again. Fix this by only updating the variable after all potential errors have been handled. Note, that no errors have been seen on real hardware and failures would most likely be fatal and require at least a full reboot as the function already asserts the PHY reset lines. So this is more of a theoretical issue. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://lore.kernel.org/linux-phy/20260612163835.8D5471F000E9@smtp.= kernel.org/ Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index fba35510d88c..a5ffdf7a6e76 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1000,15 +1000,14 @@ static int rk_udphy_power_on(struct rk_udphy *udphy= , u8 mode) } =20 if (udphy->status =3D=3D UDPHY_MODE_NONE) { - udphy->mode_change =3D false; ret =3D rk_udphy_setup(udphy); if (ret) return ret; =20 if (udphy->mode & UDPHY_MODE_USB) rk_udphy_u3_port_disable(udphy, false); - } else if (udphy->mode_change) { udphy->mode_change =3D false; + } else if (udphy->mode_change) { udphy->status =3D UDPHY_MODE_NONE; if (udphy->mode =3D=3D UDPHY_MODE_DP) rk_udphy_u3_port_disable(udphy, true); @@ -1017,6 +1016,7 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) ret =3D rk_udphy_setup(udphy); if (ret) return ret; + udphy->mode_change =3D false; } =20 udphy->status |=3D mode; --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 4AD123A4F36; Fri, 26 Jun 2026 20:55:04 +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=1782507305; cv=none; b=GOozPuBlpO/cgpE8xG9+6FYdacznCMbMSM1L4jWbkuBbN9CG6x91RhekKD+W6JATWq/AXkqzTrdKeuOQLgjm7lXoRz4K8HJqTHGWD9HfqMqyZl+apsYlvjxoc7MIjwy0hxgNuJBPfxYyozdEwJaz91CYkVHM/Ay/sI58bKUTq90= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507305; c=relaxed/simple; bh=ou2OeHe9NiTPGYgMcRzTUBwKmURTgL5/azZ1wBtlGvM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=otTFqtRsblIryKIZMdLt0PEmHgygNhImBQiKtuoSq6CrmqwH9rSQfxhzH8oWFRKbHkeAvWTboj3mTcSQEMO5YVOFyXQ0bTXtPDTZJONDdwe6u6PDFFzTETpzWYXGTf7nEdcn4rvsPl9Bbjv73werrdZTu0SR9pxFTCYge8S2Jjc= 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=FVLw8TEf; 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="FVLw8TEf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=ou2OeHe9NiTPGYgMcRzTUBwKmURTgL5/azZ1wBtlGvM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FVLw8TEfA2/GO+0mSqYLCn2JUSzjy34nv7Eslu6XvT8TvKNregRGrfETK87r+Ij+y HopzGlQW/KkQExB7TI9S0ISpuIvHQFH+Ll5tfJhlC1d/PdZUkiD/YLj3YCKfjrRYp8 Bcx4KlxJuN9A3lq2guiOl3rOtKAKhMzC3yh3Mg6IVrqdNz+ut4Y7cycQZHfnkHIUYL QnMyx/BPTH9S7h9ozKKRUqB9Vtf1iJkwxLYX0zijMXPUMw1UMu0SOFbjZd3QxkG0RO sWC55xtnaOTE5TabF3Mu5s699Dh6OAP6Mx5k73RgC4xOcDTJeOw1Itei6Ao8I6iA+q ZoCMu6QhBwX+g== 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 605BA17E0F8B; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 0F3C948002C; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:56 +0200 Subject: [PATCH v8 03/29] phy: rockchip: usbdp: Do not lose USB3 PHY status 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: <20260626-rockchip-usbdp-cleanup-v8-3-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1409; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=ou2OeHe9NiTPGYgMcRzTUBwKmURTgL5/azZ1wBtlGvM=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yQRGjoRlPXJDj760LCK2u91AEzVkeGyS 3cklfNcIyyQA4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuckAAoJENju1/PI O/qaFR4P+wRjLQCTZ8Ekv3tgd7cqyGq+ldnASQ9tmKQf5gK7MN6BwY7WGn2TLhiziKgBSi9b9sT T74w0J+pEb69mPAFBhczjjTVZ4Vb44HzmyEH75iukyptoMTL5ppJhGInNEpIUrLqEJ02XF9L+s1 3NpDfRndmSRLwu7DbcMuQHfq2nZmAlgM9uwdNL3tfwep7QvvUgDEkQO7Y/TiGrjruyoNDQswmUu 9N/uDUMAa/TXMoofb0lx7k/6OYqtnScwD5xtXgWUMRSUO4mL1iwJGi+2UGa76RTgTxaxdS2o/fv QVnNFGoX4DPdr0lHqkeQeVG6bp8Jhqsc2cm756C+XAid2IGAX4N6CvUqNHc6g9XLjIEAkfGQfKB RDaI2usQfssZyQ1kx5o1MJRpT1EI1IN0Nd3O2JLzrun7Ub+YA1rS8fyGJiNwnyxZ9/2AsN3coMO ox5u0IcC+Vna/9qmd2wyp3m2/Et9OpXaWBwhNnLjod3OHYTQir4NGfPe8F7d/QMiZP13y6pNJ/b 4VipKPdmP/La5yjVaiNXx8gEFZTLNDsDx8PoBMgn7I7aYu7YV1xojTssBMHzMnQ09fiKkqRDqfh FDsPVtjo8ChKkVr6Mai7n63tlhThuclkfzve9VCgVgxkBfYCE5VBfXIVyBy32D/dhB6ZF8VCYaE CZTxK6GoVgtT0Joaol94whw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A By default (i.e. without manually enabling runtime PM) DWC3 requests the USB3 PHY once and keeps it enabled all the time. When DisplayPort is being requested later on, a mode change is needed. This re-initializes the PHY. During re-initialization the status variable has incorrectly been cleared, which means the tracking information for USB3 is lost. This is not an immediate problem, since the DP side keeps the PHY enabled. But once DP is toggled off, the whole PHY will be disabled. This is a problem, because the USB side still needs it powered. Fix things by not clearing the status flags. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index a5ffdf7a6e76..12dfdd470a78 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1008,7 +1008,6 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) rk_udphy_u3_port_disable(udphy, false); udphy->mode_change =3D false; } else if (udphy->mode_change) { - udphy->status =3D UDPHY_MODE_NONE; if (udphy->mode =3D=3D UDPHY_MODE_DP) rk_udphy_u3_port_disable(udphy, true); =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 4AC64358D37; Fri, 26 Jun 2026 20:55:04 +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=1782507307; cv=none; b=VaW2rA/UpdororSRkXSOkvzcbUe7tTa1YCYZS4pBPQdsLYE/nNJx0tPKIyUTcRxwwm2yKvgxNhxDOL5B+nWSU1QwtqDEyhwVfCQf4+5pIm70bSVmBGL24ROMQehLF9pYIzccU8mnsH0z+cP0tMoj8Y8VivFx8gmRsF5vsPxO5K4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507307; c=relaxed/simple; bh=1p3WFYm3nPwFyjx+ldeJOnj6dqBA+X1XeNTC11p7Zk4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SJ79Rw2xxDd0mZNabDwR6sZmCm0dMSuwbomBNf5gJtzqe0zM++cpyAYYcg0dBu4t5RX5YEBSYr6CTxnavIyuoFbP1q0bvCACe7h7NVeWkq1K/ClvvNINdis9AU0UGem2AfCSsNga+sNsjPZ0rjYMTiwMtgl6WRjNo2/v0r+w88A= 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=VZuKZqjh; 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="VZuKZqjh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=1p3WFYm3nPwFyjx+ldeJOnj6dqBA+X1XeNTC11p7Zk4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VZuKZqjhOL41NXJS7+mvK3jLcBagzwdRffZc5kQR/23F2YzzOX1oodnU6gbWwzlWU PuptQ5mb+YU0fZ17xMc/5TozVxyE7En9/tROJ9LLS1UgRJGu+YQM4yqUpI7jjtqwx0 M3zx8dQ8jjaJfh7iNkXa0Os+E30p6CGaRaSOGan9iqdTIoRUdtszXQ9Zz+ewtMcg3H P8lI9lV17fiKkroCXG9/WwIrkehpiV0hjqyjv2emawx7ZbS7Es3w6NkikqaATnmsoq UPeNAWWIJiZvBqxiqQW94cYDeAYjvvZy3/uAFbvwbyYHWf/YHqLKGNmYdw6KVWSQ8L fKRrC5ft3iIsg== 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 619E017E10FC; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 10CB448002F; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:57 +0200 Subject: [PATCH v8 04/29] phy: rockchip: usbdp: Fix devm_clk_bulk_get_all check 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: <20260626-rockchip-usbdp-cleanup-v8-4-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1653; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=1p3WFYm3nPwFyjx+ldeJOnj6dqBA+X1XeNTC11p7Zk4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5ySEnnXwnLhwf6pGkZ15z8g1ku8DZG7rN Wy/PaCZj4EKVIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuckAAoJENju1/PI O/qaaYwP/R+sPnWBMhanQqGENnxS93mEur+v+/3r6apGQ0wkHHe0+GjLHuAmy1fHPQYpsinpK+6 nUqNTOaC0bOrnLHaTBZNJx2POjcJrztmbppFGgAqTSWwd9vHguYK0ZAQjo4rNOHlAcEO++2Q8EL VZD+XV+QbRibpgZDhApb3cZh5RCE7Ddi2+EaH7m0sj3oRXXZUh8FCP4UXSLJByOowRmIwo+HOJx rR6daYGfUgeWP9kP0vwCe2MGYTMsyPdS0JhPayPvn4Q7uNjtd9osdtFmrD66HmryAIwkQLOPb8z AaTcIHaspS/px9+vMMgBXggX5Q5JosoDI2ETg76DtNTPnxEoaTQF1IOruECeJeXKTPH5EFZf12u HkHzi6zp7XFBkD600rOI4ALWyvOcHN3XebvN+jKQMh2DOZUtm1ypSFzh2aiD22sxP626FxoJaWq Xh1xcjJH23PkNnyekPKtxi2/9Hzab3X7un5tO4KANvLD7rx65p8WDXiaX+UO84vCECuNPAHp1D0 Ksf0TfSWZwA3Uewl9PKEK0ZsqYaw1RreHYVi5mdZkThWFQlFcwbeBKEa9lQQ72AZbZPAj6rPmgo 9VGoDphSiu7qraSR4mXL4nShiPt+yJiP9Id9Hm0myMfcZ+tUN6rqAxX47g5QZHwOKU87jOpHcIc lYdqe3vqJCsMjuIlt3Agx2g== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A If devm_clk_bulk_get_all() returns -EPROBE_DEFER, it is replaced with -ENODEV, permanently failing the driver probe instead of allowing it to defer. Avoid masking the error code to fix the issue. This effectively drops returning -ENODEV in case no clocks are being described in DT. This special case will now be handled by the follow-up check searching for "refclk" and exit with -EINVAL. None of this will be hit in practice, since the driver is only used by RK3588 and RK3576 - on these platforms the DT is validated to contain the clocks and the clock driver is force probed early. Thus there is no need to backport this. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://lore.kernel.org/linux-phy/20260612164107.C7DB21F000E9@smtp.= kernel.org/ Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 12dfdd470a78..2845a012eafc 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -427,8 +427,8 @@ static int rk_udphy_clk_init(struct rk_udphy *udphy, st= ruct device *dev) int i; =20 udphy->num_clks =3D devm_clk_bulk_get_all(dev, &udphy->clks); - if (udphy->num_clks < 1) - return -ENODEV; + if (udphy->num_clks < 0) + return udphy->num_clks; =20 /* used for configure phy reference clock frequency */ for (i =3D 0; i < udphy->num_clks; i++) { --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 30B0E3BFE44; Fri, 26 Jun 2026 20:55:07 +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=1782507308; cv=none; b=ExZj+MqFAiwdYmIJHDALqqvLqVnI2ldaBj9s9srfYGfcLuJo/vSxwlraKg9mFAZiU7qb9nB9mVowLG8ld9o8Clh6v0341rvfZqovgNQ+VkSXKombXNHgOs/0dxc1VIEgcUoR6OW86N0FQqcbKHBt6yRzI/kyHQALj2v9GJ9sJYE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507308; c=relaxed/simple; bh=gjt94yB7OMQ1kbenpTWsg4rbaygeNwSXNZrsMwALuYQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f/19LvjMERs1/k0a6RwcoZrmpffBx/JUOjMj2qbXuqnNKA0ytTjrl73hemQ8EUrQsJRArleg1Gk1NF7RQOarNjJ3lf3sNt6MINA4N2vZBPcoAFOR+AJkt1Lbuk5ObS+tO8Okkpy4rEZ0acjt4yHij+a+dSLqLCechJVUcZVTQ+c= 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=Z1nqiS9N; 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="Z1nqiS9N" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=gjt94yB7OMQ1kbenpTWsg4rbaygeNwSXNZrsMwALuYQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Z1nqiS9NNz/nR3LpPwIZgkouMcgmy08ZzkZodIBkdA0cQ8H8CehtWYDB+1a3igeid PqXBUWPieqNDFsKskKYDRxH1LUG2jBKnqKUwL6yOtj/gBpSZ8+42nTRspWCni90rVe edGmbzQrZ3pr4+iG+JCx7DVxWyHqzCgDvcglIbG3RjZtlN6a2Itro7dcAoip9mEk7s Td5dIjtWAk5j3IWxoptrRrNxJCLR6iAB9ZmwMCWo4HWJ3zHyY2WmXbIA8WTG2zfmd9 Su0zBmFQ8suO8vHnpn8ta4VTEG7T54LSF+Xic0SSHJmg3TQE/WKx4g9JxaXb7aRghI nU7O+qpY+jDjg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id AE09417E120F; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 12560480030; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:58 +0200 Subject: [PATCH v8 05/29] phy: rockchip: usbdp: Handle missing clock-names DT property gracefully 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: <20260626-rockchip-usbdp-cleanup-v8-5-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1302; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=gjt94yB7OMQ1kbenpTWsg4rbaygeNwSXNZrsMwALuYQ=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yU1EsgQecKJDuUr15t17180rvVP28As2 Wm5WXfaRjUfuIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaygEP/0l9sC2P8AIfdIIXF4NSBjurLAM+DiCcf3oDgUkta/GtZYMEmedrHn0Z1qOlZUfbEQM AQVpMyZ2T08mRBjMjqRWNvDH0VOKZCvUM1aL4CB2Bwr8yT1f/NzvVKW5U2A7yiZQw5rCX+R3XsF ZNo5bLVv3HUXG0hZE/K8uNiFVilc+UNHoMRBiid83ZATOspAwcHgIYhu5FuRJUXVMcf5IWNNxPN AYXlvhwPYl9ZBzZ5sYiJVbKBifgBh1fvuVCZxvyahimk1MC0JogAMw1470NG74CuMUfMJ8WN8bb 7DLZzOXtITffjn7gym8PAP5Iz9IF32sCvTnq4zn3D71YUzVr6pJC4mUcciLZQ/4KIkcYJxkDEVc 1Mwjxxue2jGFsx60BcxcXiy4LLs6jQ0LwdWe6Pf55hLyxmIifV95m5kTloPpA9Td1TOwu60/aJP CG+Ra0FiMN6K8Hon992FEl5yT6JksLcC1NfNGar6hLr0QLme3pRqQ6EiU4zSCTfW4ocINnVOCpV NYsMYDzeMzIQpoQ0g3ohu95+7C6V3eIEKo0uG1iYx2cuMwTbTy8tfk5CRbkQqXgz60WrYj4vG+T hRytCkPqiA34XpRdGkVhMHthIUv4XZWiTgByeKTDpcvDN7T+nQ42j2TZJAA43MoktNtwRAlYv9L 9+sRkkn+GPiGXmZ0BCMkeSA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A The rk_udphy_clk_init() function would currently try to do a strncmp for a NULL pointer, if DT specifies 'clocks' property, but no 'clock-names' property. Fix this by making sure the clock has an id string set. Note that DT binding requires setting clock-names, so this is only a problem when booting a non-compliant device tree. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260619154349.071321F000E9%40smtp.ke= rnel.org Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 2845a012eafc..3fc8222fcaec 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -432,6 +432,9 @@ static int rk_udphy_clk_init(struct rk_udphy *udphy, st= ruct device *dev) =20 /* used for configure phy reference clock frequency */ for (i =3D 0; i < udphy->num_clks; i++) { + if (!udphy->clks[i].id) + continue; + if (!strncmp(udphy->clks[i].id, "refclk", 6)) { udphy->refclk =3D udphy->clks[i].clk; break; --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 30D153BFE4C; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=VBYXHjL9Tl55My3h6VXTdAN2mq1jIituSj01MwbS9lojQNWfUdh5pLn2rIu5J2Hf2Iz+82N9pJBiKxEfRrrk5w6DLuLlDYAHRYmwnM7j7r4LaaVYeAJIzXR1U160moyQUNa8FYopLoGfg6ytHCDfxAYtkvyWG8Mj/H2CACpSrJI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=1nHF1vrjaNXH6VxWJ8xbYUrny3B+6HOnTbC9UsQPiUA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CX1ZenVhOMNdhU3vy+shnwGb6FSGcvqRqN7QrsG7cQdB6lF4iriZ52MixALqVrKI24f9ojRa/5b2DAwfhsFwj+Bvs/VzBAksi1g15gxJyw/jhzswKlIgLpINTEp+72Z+umBo9EAPbMgzaf8yoFPA2zj/CukiZWEi6XC46aeULqk= 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=kNLaLxuO; 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="kNLaLxuO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=1nHF1vrjaNXH6VxWJ8xbYUrny3B+6HOnTbC9UsQPiUA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kNLaLxuOFDahf/RD0A7UG+SZrqlNJu9EKRGOAAVZaaFDOZt+byKPdXaxGSqGcpZ4h SpS5qtqB3h2m1N8tN/yl2LUjsIomJq3Q2BqzQBgrw08rI9i89ZeQ7CurPAd5bTF9bu QBT9LpEuVwI4wIx0Nxygpu9onus2YPMdaBTxBeqaqXaBdmiMnOe02KbZlOLG4ddBPQ bD7rtXofqNgbH3XQ5oIq0QFNIFgthViWjNqoX4eUKeJWO6I4s2yrKGnLNbdSiWkpcQ 7DIyTIeA+V6lvVuxknBFG5cwChZTPXsg9xlvlgN6a5k8rdAnidq+4sshYf2kB97e1d uPMSRIhCZpUwg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id AFD7D17E1270; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 13EBC480031; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:54:59 +0200 Subject: [PATCH v8 06/29] phy: rockchip: usbdp: Drop seamless DP takeover 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: <20260626-rockchip-usbdp-cleanup-v8-6-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2693; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=1nHF1vrjaNXH6VxWJ8xbYUrny3B+6HOnTbC9UsQPiUA=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVrcDd9pGLx40GIcnPMFQdfjYzZAJukZ oEs5fq1+0WHRokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qakkMQAJsmLpk5yiZKcUP5L+SHN9M/nrx1QT+6PnzKk0T1s7CltqMrycoE81zZw0W/r+Dn7cI wfbCHUHnrJHhWWu3FCROZcmuhdo+eushp9DTctYIeAB1FIY/peYhZLi5GKkN5Od+pYNr4Xhp8si LnklzD2/cXdwPrXu3tIPpY3HiHy0QYwmw47Rbu03P0Y0AM8Uwn9GE6UXCm+d0mkvXQJKx27LyRj 32DgVpmySh7bZRRPMp7FMyC+ztePV8wBwdXaTiWmHxQM/RMDWEoKQEQrVb15747YlvnhnQ4pLrD uQWPeJ1gObDgC0DvlMbYdAzoFXQ3ekYUdVVo6FmPUy6sjF+hS4ODo/E5HU0fTNep+u4JiolvR8w PfbTTFOqxrBVIIJkWqMn2MHqJz0VZd346t738e7Agn4ZLaOj9xClj8C1lw2d37JXXGzSB0qzS+F yxmEvd+WngwPpiVDgf8hZ1lMQ0JUnkzTAiT+CJksif7da3cIZYIg7BAdNA143gMK6lN2uoF8Znr UqRgA4W0mu2DM0sSd5vCelgc+GMoE6MnrmR/3ggIt9TStxwEcIvFa3nItAC3nXFPC2Q4z+U5BGj bn8AxYrGfX0eD3RWVTmQ06m7RmTKEjpKsZHgxU81hYxBzRUZIeQ4WaKuJwXUvVgEzrO8vDN1LCp fljNRnd08BOVT4vvJUt8trw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Right now the DRM drivers do not support seamless DP takeover and I'm I'm not aware of any bootloader implementing this feature either. In any case this feature would be limited to boards using the USBDP PHY for a DP or eDP connection instead of the more commonly USB-C connector. With USB-C's DP AltMode a seamless DP takeover requires handing over the state of the TCPM state machine from the bootloader to the kernel. This in turn requires a huge amount of work to keep the state machine implementations synchronized. It's very unlikely we will see somebody implementing that in the foreseeable future. As the current code is obviously buggy and untested, let's simply drop support for seamless DP takeover. It can be re-implemented cleanly once somebody adds all missing bits. Technically the VOP side should be disabled first to avoid data being send to an unpowered PHY from the running pipeline. As a workaround this force disables HPD. I'm not sure if this would be good enough, but cannot test as there is no support in the bootloaders known to me and my test boards route USBDP to USB-C connectors. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://lore.kernel.org/linux-phy/20260612164107.C7DB21F000E9@smtp.= kernel.org/ Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 3fc8222fcaec..f7ff55f03b7c 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -926,6 +926,7 @@ static int rk_udphy_parse_lane_mux_data(struct rk_udphy= *udphy) =20 static int rk_udphy_get_initial_status(struct rk_udphy *udphy) { + const struct rk_udphy_cfg *cfg =3D udphy->cfgs; int ret; u32 value; =20 @@ -938,10 +939,12 @@ static int rk_udphy_get_initial_status(struct rk_udph= y *udphy) rk_udphy_reset_deassert_all(udphy); =20 regmap_read(udphy->pma_regmap, CMN_LANE_MUX_AND_EN_OFFSET, &value); - if (FIELD_GET(CMN_DP_LANE_MUX_ALL, value) && FIELD_GET(CMN_DP_LANE_EN_ALL= , value)) - udphy->status =3D UDPHY_MODE_DP; - else - rk_udphy_disable(udphy); + if (FIELD_GET(CMN_DP_LANE_MUX_ALL, value) && FIELD_GET(CMN_DP_LANE_EN_ALL= , value)) { + dev_info(udphy->dev, "Started with DP PHY pre-enabled; seamless takeover= unsupported\n"); + rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigge= r, false); + } + + rk_udphy_disable(udphy); =20 return 0; } --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 30C8A3BFE4A; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=g9a7OgsnFiIT4j0te1b5dxL0KG8yhYkNy3iWs0HHJNOP8e2rOEce6m3UDPd2H7Ew2kuciz8ZO76G78vwHh8cy+4me4NOcDM7D0AaanHAagdmfiMaTctrXQ339UBjUG8MFya/RH0nNHT9BOxQMq2xa6Ciefaa21vLBRz9kjdWe+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=wIdm6WAvSCnmDVmjn0d4nzjlUVyQK7d9rbn5XLogh8M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IOSvKquCkVrWqB9woHxcOwLJllqiot2iEhhfUW1rwoeVARXjSYl6pXdp7Rc2ExCytPR/bYOJIB6gM79FWnuMxEXDhIZpWkS9RODmSKz4Ib1nrZ4zL1yB98R4MLEe0RnBlVOLM9PQngqLuJwBMSR9rBFj47/p48BOZHbPz4xK0QY= 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=iqYVbMDh; 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="iqYVbMDh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=wIdm6WAvSCnmDVmjn0d4nzjlUVyQK7d9rbn5XLogh8M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iqYVbMDhwwrTVKiaXVZ6eBKE5tbmln5Mp4Ahy1GfBKnui0PLjte3v11igZmrCPUPA 2QvrjmOS5zXqBogYNNo0E7bac1uNUjVYoK+yHYYMAYs6BsrI+C/vYaJ/qWwmgVeLwu YnutpULYGVo47VheQjke3klDNP2nowPz6eBk4WHgpuKSnKmUbukRIGeQn3JG4ByWxe s9U0aKjJCA4iPr2FDC/fh4UarrIUl2loo7bSSeJ+L3u4mQ90KvnSMHnFhjtsUZj+Hi zPVQRXDQSAwyYUHwegFLy8qW3rlBG7oAEFbd2FPDlPyAyIW4RWs+e+T0HNbqE4zGwA MANh4Zyyz327w== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id B7D4317E140E; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 158E6480035; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:00 +0200 Subject: [PATCH v8 07/29] phy: rockchip: usbdp: Handle rk_udphy_reset_deassert_all errors in init check 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: <20260626-rockchip-usbdp-cleanup-v8-7-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1587; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=wIdm6WAvSCnmDVmjn0d4nzjlUVyQK7d9rbn5XLogh8M=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yWbE39BAB+33EfKvnPIrrl2F4e82Rhpy Fhj2WG76sGY/IkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qabkEP/0fQDfGFBdE3Qjyi91pEFGDFfdMbowO1VMEMn2LpVopP514hAJkGol9ABBk4/YCYzPh q9PPGL8kM4g313JuDwpHTl+VyYlZrxGE4ht26BytKRwZDRkycwqs6tcgFk60VGqCR4eXizWOVlo kKgu29ASRVKy1uZr5sTFOZdCjA/6CQKFNiRrrOCD6pnO+5ZV5g7f9tadHbu4YHLyfLrwmf0qj9X kM2K3lIEaei4Nk+hkcNd028WUu+YLyFlEs4xtUxLyhR9QHBdGTcPwYkjg3e95HfYmOtrHNbLY3r XlYRx6v4xG0qDRvRVS/BByNozkusfG19tVqjPkx2s3l5jrpzJMr8acapRQ4Ky2XtxEUIoxjZ20R TOAsO+/BfWnOjfQgOwZj0xbJnOV1gC2L0519nFktLxgur65Ogu3rW1lS7YQTi40rSA2qhnA6VQy VSbaI68fvsMBkZLhDdCrH0rMXyz1IoDtIxOf4VekbgvOphuEdJplWXg1l+7ToAdZJVZNs2cB/Id 6Fw2mW6GwEN6BgLJikjuOLLaEVxkKvBQXnhU3KJqWwmUIOjID69Frbc6fuwD5lGZyIV+8B3jsTY A2EuwGX3giuGG3SK8nFVGXwChvvnG1lSPgKiVDAIxXg41Jht/w4i1mbX+Fyxrc/DUCUwfguJkug scDllP0rFCxDrY4iU38YlwQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Fix theoretical issue, that failure to deassert the reset lines would result in an SError in follow-up register access. Note, that this cannot happen with current code, since the Rockchip reset driver never returns any errors for (de)asserting reset lines. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260619154903.2225A1F000E9%40smtp.ke= rnel.org 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 f7ff55f03b7c..b8de0a47a616 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -936,7 +936,9 @@ static int rk_udphy_get_initial_status(struct rk_udphy = *udphy) return ret; } =20 - rk_udphy_reset_deassert_all(udphy); + ret =3D rk_udphy_reset_deassert_all(udphy); + if (ret) + goto exit; =20 regmap_read(udphy->pma_regmap, CMN_LANE_MUX_AND_EN_OFFSET, &value); if (FIELD_GET(CMN_DP_LANE_MUX_ALL, value) && FIELD_GET(CMN_DP_LANE_EN_ALL= , value)) { @@ -944,9 +946,10 @@ static int rk_udphy_get_initial_status(struct rk_udphy= *udphy) rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigge= r, false); } =20 +exit: rk_udphy_disable(udphy); =20 - return 0; + return ret; } =20 static int rk_udphy_parse_dt(struct rk_udphy *udphy) --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 30BD93BFE47; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=PLHN41j0AmReZbl/bIprI8N3PawWfeFPgUPbCGiRNFSYJUHbN9ym6hyDB+wrxYtgRE/Lqs2cXh0YiZofmGlF7BSpw4CGa5KM4b+24J3d/jKz1Oo676WUUaBvqIhoesoM/awwY2N8y/AZdwqG44/GGSFwFhIGh/iHiwEBE8OxwWg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=B/EWcVc3B/o4P4Gg8Orkvfe3e6uQ/US5ZTpIUx0ygOk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e5U5XaSpDCVUZZE50Em4STVndQyR/tBj26amKWMc3B1E6qS8qMrNYatPria6X2wsyp5/HgU3rv+8oE5Aly2sSHXlWPG0TOw2NwztODsX7hmB7CgU6HMiJrdHpgqIsShMj30kPfDvMpKZh6oFN416ixil1459aGjmpGzm/X8zlzc= 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=bD/b+imH; 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="bD/b+imH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507302; bh=B/EWcVc3B/o4P4Gg8Orkvfe3e6uQ/US5ZTpIUx0ygOk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bD/b+imHu1N6TSLbY+iZR1gvOQuT2n9MfYacxu1BB+7f1BZrQ8pM7v1IPe4Xv9/Or 4dwBH5o/SYF25QGrL5XscdgHIOV/kro8XzHeJdq9dAE95TT8kKY/S9qTSfcFN3/VXd nWlmXcyh6mmQjJA9Ukzf3KXTw0JE8t1+DsgPaDoauKh0YKLc+7R6E+aM5t27nlCS0K 0nK5NL4r5r/Pc38wGdQnc/LlxDTsskcmQeHRAlXZ6EROvDlE57BSIBeBakzsYKSacs xXKmCTnsnhTEN0BJYTXpw4POtX+DQbXEw1Vhh6J1ma8UkSBaiOunGBGV55TgQovd9u Z3f8JiXU0loOg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id BA86E17E14E5; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 17033480038; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:01 +0200 Subject: [PATCH v8 08/29] phy: rockchip: usbdp: Keep clocks running on PHY re-init 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: <20260626-rockchip-usbdp-cleanup-v8-8-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1163; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=B/EWcVc3B/o4P4Gg8Orkvfe3e6uQ/US5ZTpIUx0ygOk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yUFyWL2hgWHH48E4rPmWZhX8euEHrYhp QiZ9B6GSkSyiYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qa+3IQAJC86ALYXZglYkqXR5NyZLrEdQQFLd8fSY9B/+bA1dNBJfSur1/G0Z3tA6vXdFMOAcI t73ZHk5LkPlSAWRE2fBhPSFSRIe4ypjlab26X7CEpnyIuQFCw5oEnffrGUGdh2PLFZaV4VUckQl fsyclV6slNpEqJZ4L5nfGx/ZuM2foUIDyHtgdPthwyHoIctUF7Rjpv5HhkrR9TjPlll0bjLq0HE ihZ7IXEjfyTngb6AfIJYPWi53soutEzf4OIImjoe8G2FzI85B2jyKMi875uS111Rq/RdZQx3K5A 6+/XofVb0E0awGaXkKQqNYdohklxE4YmG8QlZX0t5kO5Qwercln4MZpW3Fma+hZE7OxADwDPesb 8TLLIeMNi01rJipR2yllHwo2keu26dppFAMkc0XKskMGzQTqh9epVjuPYv9pwnHcDTXlE8T0Qsm RHle0wjGUgxbq7wQ//LAbpB9oT19lQUR4WS1oEGY884U6W5ang5Qmxs7K3oLlHZkN3Wv9R7KKur T5z6zNkMg/HqDzYIdzQdcMe1zZhcRKe99Xte/U73YagWiSm8GmPmMwze12EHJP8ljWwfD8rep91 ed5eL8QybPQL99JzIm7eG8Y9lQP19k3pXDAiN3CU5hVwLVksEHzuAlVajXSgjaNxkAhjLhF4/d5 ShA1cK0aW63K49TOFDE4uAQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A When a mode change is required rk_udphy_power_on() disables the clocks and then calls rk_udphy_setup(), which then enables all the clocks again before continuing with rk_udphy_init(). Considering that rk_udphy_init() does assert the reset lines, re-enabling the clocks is just delaying things. Avoid it by directly calling rk_udphy_init(). Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index b8de0a47a616..7fb7e4669f9d 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1020,8 +1020,7 @@ static int rk_udphy_power_on(struct rk_udphy *udphy, = u8 mode) if (udphy->mode =3D=3D UDPHY_MODE_DP) rk_udphy_u3_port_disable(udphy, true); =20 - rk_udphy_disable(udphy); - ret =3D rk_udphy_setup(udphy); + ret =3D rk_udphy_init(udphy); if (ret) return ret; udphy->mode_change =3D false; --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 6EA3B3C060E; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=RMYj7FN6gEmHdTBmm4zrWqRTpBf1kR4Jo3G+ivA5NCrlVP+zbnHvHhBbl140YwFdDdZR2qiF/07d6jrMLnZGzLubyCjLKORlkWec5CyWjQPFgywvSPVEYSQAkg6Zj4mCSyCy9wpS1tyVU3NZAI9G4v0vfEEiMRNBXHGsSPhHz6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=DeCQiKYzYtL5y25Ox2QoMsSZqFA447KebiIBuIo73M0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cl4QaiBYCay+NSqkLQZINQboPK5c8Et5Pl2Nsyl2OwbMhfa+R0LnoxwxeagGNxUJViN/xMKzsfYljcSu/RjTFBB4s/AzYc7YfFcHPTgHF8NteghSxWzUgWSsgPWJ3WnQt/YQWNabC4wVZNZ38rsCkSnkcXA25iwexlu1oqJZET8= 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=UXwB3LAb; 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="UXwB3LAb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=DeCQiKYzYtL5y25Ox2QoMsSZqFA447KebiIBuIo73M0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UXwB3LAbvWmmXIpinH5B7r7YHUrV8XWDXWcONkisS21W4jQl4Wo5yxsi1bHnFTPcp 0mySUZwSB/ffm+p2s1lPaD3aBNGGzdcLocsAj04y+TZ7xx6u88hBM8XyT+xCC1vmd5 y34ZieCEAL2+D64vnQ9284/CGZn0RpDfHPmBB3ECSfMqot+UOYIpy9QSWHI2dffW7y s+Gd7tbNFmdC+SaE+XmswDPqLebUoA05a4uY1EWMJhmbokFpHjlMKLl63Gp8/4zfR3 iYNFwfr1FQQUjoicBmMU+Fy7UXTUJ2mEHsg7TZJxb9zjv7NcP+OlsBZejCxBW8JXhF Ym6lx72AgUczQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id C178B17E14FA; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 1862E48003A; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:02 +0200 Subject: [PATCH v8 09/29] phy: rockchip: usbdp: Amend SSC modulation deviation 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: <20260626-rockchip-usbdp-cleanup-v8-9-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1765; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=5zxSOrJgXfwqGBSQx4xCvebtlAiKiNSAtEIpVUkrxuA=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yXg1gaD4SLd9TOhDPGuK9QiocSu13X62 UuDG4ZzEydie4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaIzcQAJKawiMEQWGjwCJID6K7Fd/5mAfRX7c/651vSwl73b2130niAhxfq0FcYR3aPDw8mqn HLpANWew8fS4SQbKQ1TgZ/Fcqs5ZHULtZvzGqTyvmE5055wqiglaeQO7quu7JDm7LmSMchtXxoL FEIil7j0vpLejYmFpzE1ogRYWngxTEcumHCGrOivo7BWbPqxo2JqDIo4aR6JcFIEm3mdYnVuu2k Y++DcC2TW56c2I65AUZ2E/msff/JeTaswEOJbR4Rd1TGjHhIO1VvguYBzIGaZyP3/v4RvgbN8yt 5b/H+u4Jy9hZ1hqsNPGJk6sF+ScK9kVA6lviohiMcCX40IglkgV42AZmsaX7pEBG7X2SkrkAIzT JDSgCloLVp5Dm60VCmxqsDUBLyzFe8NXorEU6tUOEiXYO1GVKgUUvBmDScPkmjO6CHt5zWNyo09 YGFGm3tI6F0Jbomcr9kYziAgSXttNMIXIh3usE20i0jkqVXKlI5lIIKKJe4Xi2xIP7luma90Azo 8xVg5Xer1UHB7CJvjnQPsku3oHk7hnf6QbpClHMAhIdm9S/wDH0uH/AsvHoDrbCy4NcxFndtT7r RoXV1WC7/mffcz9pYu+sKt8ZDQQhFYNsA5UfE34kFlEac08m7lTSChU5Yf/9Or9cG+zVv1xA9rW cUdtsrHDXVWWk3yYc+nQvAw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Frank Wang Move SSC modulation deviation into private config of clock - 24M: 0x00d4[5:0] =3D 0x30 - 26M: 0x00d4[5:0] =3D 0x33 Signed-off-by: Frank Wang [Taken over from rockchip's kernel tree; register 0x00d4 is not described in the TRM] Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 7fb7e4669f9d..2aa9ccabf80b 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -350,7 +350,8 @@ static const struct reg_sequence rk_udphy_24m_refclk_cf= g[] =3D { {0x0a64, 0xa8}, {0x1a3c, 0xd0}, {0x1a44, 0xd0}, {0x1a48, 0x01}, {0x1a4c, 0x0d}, {0x1a54, 0xe0}, - {0x1a5c, 0xe0}, {0x1a64, 0xa8} + {0x1a5c, 0xe0}, {0x1a64, 0xa8}, + {0x00d4, 0x30} }; =20 static const struct reg_sequence rk_udphy_26m_refclk_cfg[] =3D { @@ -377,7 +378,7 @@ static const struct reg_sequence rk_udphy_26m_refclk_cf= g[] =3D { {0x0c30, 0x0e}, {0x0c48, 0x06}, {0x1c30, 0x0e}, {0x1c48, 0x06}, {0x028c, 0x18}, {0x0af0, 0x00}, - {0x1af0, 0x00} + {0x1af0, 0x00}, {0x00d4, 0x33} }; =20 static const struct reg_sequence rk_udphy_init_sequence[] =3D { @@ -412,8 +413,7 @@ static const struct reg_sequence rk_udphy_init_sequence= [] =3D { {0x0070, 0x7d}, {0x0074, 0x68}, {0x0af4, 0x1a}, {0x1af4, 0x1a}, {0x0440, 0x3f}, {0x10d4, 0x08}, - {0x20d4, 0x08}, {0x00d4, 0x30}, - {0x0024, 0x6e}, + {0x20d4, 0x08}, {0x0024, 0x6e} }; =20 static inline int rk_udphy_grfreg_write(struct regmap *base, --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 6E16D3C0606; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=du+YAYSXCPVXkL9nJyZBFV6p6pNbquCsTDe2uEiZuGdHv/kiJs9PQ2Iok3cAaOR4cDnw//A49R5mQBIKQXmPLG6sY10TFZpu6ouxJr2LB/bnL5gU1RCAq9UZy9q/EPIgz+rS+k9r3Ji+KhhXiaw3skeyvNs0zEmKxldw+p0IiJ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=PuDdz6Q2vqXx7HrK4iuws0Pe9IlARbZd32hHkFqvSvg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mF+eIgSQAqDdrffPtt/bntd50nna/IwTM5vwiEkgPy7+qbWQSVFjplkHtdWxpwVy8E1ThOR7ZSC+OEr2v60T9m7pGOI2/rkPCa/+aVxnii6bxD0j7EzbzwK+YaEXEUsCAHSFzKNtrvC2hcJHnsIyhM4GnvdE09H+bVZx8HiRFiU= 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=Mb6uYsKq; 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="Mb6uYsKq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=PuDdz6Q2vqXx7HrK4iuws0Pe9IlARbZd32hHkFqvSvg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Mb6uYsKqb3boqMDe1XrkyKZKNX9pJR7l1WaRFC9DDtPxc4Ldynh+m+1ohTv4ECgip LHgktPnhmooUhvsD+TBF3N7/Ieb0gMaMepXDMEYcpZZELMO+ziKGo9w5JLQdsjNbiD HnBZdGDkW3f2UQec6N3WZkGPgvydYmyEpn8fFNqLXBpEv8CJDHXjJjIJR6z5TMTt+i sgAm3va4ikfT8FYybtOUd3A3A05KZn3/P+fm4/AYTbdEHyxqZuTD4WuSppbZ9KwzwR Q48z46Vc0E+Z11TOCfyCcoS92EehCXazAXhRTAa3+qv5aFXTkxEYn/EylkCZRkCW2Q MRxSUaVo/8njA== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id C9D5B17E1531; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 19F8848003D; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:03 +0200 Subject: [PATCH v8 10/29] phy: rockchip: usbdp: Fix LFPS detect threshold control 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: <20260626-rockchip-usbdp-cleanup-v8-10-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , William Wu X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1521; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=MNkOUSpH7Jeejx5O36YJerXIyJQjXxCBZW0DlK6lNlk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yV4yEH0LduE9rXrmtiKqVQdQ0Cvz8XWk 1FkpGU0OYL0PokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qawvcP/2u66/2Winc4HkaAKHlfyoQdnRirrF2NrRI77SAFVCX0A6A2cEsfSgV5Fvl5TkB2k/A 4Y7jYaOC8xOHg3EiXd8JSLALJ+6ihGJJcJLLrXqZCGREiWxmf9OXAOATXqB3G2FLCj3QkcE3Kro QVCs6PiI7/1sqDG17BqFyT7iu2x2njr0i7jkeWRbZgyBHBnuTzOhhxfWIIATMWNbeScZFy1YFvD o40B1M7SPqGz5Va1WLp495Ivm4+5+gBVgt0nKsDH5HE5g5axDCW98e5nQa80Wtpg21hgS3HgR9k Usb/T28g5W5YZTVOdhdeppQavWy9CjbQNV1Y3lt9g/wlqxJIrTbCTRJz2PswQEmYIUaxl0t6/XA KRpO0Djp3fDZ2625inzcnhyY7cdQGOUu768KAGbC0fxAW2YvypqB/1cXzEIHd7kYACNoxmatCta QFECdZGE0aUCvq6Pnt0MOOjzR0MYpjDbdUwLuoFnv4y4m/jvSGMne5PJoK4XUXhf8Sh31fp+f0Q K2+RShk4Cu0ORG70q1PkV1LZTUbkg7KcNJJ+c7v+m671VPSAIM5599W76fMw8pBKESGHnlfg/YW Y9IvErfdVCvtu+LG0lAHLwJ80xuLR3ENA1CpnQSF3N1L8O4crIDANyrCsWJz1siCXzxE74CxjB1 WLyUbr6wLlVK8dOM0VNAq0g== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: William Wu According to the LFPS Tx Low Power/LFPS Rx Detect Threshold [1], the device under test(DUT) must not respond if LFPS below the minimum LFPS Rx Detect Threshold 100mV. Test fail on Rockchip platforms, because the default LFPS detect threshold is set to 65mV. The USBDP PHY LFPS detect threshold voltage could be set to 30mV ~ 140mV, and since there could be 10-20% PVT variation, we set LFPS detect threshold voltage to 110mV. [1] https://compliance.usb.org/resources/LFPS_Rx_Tx_Low_Power_Compliance_Up= date_Rev5.pdf Signed-off-by: William Wu [Taken over from rockchip's kernel tree; the registers are not described in the TRM] Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 2aa9ccabf80b..c6d24dd3bdef 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -413,7 +413,8 @@ static const struct reg_sequence rk_udphy_init_sequence= [] =3D { {0x0070, 0x7d}, {0x0074, 0x68}, {0x0af4, 0x1a}, {0x1af4, 0x1a}, {0x0440, 0x3f}, {0x10d4, 0x08}, - {0x20d4, 0x08}, {0x0024, 0x6e} + {0x20d4, 0x08}, {0x0024, 0x6e}, + {0x09c0, 0x0a}, {0x19c0, 0x0a} }; =20 static inline int rk_udphy_grfreg_write(struct regmap *base, --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 BBC2F3C09E5; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=lDlC4ocr8SOzJWIYIEobxp3swON+iNWdVFppKAJk5PnDw6w4nbmL9pB+uMqJn0vHDRACJ9A0aO7y5G+hTAT/hsSElrusPCDggXpbytXKRrxGUX+k3+Xvwnu2Uzp3KNT134qRlIEqOcwsfGYI4lXAgWCTEqrsijMk4l8pRYDyqRQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=bEoQG/Yys4jT28HNaTVApBbEpqOJRZhkpwJKmtLe//I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gNTqyn9/Qs8dsPdWFkp5PuHTVW3FNVCg2hEiUHsHV25bmiOpfuGtqHV1RSOPAlkJ7gN1jBOXew+b/a5Et2HG1C8jGQXzBYdXgpJTNMhrG/RvDdKgLNwbpzur4AcUzHYEqQhJVZAc0JL5HlXId6MeX5upXKBtAuD4AyMXs90LrHY= 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=gMru2ayO; 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="gMru2ayO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=bEoQG/Yys4jT28HNaTVApBbEpqOJRZhkpwJKmtLe//I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gMru2ayOZH2mdWnJ2ghc67VKsl9W2zrYwCLFhh1hSRljKXw851dXK9XjITsWnFs8i 2xqb5FNWWnwMCHFJyoAJOjvZ6ldhSAzZAEc3N6z0OlrfK61mUQG5+STJLbRgOlsFKi bxYML/5j0u/tUXHrbHTXAGkuq8mczY3rqaJ0pz47wwSM3bX7DY1m1EayNkWf+0sXB7 25OcFciLCHGC0u0bgM5vltayAVf/A+pHNXWselqSswlsXRbtAoN1MnT2Foc5/7yoTt EeHc7HKi8fv+GOs8IfHPWIYM+xPbCO9aTbwmWPPq+AhY6Z8WOlKKMlFjknUEC92qy6 IuFBa6cIxVTGg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id D29EB17E1539; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 1B6E3480047; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:04 +0200 Subject: [PATCH v8 11/29] phy: rockchip: usbdp: Add missing mode_change update 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: <20260626-rockchip-usbdp-cleanup-v8-11-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2006; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=bEoQG/Yys4jT28HNaTVApBbEpqOJRZhkpwJKmtLe//I=; b=kA0DAAoB2O7X88g7+poByyZiAGo+5yWjFn5qkTHA+NKIgxeN6GJwNmyjcB+CweDJD6nD6OksH 4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PIO/qaHDwP/A5U umpT1iVFyw3BPM8vth5wSsv+IboQaeZ/G5TS16slev7KLMToIrNrsaaC40r16Qd6gZg52hxOGOx pi86Op3NDB2rdRb+FxY4c1YrXDi+09GjBxAA7PF28AnZm68t6X6IXcuiC9TqAc9ARpvaZpjk81n PEN8hB3+1+Nj5tbcrhPK2w99I+i0t/KBmxw6wdxWl0+PyuZweajrPG2HhEdVn8G3hRFuYxVbD0n yr8Oy2DjYVJgQjWuHWUG5pxFEXpPMQRuq18XZj4zTwC6ZDLGvRXCH8qa26R+kXV1UtEMkB8RhIj ceS8KF4a/LXRq05Q4rRRS45BpMSdwS8W3mbyhuxJc9sBXjlaZ3Eo3vKoX0Cdt0sFOcbLylBBIkN 2CELtwiaQVg0wGeiyBwivN8yucFUPLUcn6f23yGaimzyCZzkLi4kAghDVQINB+qs/y70JgpYEpE uss1NvEZeemjiAITWDOStQsocyHut4I9bYgFhj+DgW2/vYG8/dmnjsOG8gc0v0gKwGgtRlDTYN8 pw+I843s6HuqnyDHgQbb6lQh9cIS6IhFfFp5yN/FHUL+uuwBwneFSJp74exNachATRni1uunZ0D cKjf+T+bFm7W0zpTD6kBWaD/Nr4uFn1cBFvlqgFNJmDBG9rQsV2eiAcpDvvUogUAcSw6+0Iu9ue usuj/ X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A rk_udphy_set_typec_default_mapping() updates the available modes, but does not set the mode_change as required. This results in missing re-initialization and thus non-working DisplayPort. Fix this issue by introducing a new helper to update the available modes. Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index c6d24dd3bdef..d091f8007acd 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -622,6 +622,15 @@ static void rk_udphy_dp_hpd_event_trigger(struct rk_ud= phy *udphy, bool hpd) rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger= , hpd); } =20 +static void rk_udphy_mode_set(struct rk_udphy *udphy, u8 mode) +{ + if (udphy->mode =3D=3D mode) + return; + + udphy->mode_change =3D true; + udphy->mode =3D mode; +} + static void rk_udphy_set_typec_default_mapping(struct rk_udphy *udphy) { if (udphy->flip) { @@ -652,7 +661,7 @@ static void rk_udphy_set_typec_default_mapping(struct r= k_udphy *udphy) gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 1); } =20 - udphy->mode =3D UDPHY_MODE_DP_USB; + rk_udphy_mode_set(udphy, UDPHY_MODE_DP_USB); } =20 static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw, @@ -1394,10 +1403,7 @@ static int rk_udphy_typec_mux_set(struct typec_mux_d= ev *mux, usleep_range(750, 800); rk_udphy_dp_hpd_event_trigger(udphy, true); } else if (data->status & DP_STATUS_HPD_STATE) { - if (udphy->mode !=3D mode) { - udphy->mode =3D mode; - udphy->mode_change =3D true; - } + rk_udphy_mode_set(udphy, mode); rk_udphy_dp_hpd_event_trigger(udphy, true); } else { rk_udphy_dp_hpd_event_trigger(udphy, false); --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 B0DF03C063A; Fri, 26 Jun 2026 20:55:07 +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=1782507309; cv=none; b=SFIsZ4gUDWNf9a8XOtviMZlh+aq0FZaJxH9V43Qv2yMR3qtE99FOPmsOHhjkdsC1nE9IYiU8XKnReEg7vmuAcl5MZAEAry5bW6x8QH4QVdOf5UquzZFHPkpux6mpxDeM8xkjDYW2uQPoDmyQ3C9FjwSJPJSbm5GauqTUXWsz4yY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507309; c=relaxed/simple; bh=tW2nhIsGfK39LVXcbKZxygwO9562mpzQzF/mKDk/Na4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S+/7kFsHc/H7gUNuXmb+qa3A28OYkkz8fdmrJa8mt/bcse1bDHbw6VjB+Y1SkXs0kdWjTibj5DMP7zIHh0Z1gGr01mrCVgZeGEaiN5uaC4rjCuIt6qjCBG5+31TVQ8oNN25O1yqcqPxpHgoGVwjfVA3150tnuxgegz/FwBj5hpc= 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=SNkRcJ9k; 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="SNkRcJ9k" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=tW2nhIsGfK39LVXcbKZxygwO9562mpzQzF/mKDk/Na4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SNkRcJ9kNfrLBme+djjjV/zPiFFSRQGWfZIMS3w+6whkYTvpvqGNG3MsEBBYak9Z1 GzxlSZg15uootaZodeYQiHK0beTE3C2p30cckXH3pFe+R2Q5tz8W/Lx6++1JxCIDei dSURfwbUby3Fyvktlsy5e/9/TDzb3iapHx9neLH/CIF5xzO6aqxelcyMdQZmPPBLd5 yZjtr2f2vnkKz2+cr+ILTTJXbdJzJEoaAr2ard9sCFw4eVjoWBcTeiIovUtj+KZIFL Kg7ZnBYQJYwo92MdEYHD/3KRnzcCc9RjtnZShEqkuI5gyMpF6nBdpZId9pFbuzjXmK Iu58yqb5FCMKA== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id D708C17E1553; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 1CE14480048; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:05 +0200 Subject: [PATCH v8 12/29] phy: rockchip: usbdp: Support single-lane DP 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: <20260626-rockchip-usbdp-cleanup-v8-12-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5347; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=5IrkUvPuVnT58ZWiIlDfoggMHrwwVcgLubV0TOvdugA=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yW2w87BhFh5yC7lKhWjmP6yssi/oQMV6 EEoQMviTIcErYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qax+UQAJ+hiHFoVF3J920D/G+zmydS0nnxH+2D926aTQ1UuALeOBg1UYdONzTaiSLNlHHbPhU q8dx+6JKH7mqkG65q7ezoplzD3lUx8D6h5yyKRdkDfJ+mNs9dOE4j8TDQU4gyigLKwrHU5nDywG 4rYq3yIFJ7GDUmbrvWY3p8scQmAPh0WXFIJrIsFHNd2okBmHJiboGJ9vmwXP6sn7scyuQ1LhtmY bTV+e3l3hFmCy/Ngm7oDhpg/+w2sn0we0Tsk/9aFX4amcu6k3i0806XekaE1k/JXxq3OhUmAcso W0F9enguPOLGyp0aCzknLnCNucRlRB5mW1ZC5WIL5sBhc4bKrrNTvbjykSDOKyB2+NIq6nDPs4C zrujBJBJ4TFO+h2ZAnqX5KWwMzKjPxxaDi/avM9OtqhGHMczAK2EErif9Rfwc7xere1SOIWODYP gWG844kkTwAjH1akjR9x8bdgA9X04MoAUSOHbk3nTWVqut1ll26arwcPCNSZF5G+urBu+6nmD/i h4voUyUROT7iwlQQhPxPYUzbWF7ITbSwGu2sMpYWEp6MGblwjS+BTUhJV0Wfi8+IVIHsipfPb8e 4fgKj1KQ5w3gE6ATqBDBCwsMeaCcw32QUOZsW0X4YnGp8sBjfLuAob0bhvUjlIunDE69lRYfkOE t8RkNXTiL9GfM6a6rRDkq/Q== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A From: Zhang Yubing Implement support for using just a single DisplayPort line. Signed-off-by: Zhang Yubing Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 64 +++++++++++++--------------= ---- 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index d091f8007acd..5c38da0dadd2 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -193,6 +193,7 @@ struct rk_udphy { int id; =20 bool dp_in_use; + int dp_lanes; =20 /* PHY const config */ const struct rk_udphy_cfg *cfgs; @@ -540,6 +541,13 @@ static void rk_udphy_usb_bvalid_enable(struct rk_udphy= *udphy, u8 enable) * <0 1> dpln0 dpln1 usbrx usbtx * <2 3> usbrx usbtx dpln0 dpln1 * -----------------------------------------------------------------------= ---- + * if 1 lane for dp function, 2 lane for usb function, define rockchip,dp-= lane-mux =3D ; + * sample as follow: + * -----------------------------------------------------------------------= ---- + * B11-B10 A2-A3 A11-A10 B2-B3 + * rockchip,dp-lane-mux ln0(tx/rx) ln1(tx) ln2(tx/rx) ln3(tx) + * <0> dpln0 \ usbrx usbtx + * -----------------------------------------------------------------------= ---- */ =20 static void rk_udphy_dplane_select(struct rk_udphy *udphy) @@ -547,18 +555,18 @@ static void rk_udphy_dplane_select(struct rk_udphy *u= dphy) const struct rk_udphy_cfg *cfg =3D udphy->cfgs; u32 value =3D 0; =20 - switch (udphy->mode) { - case UDPHY_MODE_DP: - value |=3D 2 << udphy->dp_lane_sel[2] * 2; + switch (udphy->dp_lanes) { + case 4: value |=3D 3 << udphy->dp_lane_sel[3] * 2; + value |=3D 2 << udphy->dp_lane_sel[2] * 2; fallthrough; =20 - case UDPHY_MODE_DP_USB: - value |=3D 0 << udphy->dp_lane_sel[0] * 2; + case 2: value |=3D 1 << udphy->dp_lane_sel[1] * 2; - break; + fallthrough; =20 - case UDPHY_MODE_USB: + case 1: + value |=3D 0 << udphy->dp_lane_sel[0] * 2; break; =20 default: @@ -571,28 +579,6 @@ static void rk_udphy_dplane_select(struct rk_udphy *ud= phy) FIELD_PREP(DP_AUX_DOUT_SEL, udphy->dp_aux_dout_sel) | value); } =20 -static int rk_udphy_dplane_get(struct rk_udphy *udphy) -{ - int dp_lanes; - - switch (udphy->mode) { - case UDPHY_MODE_DP: - dp_lanes =3D 4; - break; - - case UDPHY_MODE_DP_USB: - dp_lanes =3D 2; - break; - - case UDPHY_MODE_USB: - default: - dp_lanes =3D 0; - break; - } - - return dp_lanes; -} - static void rk_udphy_dplane_enable(struct rk_udphy *udphy, int dp_lanes) { u32 val =3D 0; @@ -662,6 +648,7 @@ static void rk_udphy_set_typec_default_mapping(struct r= k_udphy *udphy) } =20 rk_udphy_mode_set(udphy, UDPHY_MODE_DP_USB); + udphy->dp_lanes =3D 2; } =20 static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw, @@ -900,7 +887,7 @@ static int rk_udphy_parse_lane_mux_data(struct rk_udphy= *udphy) return 0; } =20 - if (num_lanes !=3D 2 && num_lanes !=3D 4) + if (num_lanes !=3D 1 && num_lanes !=3D 2 && num_lanes !=3D 4) return dev_err_probe(udphy->dev, -EINVAL, "invalid number of lane mux\n"); =20 @@ -926,9 +913,11 @@ static int rk_udphy_parse_lane_mux_data(struct rk_udph= y *udphy) } =20 udphy->mode =3D UDPHY_MODE_DP; - if (num_lanes =3D=3D 2) { + udphy->dp_lanes =3D num_lanes; + if (num_lanes =3D=3D 1 || num_lanes =3D=3D 2) { udphy->mode |=3D UDPHY_MODE_USB; - udphy->flip =3D (udphy->lane_mux_sel[0] =3D=3D PHY_LANE_MUX_DP); + udphy->flip =3D (udphy->lane_mux_sel[0] =3D=3D PHY_LANE_MUX_DP) || + (udphy->lane_mux_sel[1] =3D=3D PHY_LANE_MUX_DP); } =20 return 0; @@ -1083,18 +1072,17 @@ static int rk_udphy_dp_phy_exit(struct phy *phy) static int rk_udphy_dp_phy_power_on(struct phy *phy) { struct rk_udphy *udphy =3D phy_get_drvdata(phy); - int ret, dp_lanes; + int ret; =20 mutex_lock(&udphy->mutex); =20 - dp_lanes =3D rk_udphy_dplane_get(udphy); - phy_set_bus_width(phy, dp_lanes); + phy_set_bus_width(phy, udphy->dp_lanes); =20 ret =3D rk_udphy_power_on(udphy, UDPHY_MODE_DP); if (ret) goto unlock; =20 - rk_udphy_dplane_enable(udphy, dp_lanes); + rk_udphy_dplane_enable(udphy, udphy->dp_lanes); =20 rk_udphy_dplane_select(udphy); =20 @@ -1374,6 +1362,7 @@ static int rk_udphy_typec_mux_set(struct typec_mux_de= v *mux, 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; =20 case TYPEC_DP_STATE_D: @@ -1390,6 +1379,7 @@ static int rk_udphy_typec_mux_set(struct typec_mux_de= v *mux, udphy->lane_mux_sel[3] =3D PHY_LANE_MUX_DP; } mode =3D UDPHY_MODE_DP_USB; + udphy->dp_lanes =3D 2; break; } =20 @@ -1538,7 +1528,7 @@ static int rk_udphy_probe(struct platform_device *pde= v) ret =3D PTR_ERR(udphy->phy_dp); return dev_err_probe(dev, ret, "failed to create DP phy\n"); } - phy_set_bus_width(udphy->phy_dp, rk_udphy_dplane_get(udphy)); + phy_set_bus_width(udphy->phy_dp, udphy->dp_lanes); udphy->phy_dp->attrs.max_link_rate =3D 8100; phy_set_drvdata(udphy->phy_dp, udphy); =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 6F76D3BED61; Fri, 26 Jun 2026 20:55:08 +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=1782507310; cv=none; b=PiHmBGWFe6lXbnis1FgQByCxPSq6zA8sQJGh7qMoTKs4HQoouIwc9lQeWPTtJBlani3DnXEJJpu9DfmPnk8ytZaKUoTbMd69WnowUwMpG6By7ivzqACQ/h7i5Amio+EUoadVTH3E+8V9BZsivrRG+6Xq+wUMHseducQM5YWGQPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507310; c=relaxed/simple; bh=lzF/7VzLP8C3rgYOuAm8DgQ1R0OKHKM5g5aD363rFzo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TuO8Hv0yMZJ45rA0Fhx94PDEDkxrnwjxAnZLSEGpTXCzjOXk2yU2au0pZB8CEBtpFNLSlGb3NmZjnZnCM0yw0ah8w6e1xIwKa0hi+4nt5eiJFPu3p63xm2Q6dXbg33XbeVt6vxEnp4IRpTbAKMVoFEuv3s9X/X14Ja9yUD7P960= 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=mdczpxWl; 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="mdczpxWl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=lzF/7VzLP8C3rgYOuAm8DgQ1R0OKHKM5g5aD363rFzo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mdczpxWlwepiw3IP4TTnQ6guJJrMUBdi5cX2LJhVRIJGkql/5IVmy5fF/pExNC620 jkX2mfBd+xzovk9s/wfFnpxlPMbCax3KDSRBNN46IidS+9hqg1s19xUUpgScfjnY0r lejAt8KHcZvSfHCwywuFHIJOb5DW5PkPfdy9i+D4sIiAoHhKcygpzj7WB2UcQ4N854 j4CSq1SlazH+uFgfAEWEXZUdMwVfA9Jidt6H2Kh8DqOUlvidkMnk8l1ylyMUPVMmYc Mp8v2zGfIxOeyXHL5elnPTlx4DbJuVh3a9YMhRl2iksHcLjN+3jGcZEcZmdePAnc7P 4x+QSAqc+qW/Q== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id DF4E617E155B; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 1E48648004C; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:06 +0200 Subject: [PATCH v8 13/29] phy: rockchip: usbdp: Limit DP lane count to muxed lanes 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: <20260626-rockchip-usbdp-cleanup-v8-13-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1284; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=lzF/7VzLP8C3rgYOuAm8DgQ1R0OKHKM5g5aD363rFzo=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVPZESpCGzgGWdbnGsT4RWtCQ11Kgdgn rfQJnj4uaMLzYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaYpYP/jNq3WN/nA6qP4nCl852d9v//Aer9D0MOndV0rI1PNXeEp16WEGdORdb1Aa7slLtlG5 B/yUl6AGGVsbk7n28F8PKChDrJ4PVLDbl+IG5XLTQxzS7KN9AjE9uh68a9mrArMXK7/MqkH3Kkl 3CY2iENGwRPiNrD65bZSIiRP2+sg7fqriszYD5pyvQfqOFhRggTShHARkLWvtaLGCYC4zDTw078 zUavnxVQTLkak18GAtlLUS2BdyjgWhdBxC4IdvUoTgxQ4pTAQWT5GbcWcsmuFiEcL8HLRpoiI5p +exHXqPgwNugZ5qYnIXDpfo7xGOHRBdSv2hPjAAFSyBpQqlEgSdyQFWWILb0+O2liE2gtLEAIEV FNoxyJK6BrtDuzOA72qoDw/Jtyn3rDszw81uNcLtou6IbzWc3uyaZxchSqxoi3UL3FnvjSl8Q+J uZciUEYWkAjzprnmgf1vmCf/uT9seIeg/KzSx3191Z09JUU699TPcZAdXkTfupJj68GHi0NBUON bnSKGzXvVuJsur0AXOJQiUNhvApYIGFdzu1I7iMK7h0PMzCTBpdbH4KuK4YNfqAM+1woNMyPyHY aLcRp5wnVqF5q7eteFwgQxl3jefc8gZQHx0T4O6NHQY/uERvyOnp8H6lLPMBC33yx8mtZ9lZprt 5/fPVv93fyEwRPHTBdDYpYw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A In theory the DP controller could request 4 lanes when the PHY is restricted to 2 lanes as the other half is used by USB3. With the current user (DW-DP) this cannot happen, but as the check is cheap and users might change in the future protect things accordingly. Not doing so would corrupt USB3 usage by the following code configuring the voltages. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://lore.kernel.org/linux-phy/20260612165546.98E1F1F000E9@smtp.= kernel.org/ Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 5c38da0dadd2..6de8ac3f9144 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1132,6 +1132,9 @@ static int rk_udphy_dp_phy_verify_link_rate(struct rk= _udphy *udphy, static int rk_udphy_dp_phy_verify_lanes(struct rk_udphy *udphy, struct phy_configure_opts_dp *dp) { + if (dp->lanes > udphy->dp_lanes) + return -EINVAL; + switch (dp->lanes) { case 1: case 2: --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 8F0683C0A0D; Fri, 26 Jun 2026 20:55:08 +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=1782507310; cv=none; b=LjFCwoeZgmC2x9B/Y0LYqa4Y1+HdNZJxSUghXEqlu4azrrL8VCiHppqCG6AfTP8wmbTyyf49IHiQpeOWu9xqkFFNBZQflWng/ZSveyKWcWCnx90nQgdGoqTEzdxN61WEIGgB4Ez77s0a4Mtk9alNC2P2fJPu1q1AQPyy4sJNt3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507310; c=relaxed/simple; bh=B1hFP7GBgjpJwgyiWYAhEXHS75Uh6G1z6FfSU+iGafs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GAlssoaH1S2hAfYMPOhf+YufWBkVeFKKLZ/8N1H0VNbnaZRw2yqQqhEQKlSUAiNAp67KEoHAKoUjD+ycPQpgHYF6DFOiN3Kvbxtmdt8CU7byKViQQed0ZNG3OpvKQM2XzxWD90S9273bZ9CdL31Qk+oI9mOqVaOO0pz87xwUxrM= 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=knVVh50V; 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="knVVh50V" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=B1hFP7GBgjpJwgyiWYAhEXHS75Uh6G1z6FfSU+iGafs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=knVVh50VwsLWBd3KmIY6qlXZ2RKNkgsLJvenbrSi43HLpf8+Lr8RqdwSNBphGjdyW hidvPbGG5jVg9ItVHzi+go9c1UFYfO4YJyPaljuKrQP90xSWu82upoW0m3rzgYQ6DU ku+bCmLDE5sR2HKhKzwwKrAjgYCPBA+vIlay5Et52VVI0IBLXMu6bxOM9y2TrD0+R3 +aKQuUkbQ0T2gGQ5mYcr03jXDANGrj8Z9aNt83TWF2/Vfh9sLV3yjvZOisMFbhj+an FfpKYJlre3D8w1OUw57aoUIjT3DyCg46o4vHXbAvhsBmdlnNlaH7zaHnf13hcMNbES B56L8TneN8Q8w== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id E4B3117E1562; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 1FC8048004E; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:07 +0200 Subject: [PATCH v8 14/29] phy: rockchip: usbdp: Rename DP lane functions 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: <20260626-rockchip-usbdp-cleanup-v8-14-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2007; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=B1hFP7GBgjpJwgyiWYAhEXHS75Uh6G1z6FfSU+iGafs=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVvFMZUvwP9JJZT9HW0X7ypcrsANPUvG HWkf89JIpkaR4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qais4P/1Z05N3q8Wy/MvxN6cxl33Az2WGK46F+hKVJyTkr60nPFLSFY8ieGZOSjX6kpNv12OW 7hRVRybTo1h7xtQaCbVp1xOTKAWxhF/u7yPb6SbDGKgDCebJVdXcWrydpOQ2FuuIquCZEj26QKd bN472U2vknW0MWcuEX8MTvaK87wkMoR7HujD/uQonDBkdfG7nM6UWC2L0ifsd6mo4Nixl+vsq0s 5+DWyoSl+ObaYgtXCQMzky2FSuX6rLWxa3cid/tgejGRcVQwExYqJTMk7f14YKPb+GiTtvEb+yF n6InaUXAHS8SXONeRMrzecYFrZIuqNRfWZg4lUzkep8lkvTt+PElN9eXWs4DOLkn3qY+K2cKEkC 087wWpcogksDFgbXyz+qGEwr9dbfhLtSFWz1AZ5BDa3ZDI2Ruimss8usM3LpqER7R8Jg4NV4all X8W4Af6g0aMHyCvis0X8NR2cXJbdfBB3FmeUDlBngspvu3SIj9AelypGWjWNRWZuL+qPQNQJ/ph 18pJJ26ht0el1dRb5XeSwft8E4xpPXW1EpMWF8KBbgkMiLAeNZzpBXIF9KNhUg0V8mIS93UfFX7 tjMfpinsbGyFfxvaY3aiWiifuaowDNkVJC45dMDUlyGDRdTqFKuIYvpXykW97+6Z8MGQJHgCXfx sSNb0QLCR1qMsDCe2Oxw5IQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A The common prefix for DisplayPort related functions is rk_udphy_dp_ (with a final _), so update the two DP lane functions to follow that scheme. Reviewed-by: Neil Armstrong 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 6de8ac3f9144..db1ad3c2a953 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -550,7 +550,7 @@ static void rk_udphy_usb_bvalid_enable(struct rk_udphy = *udphy, u8 enable) * -----------------------------------------------------------------------= ---- */ =20 -static void rk_udphy_dplane_select(struct rk_udphy *udphy) +static void rk_udphy_dp_lane_select(struct rk_udphy *udphy) { const struct rk_udphy_cfg *cfg =3D udphy->cfgs; u32 value =3D 0; @@ -579,7 +579,7 @@ static void rk_udphy_dplane_select(struct rk_udphy *udp= hy) FIELD_PREP(DP_AUX_DOUT_SEL, udphy->dp_aux_dout_sel) | value); } =20 -static void rk_udphy_dplane_enable(struct rk_udphy *udphy, int dp_lanes) +static void rk_udphy_dp_lane_enable(struct rk_udphy *udphy, int dp_lanes) { u32 val =3D 0; int i; @@ -1082,9 +1082,9 @@ static int rk_udphy_dp_phy_power_on(struct phy *phy) if (ret) goto unlock; =20 - rk_udphy_dplane_enable(udphy, udphy->dp_lanes); + rk_udphy_dp_lane_enable(udphy, udphy->dp_lanes); =20 - rk_udphy_dplane_select(udphy); + rk_udphy_dp_lane_select(udphy); =20 unlock: mutex_unlock(&udphy->mutex); @@ -1102,7 +1102,7 @@ static int rk_udphy_dp_phy_power_off(struct phy *phy) struct rk_udphy *udphy =3D phy_get_drvdata(phy); =20 mutex_lock(&udphy->mutex); - rk_udphy_dplane_enable(udphy, 0); + rk_udphy_dp_lane_enable(udphy, 0); rk_udphy_power_off(udphy, UDPHY_MODE_DP); mutex_unlock(&udphy->mutex); =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 4A2573C343E; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=jbLAH9GDIxVwegdVQyq6uv1grlyroDgEaEiK/yrlAh6VNpYTqixIs8hap1RwZF/mLZaS8VT7NDyeDsio1XUS9oodWWMkpK8Uy/Hc/EvsvQ4K9APoyBOI3K88EtKfo2qxYIxjdyMgKgnoIKV/VOnEOKqnsDqY5Cl2xDjpfoWuNiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=zUXIVNlYFpb7JLPZE2WGx1V+P1LbLJfUycXU2leOX4I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V/YKyq5bvowZa/5kxz90YKlSQ6Lg6D6QekZbqD18bZ/vjWsYIMaLXGAfsDDmBJord+C1L4QCzXKJLuVryqe3BIYJln2MC5RePVyvsx2tQQ2RHxJRyKItHeBTvbMyCsxd/QzNxFlSGv2ltyiNf3bfxdeJYTlgWbGiCk/AYX6pJKc= 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=O76cntWN; 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="O76cntWN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=zUXIVNlYFpb7JLPZE2WGx1V+P1LbLJfUycXU2leOX4I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=O76cntWNZNpRD+3HpQTIcWm+vnjpOiUnteGTXo2juM6HR/w00Tvht7LSNhnDrA+Ht /Aewy6tXEgigOKKOJEpF+qrnQ0UmBmB/XeYi77jo5xzTHhD7O07/++7du9feTvNYjV 0Exqolz8jemtx9dnQjUNLz37ywiLhKIxSm9PbHnQo12txRUG1VivdyT1D1Dw+yCiy1 ElcfNqcmboMEyZT54HtjmV2CKaAGoEf26IcmkvtLlnqtJqc3RiIX33GNdStq66GznG Gsm9S8u+GjI02neOWcmlIyB1eannGyyuh39KT6psj9cPuAbx2J88ykZt0y5NBEz65A M8mRiSn6X3ksQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 08D8D17E1576; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 214EC480052; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:08 +0200 Subject: [PATCH v8 15/29] phy: rockchip: usbdp: Use FIELD_PREP_WM16_CONST 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: <20260626-rockchip-usbdp-cleanup-v8-15-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1546; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=zUXIVNlYFpb7JLPZE2WGx1V+P1LbLJfUycXU2leOX4I=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yUWotN674cF4uiIMplDCYnxjyc8HYtIE F4Y2LQ1qYWazIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaw5cP/jiw83L7uKUSYt07hAhQmXqsBYt2mV5tzQATxag1uH30PYUKH/zGq7qnv8cvzakv0Yb /vXtXRWJwP7ey/2ZYMT1Ut/G3c9qNxwTAlPe49qTMFV92RcKsdnq4A7kzXvrw5lybSufNzUgpN+ KZkbOGqvFcGOhbcZqe+n3obN/gqgQxGGXjv6dnj3IhlwY4FiF/TNJDsycsaxl5bpl5CFBUsKRGo KbRW3+gknmb9QAz8OPRE3CMdOiMhb5q32yeksBLvr5cezbbjdtUYWeYj0xDJWdojXf9pl1otQkI LXUsTI1uFIUjMIz1CQUxqDFZiAJjyLzyrRgrQPw6G9wcjYb6nqs9dKaDur2F/sXboG7SlCJJhb+ lemZVP+XUM3UdEJXzsljPwFiefYMe2K4KYcCqq5lItOgC0Gg440GKxCYCz9HlhAIoKl3XhenFzW FDMvbDRrsCl6IQU7ijwJ9VOxMQhGV2FjZC8Dp5yntz/EhaUm1nMvi+UT0/HdEEDhmrolVmdxtv5 j8k70E60aqTcvPlA5lovq6I7cjGN+xQmzLYdK7ah25zlxyaSck0ES3OEwmAbntEIYKKpDRIw5pK pyjpcwol8BqoJm3Gp+oqipM7NGJI2j/jyqI//6UmxsklEnJaTthH56MWUiR0m888a5+hzV+KmDr tnwasStjf5UwQcrbbsTkuHQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Cleanup code by replacing open-coded version of FIELD_PREP_WM16_CONST with the existing helper macro. Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index db1ad3c2a953..d8978cd22707 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -75,7 +76,6 @@ #define TRSV_LN2_MON_RX_CDR_DONE_OFFSET 0x1b84 /* trsv_reg06E1 */ #define TRSV_LN2_MON_RX_CDR_LOCK_DONE BIT(0) =20 -#define BIT_WRITEABLE_SHIFT 16 #define PHY_AUX_DP_DATA_POL_NORMAL 0 #define PHY_AUX_DP_DATA_POL_INVERT 1 #define PHY_LANE_MUX_USB 0 @@ -104,8 +104,8 @@ struct rk_udphy_grf_reg { #define _RK_UDPHY_GEN_GRF_REG(offset, mask, disable, enable) \ {\ offset, \ - FIELD_PREP_CONST(mask, disable) | (mask << BIT_WRITEABLE_SHIFT), \ - FIELD_PREP_CONST(mask, enable) | (mask << BIT_WRITEABLE_SHIFT), \ + FIELD_PREP_WM16_CONST(mask, disable), \ + FIELD_PREP_WM16_CONST(mask, enable), \ } =20 #define RK_UDPHY_GEN_GRF_REG(offset, bitend, bitstart, disable, enable) \ --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 8EBB2241686; Fri, 26 Jun 2026 21:02:21 +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=1782507742; cv=none; b=lrjE/BhoUHKYpKGF9c1igz9nD7i0w4aVI+aARKyofp1X7Y3suRybSpB5W2wVORWoa12zz/VNCbhnAF96tpyicvp5l5S7nGjlmz4kOayse5aUJdr1cHF3T+VD7I+LMJceH6iuPZytIDP1FueEu0zQued4Y1aedV1BqhWlN6K8jRo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507742; c=relaxed/simple; bh=++YjUzkdwaT01C2PgsJ3TRzb6swcGz3u8MaqmDZgujk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Wn/xetazhyl9V3PPZvoQhqPWj6wAmVjc3OG+yXq9YXsh3S30nhDI3lUVqJi5AYZ2VkAGYe3COKWBYAlP0g2XLVh1Q3AQbYQx+0RKHHD9nfb7/cI8em8I3b+RQWviQVu04NXlmQ8IEbgHpPr2+mTl9EgUOOOB0YyJri/PdT8Mt0o= 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=CBdIncpM; 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="CBdIncpM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507740; bh=++YjUzkdwaT01C2PgsJ3TRzb6swcGz3u8MaqmDZgujk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CBdIncpMFFSyzsTQrCNLO6j83bvuJWIp6BAdq5u181oMcLlkc8VfKlZmVfDi08G7y 5GNoXUg1JgjRSoa70l5RL+4dttFFtbvpkFbz/xiY2H5+1jncBiFO7bkQ1MAY0TJCra DGwcyPKZZFxbogEvh7MHlEHLni2ygAx/QHMz+jIXaD6p29cJ7lHiJBrOmCR5lG4beu eT3WA28rFwagD7P1pHOP1bCLpBhYtpi4MJ4C1MfKiKSrAq4FI7xijYepsbwTjdyGsT jC4PLK5jzf3Yjn/EmPbuORZuxT+vYxOgHjqoQqK1fBoiyrQ7vSJ26OL+h4XUdYgU8c TwU5f0JdytqSA== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id F31A017E02CB; Fri, 26 Jun 2026 23:02:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 22B9D480055; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:09 +0200 Subject: [PATCH v8 16/29] phy: rockchip: usbdp: Cleanup DP lane selection function 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: <20260626-rockchip-usbdp-cleanup-v8-16-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1889; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=++YjUzkdwaT01C2PgsJ3TRzb6swcGz3u8MaqmDZgujk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVmXZA5phEsEQ9/RHA/jIOXk1IVpXhZu kwcYTsHEx1ieYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaFi0P/2VM8Dj3PQSNBPo8qHNP1SwYzkMiBCkci6g4uWyMQoV7Tjgbk/qF991JZtIrrzFYmBe K/a0HYhjHMwRJ/WzoBhrsa/MUiKif/7wO7NwWnzhI4UVjSdeuQO9/sKeumnrKU1Sf0CW2Cfo79m jP8/XwhXjTtv29CudeQPEaUYyZkiZcMs26BnxIPI/2Zhb9NctXy2rnFAYk4sM70/Jbg8K14Rwo/ XL+eKsccPUIgqdOpDqS7UOSM+ZCxiswzwtjVuhLa4N7H+bTFdNz3gyN1FW2z9q4+jGDTLAiZznL Q28gJXwiWyylAUlmkkgf9ZYYh35uLQADvD9gBi13lUZFtMHXj+XVBZgSwiEiR3Tp7P1PV3zpe5L DCHfw8MaOPG7ackbRC/+sfXSkCLXmftTneqMGoVGMq3FjDsATBJfWUzofJaRab/YRdEDUQ//an1 cObO2GcyVYgoaH46MHMt7umQ2ZrtbCSI99rEMF1na8DZzMFXpax2CIZYTOBIGIlnr+WvOIcoLPc OMd5s0ayjqdhKMYb677THDM1ei0BYF/CfKqs1/O6YPHzntBkglNF6vcbYrWbBQZEWHmu6k76Qk7 yR9WE42IzkA2rkEaOF8gH5cfUYqsbYf0TiT2F53zdUHA5hFCzYbHyzeAW492OGEioKSVj9KAFH1 1e+toUKdlcyWcz/vpLncnbA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Use FIELD_PREP_WM16() helpers to simplify the DP lane selection logic. Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index d8978cd22707..e243d92483e0 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -553,30 +553,16 @@ static void rk_udphy_usb_bvalid_enable(struct rk_udph= y *udphy, u8 enable) static void rk_udphy_dp_lane_select(struct rk_udphy *udphy) { const struct rk_udphy_cfg *cfg =3D udphy->cfgs; - u32 value =3D 0; - - switch (udphy->dp_lanes) { - case 4: - value |=3D 3 << udphy->dp_lane_sel[3] * 2; - value |=3D 2 << udphy->dp_lane_sel[2] * 2; - fallthrough; - - case 2: - value |=3D 1 << udphy->dp_lane_sel[1] * 2; - fallthrough; + u32 value =3D FIELD_PREP_WM16(DP_LANE_SEL_ALL, 0); + int i; =20 - case 1: - value |=3D 0 << udphy->dp_lane_sel[0] * 2; - break; + for (i =3D 0; i < udphy->dp_lanes; i++) + value |=3D field_prep(DP_LANE_SEL_N(udphy->dp_lane_sel[i]), i); =20 - default: - break; - } + value |=3D FIELD_PREP_WM16(DP_AUX_DIN_SEL, udphy->dp_aux_din_sel); + value |=3D FIELD_PREP_WM16(DP_AUX_DOUT_SEL, udphy->dp_aux_dout_sel); =20 - regmap_write(udphy->vogrf, cfg->vogrfcfg[udphy->id].dp_lane_reg, - ((DP_AUX_DIN_SEL | DP_AUX_DOUT_SEL | DP_LANE_SEL_ALL) << 16) | - FIELD_PREP(DP_AUX_DIN_SEL, udphy->dp_aux_din_sel) | - FIELD_PREP(DP_AUX_DOUT_SEL, udphy->dp_aux_dout_sel) | value); + regmap_write(udphy->vogrf, cfg->vogrfcfg[udphy->id].dp_lane_reg, value); } =20 static void rk_udphy_dp_lane_enable(struct rk_udphy *udphy, int dp_lanes) --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 7FAB63C37A6; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=MwXdK5BdfsywaSSf/56wol3EtJux20bLFY9VKIK/1k7iGfvmS/oTCEY8l8SiPZmq3ejK2fH89I5/yZ/2wej9v5pB2haTTI5pXrFguOmtOzNxUv5gyDBW/yEkafMqAK3yII2xDRY6BXD72ZSXDpbquDPZpErU+2pflIeLj3mjSWk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=jzKAce1AMYjxYAxwI1ZD1/YYt1G2BSK4c3WM9C2tTHo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ufLVdPcGt8UWztzE6eAxXOfhC9FLciK10/h5qA9aBU5jaB7nm5FyqdEnLD4armrITmSZYnc9qbfIVw1ZNlSH1NFmJRaGEdCzD/DAfVxOz+WLR2AjXK5JeAIuh27Ci4wR8HAJLuuJ7HyOdaw7LuoZYcziFMMFBiMsnFB0jIreiOw= 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=EuMsX3rg; 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="EuMsX3rg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=jzKAce1AMYjxYAxwI1ZD1/YYt1G2BSK4c3WM9C2tTHo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EuMsX3rgho3wwdfcAjMVtGMavozp97FNj83OgfLVlccRqjPxsNRzEplPkQiUsCmNu QSuupRkFmm7quHyEMM+YQOSep7la4H6iwruXcUqARnXcOc/2qyh7LuIoidhm6nCEto G0JBR3jKxVNkrzYocCy8c0lAVrTNicZu6SdlLhTn6HcU6axUme9sQvsF+KRGpJ4bGS JxHDM/FhCB3niugzqiJtctUNLkZlceBLql9vPW7WFPHP+GTMsm/iyEVlUCb4mZkOO7 Eqxe3mtgZv5yxXB3b6TDng5AydhLGTB6C4sKtnUyH+0HkchUKFpZZDTycYxInHvZLU 7YfcSa6LlL0rQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 168F017E1583; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 24445480061; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:10 +0200 Subject: [PATCH v8 17/29] phy: rockchip: usbdp: Register DP aux bridge 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: <20260626-rockchip-usbdp-cleanup-v8-17-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2991; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=jzKAce1AMYjxYAxwI1ZD1/YYt1G2BSK4c3WM9C2tTHo=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yX1wY4u6VrOOvZHzHYUIk+ua5ENR82hb pL6Iuaz+Vn43IkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qa+lwP/2m6zyHtR/bn93OXjL/3ddC8mbNr0UCTqgoIooofCR8mrh7CWzvSmZKG7nTiXN8wFvt wzTN/DLrmVukfa/Rl/OgCfEBCbz47oxLaCo9qM/GKV5Y8BN3r0dAdFZfEJi44QxJ/t69Aw2nsOr 2C3X4Rs+v6k9btg8bgMVxuzyE3fstIowHfgs4txPjDu+YrZqwo3maXA5yo4pEabxnHd4A/l5n/D e52xt4vwUjE8/g8eE8TLJcZJe8ljBRwTdHI2Ca2Rvvx4YZXYPcAKH8qLWLeiZLMxuHAhLg5VF7b e04tECaWo3YzQ7ugbfsBMMzFcQmNKHBVZFAjQTXuAjEPopVc1BK6Xk9YSymtxItpjdqTIsxt9go rXKg17GHYApN09vCFEfaIqHAe+tGSRu8R2sB0Amlr+Qle06SInGAudf1WKNbDU01ZUZ5G0duEnC l/FTjEFeSxrOqstT66/sxio1gcCAZv3xA1UDEtYTUM3+1E3rnKEFTZZBHuaZGv1YdH6MJPDnmna kcbncvhdXkSQE0j3OwKOmfqYmqD1XHZh4/jC5ItSShkQ6qznPPpZiLsy0VVohZ4s9ryHf8zzTuQ RYh6WXJnRryvwOS5+N7W7wjR06uHn1R2767jPf4M4NhMa+hAYzDAnhoGV4thJtA722n94VB+9L5 7LdkuoyJuSWHEs2FprD02GA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Add support to use USB-C connectors with the DP altmode helper code on devicetree based platforms. To get this working there must be a DRM bridge chain from the DisplayPort controller to the USB-C connector. E.g. on Rockchip RK3576: root@rk3576 # cat /sys/kernel/debug/dri/0/encoder-0/bridges bridge[0]: dw_dp_bridge_funcs refcount: 7 type: [10] DP OF: /soc/dp@27e40000:rockchip,rk3576-dp ops: [0x47] detect edid hpd bridge[1]: drm_aux_bridge_funcs refcount: 4 type: [0] Unknown OF: /soc/phy@2b010000:rockchip,rk3576-usbdp-phy ops: [0x0] bridge[2]: drm_aux_hpd_bridge_funcs refcount: 5 type: [10] DP OF: /soc/i2c@2ac50000/typec-portc@22/connector:usb-c-connector ops: [0x4] hpd Reviewed-by: Neil Armstrong Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/Kconfig | 2 ++ drivers/phy/rockchip/phy-rockchip-usbdp.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/phy/rockchip/Kconfig b/drivers/phy/rockchip/Kconfig index 14698571b607..39759bb2fa1d 100644 --- a/drivers/phy/rockchip/Kconfig +++ b/drivers/phy/rockchip/Kconfig @@ -136,8 +136,10 @@ config PHY_ROCKCHIP_USBDP tristate "Rockchip USBDP COMBO PHY Driver" depends on ARCH_ROCKCHIP && OF depends on TYPEC + depends on DRM || DRM=3Dn select GENERIC_PHY select USB_COMMON + select DRM_AUX_BRIDGE if DRM_BRIDGE help Enable this to support the Rockchip USB3.0/DP combo PHY with Samsung IP block. This is required for USB3 support on RK3588. diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index e243d92483e0..a204699619b8 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -6,6 +6,7 @@ * Copyright (C) 2024 Collabora Ltd */ =20 +#include #include #include #include @@ -1447,6 +1448,7 @@ static int rk_udphy_probe(struct platform_device *pde= v) { struct device *dev =3D &pdev->dev; struct phy_provider *phy_provider; + struct fwnode_handle *dp_aux_ep; struct resource *res; struct rk_udphy *udphy; void __iomem *base; @@ -1505,6 +1507,18 @@ static int rk_udphy_probe(struct platform_device *pd= ev) return ret; } =20 + /* + * Only register the DRM bridge, if the DP aux channel is connected. + * Some boards use the USBDP PHY only for its USB3 capabilities. + */ + dp_aux_ep =3D fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), 3, 0, 0); + if (dp_aux_ep) { + ret =3D drm_aux_bridge_register(dev); + fwnode_handle_put(dp_aux_ep); + if (ret) + return ret; + } + udphy->phy_u3 =3D devm_phy_create(dev, dev->of_node, &rk_udphy_usb3_phy_o= ps); if (IS_ERR(udphy->phy_u3)) { ret =3D PTR_ERR(udphy->phy_u3); --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 81AE43C37B4; Fri, 26 Jun 2026 20:55:10 +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=1782507313; cv=none; b=hn3NVhf/OPOiDd8S6SbzRU6PNPTh+k3LabZmDnd52qNEbGTK9uhyK875oq0MItwRJTnESZt2FC2w5vPMhgm8SmWiGOHtYx50tJPijb/MIGaQ2BoFM/t9q7F5MtIFSd5NOB8Mr5ppNf72w5MakVpllkJmYsXfjnxZ30pXGHY0AYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507313; c=relaxed/simple; bh=nNC/xTVz38/82ZSCzanYzFR12wgPyB0XkPEU/R5/7Ig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NJ3Yq/4x/ILZ42vGpynfY/6Ed5ZD0/iCpY5AVGUT0idcoGrrEsvyQEmRE0MYUh8wrDQilEPDm2gRVr0aIBj8OmXOHYBVEhsDdv7tG9ZE+dslEF9xkIeuP/kDSzFfujmCFWJOvrUOlqSj4s5uPFtTaDucQxsHcpMDBJiSvkX3K1s= 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=cqgl/Cc1; 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="cqgl/Cc1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=nNC/xTVz38/82ZSCzanYzFR12wgPyB0XkPEU/R5/7Ig=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cqgl/Cc1c8StmZE0sJ8ohFGWb6D2SsHgzHn8h/5wBAv/Ztzt7S2CwqBbcFdE6uBPU OF688avO7ckhhIWNh8cAlvfbTCB2uUYkq/yBKTs+xrdBsWYeE08P2KlMAHWMMUV7Ci zNwgoQnVH1Y02U0JE01VgT2bGqNepOqJY9L9wQ4Xwd6/3/nzBVz3nOrv6rLCr25MVl VUR1fXJm4UyXdCuMbYqiMhP/iwLV1g2b6d6hE0/Wxln277cmNdTfJxlkURXp+nYxDQ H6m6RoFWGLo7zpMDJCv38/N03u4ABOYt9DVgzUOK5dGM/gev1dHeZD/fvrN63egYf6 +MxquSGHGfUSg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 2081417E15A5; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 25D49480062; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:11 +0200 Subject: [PATCH v8 18/29] 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: <20260626-rockchip-usbdp-cleanup-v8-18-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5161; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=nNC/xTVz38/82ZSCzanYzFR12wgPyB0XkPEU/R5/7Ig=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yW/p4GFnA2uxsqWbTaFhQo4opgcwtOqO gnF2ZVViB9lyokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaFAwP/2IN1Kkq7GqdQu8j0Gv4TpBpzNrm0R6SYNCk3v7zcQ8XWYbHQOCOnbUTNrNTajp+1Kx CS/j0o8m0I/3fj2d++ugEHMvNPaEdK4UgAHOoQlyMw51rxuSlnxi3Xi3HWEiaLqtwl7lE7sWaNo vXRPkJ14GFh2X+5fH6wVC5fkTGPICcva4zquIJtYgNpAXiFTcnAJJxDcBBkkEjsBuPchDrlNSsd Jk6z5+yzT44pFupwZjsImpUIFF8NFrVsblfLNZHG1emo1K8aPf4kIeL0ShEiINv7dpRFP8v79IM g6NlPNo4+/NGT3ip31QLYdQhiX33sZjzFgzhkp9IlXcri4YtP27FC66vckrklV9ZW1ELJeIkyTV o/mzwv6t+VIGJ6SUprpRdrIrmZz9K27zAHLcr1txAPnyPrfK3SkTW22DRxheXfilUs7bI3NjGx/ 0KgWQ5eucgH1zQETMccymVrY2AERF9gN2VVI/QC9s/C1KcD+vj2uCn2+sn6jKRjCiO9YD+kmnCG LcL7ev60wFFQ/EvazOUcG2jqP3+dM41+Yj4MfvgmKIUd5wjlHY6UuCd/fyzsuGC0Ic2/Q8Atwwg L8MPjJMoGXBlfkCZ+ebVgYq2E4u7oriRJt4z1X0Z/5psDfmQ8M/QFzKpl8/HOMjlO2JrbPJtSi7 B/ci/JCGaOO8rOgThQCo6eA== 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. Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 81 ++++-----------------------= ---- 1 file changed, 9 insertions(+), 72 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index a204699619b8..731e487db57e 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -186,14 +186,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 */ @@ -582,19 +579,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) @@ -1033,29 +1017,6 @@ static void rk_udphy_power_off(struct rk_udphy *udph= y, 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); @@ -1287,8 +1248,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, @@ -1342,6 +1301,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) { @@ -1373,22 +1340,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; @@ -1544,20 +1496,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" }; @@ -1662,7 +1600,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 Tue Jun 30 10:35:46 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 B36E73BED26; Fri, 26 Jun 2026 21:02:21 +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=1782507743; cv=none; b=DbGHWv7yjCKbS1SBaEZVGZjjzmAoi33ESHcQkzvoJPzMPaL8I3kbI0pxpDJiC/7PJD9hERRfM3l5qME6GGGjqEKZ90USYUeSTFkN8ZalHjnp0BRJk7gZD3f7t+2dnshQjgpNE6C7+pszTrRPPVU9e6Va1v5P6J2+RtuX2HZFGbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507743; c=relaxed/simple; bh=w1EzhJbw1+CWxWELSy/0FMh3qpMPSygun3ROkr+XLhU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kieNDIINIKPBvWsQRr6N5fa+MiEE9O+XqZ7vgQlT8w2Gk2AsMr3MVmiXSo1c3NrrLsmIYJFk5mcCcGRDbMPRt1Z9USwIqNOLLeorEiWFWbDoVPvMrL61eVPVTT+D+rpxT/uLPjbRPmuaOdE3F875f2IFrnXgsNCWdHz3TWq++1w= 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=WKXx7UF8; 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="WKXx7UF8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507740; bh=w1EzhJbw1+CWxWELSy/0FMh3qpMPSygun3ROkr+XLhU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WKXx7UF84H4mgAwlSbvrjK7opn9VPbscrBUDlfmB5ko4aBhG3pwxGWm1ghwnGphfH jHZkOPc1o3LJiyeRUjJuksgdTrlgSBMrmLdubSXioDaPAh7p8fJbGPMkjpv16jIDmn 5Vlx6V9vnosRWLaaHqA2j4OMZBnT7CE1f0cJNOYNQevGBGldQ7kmKl4I1ut593jBjb +2P/Z+yRo8d1zgsVwta+NHXG9tKKChOSNDAjhFJzVjfOSIh0P9fpt+Lb6/1mo8u18n FLKRfTvUwk7jBKev5oTd2LrQpttAZbVI8QgyaPZi14qsrnljGIKSa+BAoCf9PQ4P9H qTpPTMvgWPSMw== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0349D17E0CA9; Fri, 26 Jun 2026 23:02:20 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 27375480064; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:12 +0200 Subject: [PATCH v8 19/29] 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: <20260626-rockchip-usbdp-cleanup-v8-19-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1831; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=w1EzhJbw1+CWxWELSy/0FMh3qpMPSygun3ROkr+XLhU=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yUrCOcXxbymT1JUV0lC13AlwplY7Pors pKXXDEANT8huYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaS3oP/0PvXXlW8r90mBLY1wQAlxW7TM/hqx5KYsakhMvmK1ipHlhc85TzfYQuOV06LmX2NYi dqh8qq+7ZJo9W9zmXQUqDkB21JSKNZ4iUuQXujCiU5NSEC/3nIQz5rVGAhCml/NwL01pO0J7jAi /397MAwN8egdMLm/6qxGEhpIJ+l5ZSUw96yvUFKmJe7XNTESyDA/hjOn9yp5z+WrB61rUkG3S4i d6HPYPWE6WoaiOTKxxprdtiiaYf3HV5OsKF8YQ1Q3C5XO8pX0ndmF8tzadU7mN9D7NXESYMyty/ OmQ4G4Icc3G8233Ah+7Jfe2TCQHlAlqG2Fm97vBGd9OGMZMWtn9DnS4iKo8myzH0Q/pnIsCbc+5 sOiW+X/NVAnf0sdyQl3THgOBkDQVXeK1p4fG1um03C2HAsRLvVasdXc4/7PN9cYuVS9hNbBTPud jMQFNW7quaZ/Vq8rv2BxrCN3S5ihk0yQ6L81P+r1wQK82IuswRrCNpMg9QS3Z1tm6aRBs84Q81l wvL1c1FfPnRm5WBsC0kz6TeygQFOCO6EijVYcs2paRjpWe5IwatU1BPhP4hJTtp5/pMNgRjRMhm +ByPNwsqNB7Fl/vvp0iwnMtwHHYsSsD+kiu3So5YC1GH/XG03v8KaSqQfAPn7sj+Ei1aED1WnZr HaWDYTmTMLa2VcWldwI8pRA== 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. 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 731e487db57e..1bb22fc18c9f 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -172,7 +172,7 @@ struct rk_udphy { =20 /* PHY status management */ bool flip; - bool mode_change; + bool phy_needs_reinit; u8 mode; u8 status; =20 @@ -584,7 +584,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 @@ -985,15 +985,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 Tue Jun 30 10:35:46 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 812E13C37B3; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=FMyW/zVN8a3mcQw1470PvuzOjpz8hBWH/id4oAAbuNguQ+AjUoAE/agGJFKCcK0abDtE0UqlCa8zGSvQ6ZLrzxrhCit42rJS5j4ZwwuMVnzTbLedll9+f16p88rpZc7TasdCSEJcuXWlfqxWj8AUcXpVZ9Gpy7mkpyP0IgVB+L8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=Cw/4rw1Cp+0oCGwZrjhNlCIDyiVvrfzYYV8gu2/mrJk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r3CAQYfBFVn1V+idlSxmZ8MbNNVODDeQPL29IBNGfW9CWs45SySCAxnb2OIMWRWQgFJbrIyov+zOEgikrHQk7a6ZR5XscNPYkICibVxYUDsUx3UEj/9mA4PxUv/dhWK+SZ+AlS7XTiHwo+NQycYQwzhd/RMo95GiXhK/+6HuPoQ= 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=FKmLHQ8B; 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="FKmLHQ8B" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=Cw/4rw1Cp+0oCGwZrjhNlCIDyiVvrfzYYV8gu2/mrJk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FKmLHQ8B98fPHbybxKXUi5vV4jiHhrpUQt7JRk5aD67M1Is9Qk38/sb0DvYr573no nUR9FYBtz612dyB0qp0JmKTS3qnyKdZShH9l6onuvIo53dCXDSxogB4iSQHIBSn7y1 /2XShNzQ/iCVrOQdNYA5DR9oyR+DuHeGoroy6b6v7jMXas+hM0Yni6+wKKAc44ApZa Bg84W1/5oySAYBSv72VLDn7la9j1U3gRh78rGMdwUVFeVghRCO6Z3ffvk5Y//XhJ1P yPRFGfn6y9n3nQYz4hOY4UnD6PTLhz8+5dquq+chwawcbtBRYt5qPFs5vgQS2Qq6yu ixlpQ0TD7qS1w== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 2CD8517E15A6; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 28B34480065; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:13 +0200 Subject: [PATCH v8 20/29] 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: <20260626-rockchip-usbdp-cleanup-v8-20-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1257; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=Cw/4rw1Cp+0oCGwZrjhNlCIDyiVvrfzYYV8gu2/mrJk=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVjQ2QKwubYcxpG7Zs9XKhu3VhCOvNZ0 2AN2cr4bkdCqYkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qayGkP+weDk5k2Ry2pbJONHl0C/yFqmBFcICf+UNH6b+i6VPpj1HmIGTu2sCTmvt6F3VBcTxN XD6i9t9j2bP1XGJ58alNgctiKLxD6tzDPjSx801XbhkcWl7Eo0C5772Qd0MGojTBnq1Xbd5CAqH YPrMMl+8UVj3LSIbyp7lDvwaE2dCGSnd7pNknFFUnHDZxNpLN1SbHCzUt7dAjY0CY1mP8qBP92q g0W5fpPtN6ZPZlp7GMEZavgSfFU3HLb7aLltsd2NbK8t87hA+2dG9NXHSNkkSdAs5jquGIeHfjQ u0vd2RbfHJh8SHtOyNR/LNmqz5/IutZdq638A8YAazd/xgSG1mQbJx32PbSBGyqQKSO/wvJKEqm IBP/u+qGEMklVVClE74nvybBjPAX+LLyQCpH9pNTCm+oXQSx/Xsht763cFjZ9ANWPpbQg9rERTu T/b3mW9DxnTO1KX9vv+gspaf9Zk0GJZpe26VUSFi2LkLe3hCrnNyVJaHJoTYevZrxfkeS250nQ2 PZofPLBXxJAMw4f0KMRq0gb/7dFb3N2JjmrJAQFaoWsulQ8/amJhMTuAUCpzvRc8QURQtenG3Or KASduVzCTPOhYcEg9xdilz1FoYnHnMtSu4+2au75FhntBPhFVtFpZDiPN4WGkNYNPPFywejVh0P +S6Q8lnL2/Unc61M8Pcs2xQ== 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. 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 1bb22fc18c9f..3d222768dc3c 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -626,6 +626,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 @@ -637,7 +638,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 Tue Jun 30 10:35:46 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 8B8343C3BE2; Fri, 26 Jun 2026 20:55:10 +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=1782507313; cv=none; b=iszTJHoy4JwHlXPUnvRHJiBdFZvuNzIsEYPBd4zyfkJSxuyvyODG1tv0Ckq8Tocxna7rxcUweI3MPdlW4VFn8depcoFyg4CqTaXrHzLOmAiUXEa5vx0CnpdEZ13/N+7P56dKUw8IchkDWo6CNZPffvRmovx5XtNHg04bDRLxKvE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507313; c=relaxed/simple; bh=4x7zbboLpm1PodrEZOj0cLjHDvsCgsvwDteswEZ5WlI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=euPsy7303AM5Gftuki4v3/YlvTKphe/CHCJgvF5vqiW4lOOhiCIXFV78BOfWZlFwtlJ/j2Z0sSu7HCpiAnNxRUtYThzITtS8MlFA+d23QSnWyYrVWuAsJwDIivy2mnI5Na5sFe2e1XhJBHTbh8Tl6wEuR+BK4LMLPYHyDe49/Y4= 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=NZOsu51J; 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="NZOsu51J" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=4x7zbboLpm1PodrEZOj0cLjHDvsCgsvwDteswEZ5WlI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NZOsu51JZQeVx5cDnZLlNiuzfS38ZwajxiUI3cMiS5PSZBBOi2hmQlauNcR0iRJ5L c+vVrLrBE9CimovfLfRVI3AaaFbABu5Y7JrCCkNXFdMKhdG0WSBR9+0P42QDDALHcw Iddwp8fRZL9V0coRXv3TBcVkGM5zA1iGzt/DmNemfbjoS77qjFvFJ6TY2/NLvNWqzJ Qtdw+q33qh4D2PPJC1YLi470yz9AOEfpPPQ0w0H2/nUwj4ayTuYIcly9ABB9pPpl8o XNTWXKieA8O1MjZVkwH/shcGCFKY8lqjJMC8UKJOVNboDEEo8FKIfoQ6eiDrNDSSQL ikVdXKQttphvQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 388A217E15C4; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 2A0FD480066; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:14 +0200 Subject: [PATCH v8 21/29] 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: <20260626-rockchip-usbdp-cleanup-v8-21-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4580; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=4x7zbboLpm1PodrEZOj0cLjHDvsCgsvwDteswEZ5WlI=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yWq7rdJWQvcDYrjU07NyLEDdan5BaRS9 r8GsZ7sjCEIc4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaoesP+weKHX+dMifnIFCghwnCVIzKkJX/oGqdAkkHBhrs1AKBngQKMTnPHi24AxZ12RhPL7P ztmMEkJiRZiReQ7V6hhOo0nih8gfohfSF5n3XLztPvb4zuVyk4UeXcDBnj7KVvtVtbr2nf3RKA9 AsTt+xz+qK0Y4MAqHt2JF/B9kFycs8weYsHgb2unSTSaJr2sCYsbYM3gyvN2ShMqt5p9CdEDHoI nRBLcTiuFqCabaIJmwFPsH9x9H23NXO/pfdug2f3bxBpzONw7bNQVfA9fNEi/2Dtt2fxOsPMtR9 PGFSrafks6PNdZMDKGSAA7a6vlnP8B9gTF+CLyS0hf8Rfnz+E3fAq8RXDuzatMuzoqlQzPYwvQ4 vmv3e92hSgHEVpGj2P36VgX/hAGPXEC0E2TCF2yIhmU87usiJzdoDMpRr6IZeSfm3NqeGHXpNzw meBQXArym7uBhmb4qj4R/maUaatGkGcB+xNEtxbPjK9dahL2PfM4a+zDIn1EHnONq4ooWglmd1z 8GIjziWYidvJ7MXaZlSDbj273icATS+8ruPhhBEunn3UTcnMtqm2uDcSaLCwwBCPZ1Vg0+PY9QD ZLW2UC/ze4O1ik7Hwh8nbntcGLhJLBOntXt7MVqeEURDt4wUCdw9HrG8Cx9hw0B8jDPCz7XWWsU lZfQfiximSNWadfiAEWgxZg== 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. 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 3d222768dc3c..7c3b0d45d938 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -588,6 +588,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) { @@ -595,10 +631,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); @@ -608,18 +640,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, @@ -1303,7 +1331,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 @@ -1315,38 +1342,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 Tue Jun 30 10:35:46 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 CAA223BFACF; Fri, 26 Jun 2026 21:02:21 +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=1782507743; cv=none; b=LIwi9jttqzs8517SMPMQ8vemPJQaLtrfK+sp2RCg6lwxV3GvL3SD9pS+cqnQ0tTlaeUt58vRaqWNw85xA3apBVX+MATnSGSQNqWojmLdhUQ2G6w5IPjNms5AhbjdTFC0jqIVIdI7qZcK8y+kRIpkACiN+i2tUHuil3flStiqDTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507743; c=relaxed/simple; bh=z5ArQie+25lpzfxR5vY7ueV2Ks9qhlwHdmy+YLbUGgc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B0he7Bag3FwMkGnA47ogLE94CPNlsyi87FbFReMDaKC+DzkqmccowaZhkj5kVPsSBTMvulznfV68jB0nP/msJpdcXVDBcydCvj3qgtx+La6uLgtVTQXktLIxArJlszN8/bIsFdHFnbs4UowniWU8dnXHVFl701VBzsVXDkVMK14= 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=SmgbsxtM; 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="SmgbsxtM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507740; bh=z5ArQie+25lpzfxR5vY7ueV2Ks9qhlwHdmy+YLbUGgc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SmgbsxtMR/Odv0/RjgMDVe2rJfu7LrX3cMxNawjRMvp8gQxtTzirj8P4JotCmtwrg cZoDZxyC6uni5k/Wnh01Q46Pcmo9ko5LThCsLZrfvbZ1bnqC89Sz+duwP0c7L+GdXy EqD90ImRPMVhLsC2DscUfi8plcg2JaYP/PqgGetoot8VVeP9pwRCIPAqXwfPzzVDFU 4TIeR5mvPttaJ6aiGq4VMAq+ciEa+KLKMUAkL+VBGG1jTexockFg7W1OdGKg7RnFwE Y4eqLA6zU9Oii0ETj/Gl9TvJI0hV3mAvEYYiaZp7mNLUmYjzwK4lcS9CG9db+bALZe BQC/LtZs4/KKA== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0632C17E0F8B; Fri, 26 Jun 2026 23:02:20 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 2B88A480067; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:15 +0200 Subject: [PATCH v8 22/29] 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: <20260626-rockchip-usbdp-cleanup-v8-22-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1759; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=z5ArQie+25lpzfxR5vY7ueV2Ks9qhlwHdmy+YLbUGgc=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yUnIBGtcaw3J9f2Jxg0XrKKTU088zOC1 1VM6QB28LabEokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qa1tQP/isoWK3Wwe8hDfeIEFNRp81dcRt+EnorGMXCQZcYPnAODIoJ1cvlG5QtMHRV1H5x8NI yoRlPnWwAq7h/Ivpbjp2W2SkIYVsD8eEssas7d2yWxPbPbAyg7/KCji4bjNpxxX7pl+Pum7znT5 /Lt9A+dSUn4J4VX7wFI6YXTrHvK0L+YzBc3hM6nbSVH8BFKe3ZXanRXPIdMKuM1vLmA8i5o+1qV tTHLjhJlWExfcUCmCIFzSruQvMFRB+2930wraLlBlt/RGdm6MxKUbI+HdFEo8JHF4a8gzsY0Whi 3KJZiKv8lnynZGejyCDDkRRQXHd6V6uJdtTisaFYGhI1Mga1I4Y6O3Uoe+7RjcFmJZyQ9LQZ6Za LHOz9a3s83N8JDs+PhUv8wcFzRRAkQeE4x2cey5QkBENtXNxDqYloK288c3P/fbfheX50mHxew6 rIaTPAATYWE9AKgPVCyE9bSyrRQXg/DYAajaA2FDte3PiHdbb8e+Inql+q0DALWNz/tiuA/YP0B tUXk0r0Sj84zfPD9laP3p0em5Z/TNWgmVntcjqLXEo0fryMulbgZe/uiWrUwZtBSK6AwVmyA8Oy Pry9LxH8JaPTvSq5dsUSLulvczDGF4+2NNIV+Ecz5TnElgexgfekt179oStXVYuP/VKoGGj44fQ 7F6MRwxP2X8PKYYd6vWAtTQ== 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 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 7c3b0d45d938..63fb41ad0199 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1327,17 +1327,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 Tue Jun 30 10:35:46 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 91CD23C3C03; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=ipwR6sI8m1mZzGQeiWw2NF3KgRGKoaCkVnj9ccMsbw/jdpagRCczyZRBKYcORbKkmkH9OQW8MItiupiGrxMuxARGCdIs4a2wFmaBWi5Z8JhoYrqnE1RcjxArDVBd7n7IPkAQcX0VDtIUWCU3y1IhDZ7zrg81o8JDE4jCEfgDPuE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=fqqKHWWJWK0Jwe9QDoHljQzJ9sYc9Ql0wDdygpL54/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LNVNiRM71q4+3DkT0ChXdIFNpKaiChlrhZ/NePf4V8RTB0B66/GSxkj0ki8W8EFe+s0hs1NmY7q1B/z8HycVLSOuppca+yE8fxr1WJmyG+n4LsfpTuNtB1tOrxHAo1gzcf+Pnf+Zp2bBWVYXca02JXC8tDavHNTnUNBDb7/5O3A= 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=j8Jf1CZg; 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="j8Jf1CZg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=fqqKHWWJWK0Jwe9QDoHljQzJ9sYc9Ql0wDdygpL54/8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=j8Jf1CZgARgF4PTEfBTrrAuNfHMel3cE+pT4BEd66aUcfZrKtfGKgMgSo+oudZfL7 kRcxzwPUX0ifn2OdkAOHwyf07Bp+v0MdH+0rXV4leikCysivSXh/JUuwGljRs+j6bI pyAZdyUDNJz8HNWZAvU8GWu1JunDmxN3fjWfdhW31G4dnbC3NZJclgwDZ0PRD/y0Vx rnmmgJlIPn7KF/yJoOVu1ri6aRvSj4fJPrQi6qJbFI8g4VzjrXJgJ+O1GMkyrUmFBO PUZ3FpYmpGUblOXWjL54lVuwdvK+0r8uIMmR1B6sV9SEBoB73SMWSz6nogA0zJ4pG3 a3IdIo+PT26Qg== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 4470A17E15D0; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 2D314480068; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:16 +0200 Subject: [PATCH v8 23/29] 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: <20260626-rockchip-usbdp-cleanup-v8-23-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4395; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=fqqKHWWJWK0Jwe9QDoHljQzJ9sYc9Ql0wDdygpL54/8=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yXCi7eOMvOKh3ADi1+8NNLiOsDFgRiSE xLH22W8hnoPRokCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qa+rMQAIHuzLB+KXc9X7Hqk5+BYSURN+FrKXlzhzMfHjcXH5HzyK2PRtd+WBWXonFdzhJh7oU kgNVdTlwVn/l9Qp9/CwNSU7FIkQkW+C/fQner8SiBG39DpKpGhHJxfD6uOnQ4WTaTqI58E3KA8Y tcKRyFV8oEJpqqdSR0JXWn/C+KgaL0C/u0QBGzO0mCfGOlK+jiKIMoWTnSnf1gLYpu3Yvg9xeig HPfeQ/kv8iyrDjJXdQFHCcOpMDdO0Souwu5YcWWaflDescZaMd2CaUfp5dIPkgB9H3Fsp+N1wqK ugnw4zTds13nOTnSzYYzdO7zO1U+45pzaTgkPZHkNhPgfiEzcgrg0C/h6vORBHugmgFYPUwbLXP YHDUumKSBOzj6W5jIl301+0FKyvVN0xr1jrF1Qif81qnC6Mp5TgTnPn6FlOaSW9ytQhzFL3qKPe kNrBgbRq7HRRS+UCHRL9dxG+ib1+Obc0pVWEOUBCTZwsF+YcDOWaxrXq6zEk2vCPF1R98BzyunI eMxaO1LkoQTBTzvgdDx/Ci154fCP4yIUQ5ZYCftLGX94PKqz8M+v1mAm+TBZsYFEX4iiyd1+9DG pqLa502k67lqQLG1zjjRnRZCNAP1hLD/lwtxhfU3aCM2vKGrfLhMN1mBKa76/uqnd+npvJfSKTa 5AzwhNiZwuQTegwIM7/cqUQ== 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. 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 63fb41ad0199..837a4cb3e4b6 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 @@ -656,14 +657,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) @@ -673,8 +675,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 @@ -1054,26 +1054,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 @@ -1081,10 +1080,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; } @@ -1289,35 +1288,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 @@ -1349,12 +1343,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 Tue Jun 30 10:35:46 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 C31D93BFAEF; Fri, 26 Jun 2026 20:55:10 +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=1782507314; cv=none; b=i3k+mcEG8DW8S/4KPDsQEBlbYdfdpQSLlE0Jgy2CTW8KkiL4GOy7doDKsSIRiBpsAkMrNiy3H1Hvz7mKB4r3RDJ85Zy/Ud2dTtG/wppR9M1X/ffrhuWZxH8xZpkakpO/tZvxVk9AOENU+xp5mx/4F1mvjd+2TZilwVTcfyO33yo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507314; c=relaxed/simple; bh=qu9LtuiuRvNa7z4rXJx97qokovwN1mfMhrPchhFBK0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CIiwPR16HrcrP16T0JDzuO8EamJq+SG1WyMwbaYYljXYAwNRrf510kaFI4U2WFXrrsCJ/5jXQQzOWgnvUPn52eLLoSgjOd7K8Io6H0VDbzgE7cgMbbL6AE99JYp2C4nqBdBx1k459017GAQ6WmPj1RQ4i9fOGDo470xXzvuPIZY= 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=VrNT2naf; 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="VrNT2naf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=qu9LtuiuRvNa7z4rXJx97qokovwN1mfMhrPchhFBK0A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VrNT2nafb+Qi03RN0M4x+KrTGQcuAiUVcQ2HnprNg4dV5vJsOSEBiewoxKnIGP2mx iJTILb4F8tZ9hRPIsttz7K1XCWvgnmY3GQaO1Rgq/Nc9us2oPRj/46Xa61hD5BtEpA 0hnkAdIE1WJVXaWK3ObL9NMEgFMlggBMmY5Ksqi+uA2rzpCHImp01obh6Bj2yOlJjd MnPj87pmUCgBUguOPszcfsMBjeRjx0DNN2YmDfFMOqHMWxbb5etfzIir7qy7DZHYCx Q12gTIVCEz/fH+jvMpoafRFpCove19yu+Ss0h5Nkew0S+kZDRAEpc8qYhgVPstRrFp MBTxQCQTpiO+g== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 4E2E217E15DA; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 2ECD2480069; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:17 +0200 Subject: [PATCH v8 24/29] phy: rockchip: usbdp: Support going from DP-only mode to USB 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: <20260626-rockchip-usbdp-cleanup-v8-24-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2810; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=qu9LtuiuRvNa7z4rXJx97qokovwN1mfMhrPchhFBK0A=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yUAvTwj30RwhrKpMs15+NTuVtXEZV6ee vfvWjjOAybgpIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaW2sP/1qLJAXeq91ZmmbupQ/tl7nbDXMlT78WcklSkkUg8spuJgkf8b+NbUQHTNVGZ/FJHDH 49KeB/XPafvrWSLrx8WeG3srHXuX1Ch9JMeWR3X8/guv6BwBPePfp1BqXVQ60CnmhJJw/dG4PbH k1Sg6ypLTFBfvKYLC9nqO5WY7L/RlnBRvJiRrLEl93X9w7pQnHgCLR0ld5vONoZGizvs/yFiNXC sUEuwQrx3joEV+i+l4NIpf2dWVjyQk2HWDIC9jo/h+572oDtDdgjErt5jDSgHqv7dS/QKnEWVvX 9D7Nn6z2f2dV/qA8Seq7SGOK/1s1x9X0tja6aAxhUlNFUYSFgUA548aAJdbKbiXCB5OsVqH919v zKI/op0vYIjgFHJYFCPV+Yrlw/jUDK+8MnkOWcF+0S3P7V67EdAQ/ji5n/SDhPcnvmNuMavsPxp gfxhy/cKt9gJhemPfWyaqxkovfOVDbqRl+ULmyWW0p2+LBEm2Q3VQi5kv4AJLlpO3CeisB/IHrN 4Jv3ONcXTG8AUVhePx+mdV6YRLVE4j5JIcy7yR5Wg4CALPZr82hI43TM+DFYXHsPJQsc+H0hZAR EOYhf5wU5D3KdwHMycD6W+XX40UFdvyp7lYoY5q0P+rHdX+TaDvGY4fezQkIGpTXwj8nBw0ipmX sPR5u3PkK/gLqYqYjBe42nA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A When a USB-C adapter, which maps all Superspeed lanes to DP is plugged in, the USB support is disabled in the PHY. When the adapter is unplugged and a different adapter with USB functionality is plugged in afterwards, USB functionality is not restored as the USB controller keeps the PHY enabled for the entire time. Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 837a4cb3e4b6..4566822d70c4 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -179,6 +179,7 @@ struct rk_udphy { =20 /* utilized for USB */ bool hs; /* flag for high-speed */ + bool usb_in_use; =20 /* utilized for DP */ struct gpio_desc *sbu1_dc_gpio; @@ -1025,6 +1026,10 @@ static int rk_udphy_power_on(struct rk_udphy *udphy,= u8 mode) ret =3D rk_udphy_init(udphy); if (ret) return ret; + + if (udphy->mode & UDPHY_MODE_USB) + rk_udphy_u3_port_disable(udphy, false); + udphy->phy_needs_reinit =3D false; } =20 @@ -1288,16 +1293,24 @@ 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; =20 guard(mutex)(&udphy->mutex); =20 /* DP only or high-speed, disable U3 port */ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) { rk_udphy_u3_port_disable(udphy, true); + udphy->usb_in_use =3D true; return 0; } =20 - return rk_udphy_power_on(udphy, UDPHY_MODE_USB); + ret =3D rk_udphy_power_on(udphy, UDPHY_MODE_USB); + if (ret) + return ret; + + udphy->usb_in_use =3D true; + + return 0; } =20 static int rk_udphy_usb3_phy_exit(struct phy *phy) @@ -1306,6 +1319,8 @@ static int rk_udphy_usb3_phy_exit(struct phy *phy) =20 guard(mutex)(&udphy->mutex); =20 + udphy->usb_in_use =3D false; + /* DP only or high-speed */ if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) return 0; @@ -1347,6 +1362,17 @@ static int rk_udphy_typec_mux_set(struct typec_mux_d= ev *mux, =20 rk_udphy_set_typec_state(udphy, state->mode); =20 + /* + * If the new mode includes USB, but it has not yet been powered + * (because the previous mode was DP-only) and the USB PHY was + * already initialized by the USB controller, we need to power on + * the USB side now since no subsequent phy_init call will come + * from the controller. + */ + if ((udphy->mode & UDPHY_MODE_USB) && !(udphy->status & UDPHY_MODE_USB) && + udphy->usb_in_use && !udphy->hs) + return rk_udphy_power_on(udphy, UDPHY_MODE_USB); + return 0; } =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 A52283A2E33; Fri, 26 Jun 2026 21:02:21 +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=1782507742; cv=none; b=VW/2O8Y/SNkeTINOh/zzUBFfAvHjmrPpdLSVqbyXUGY9Bp74rQSo9LUTwqnOUkPbytCsnkMa2t0/Q1+rm8LSEnDh4xJ8xXb+d06csqvkypOTUAodP3H+w5iQNHX5ANTLRgAOom1ny7icehFLKRtFBMjuTmCm7njlVRSssybcrUM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507742; c=relaxed/simple; bh=MarmR1wDaE/auFAtnNePXWY3E7UWDMWQ2CxnXkcbfjg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tyvRDw54iYNZkmepYhyiv2gWiDzrmfEW5YcDuqek1Xy/dkxfVcYcTMneuNStyPgfMG7roiMcjLAX+uoaxuq6ZeNV4ISrhRSAv5JstRXP9chuTj9mO7mmvASodObNpg1FSU+XHNnUbfkMILpfL9nhRjVDtJkMCwWdK21GqK5MiHI= 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=CHcruOHF; 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="CHcruOHF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507740; bh=MarmR1wDaE/auFAtnNePXWY3E7UWDMWQ2CxnXkcbfjg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CHcruOHFIPttswVoR6IM1QkyvF4+mf4TY36EqSAtHqN3SCRJrcQCMOsL/xMxvX3sl DPtKsmgF8MLtTV8MAHBVBosoatyOjUffFClH4pTxJGI/X0WHF2SO+Wvq80DLHsPZzk gqQdJTzRyuQy/YAc0Cz6WSSI9g0TpGChdASwQgIflM2l7v1qQj1mGXRa+JKEauq93v 78dhuoL0XMUKJGQylJFhwdxOEd3qGYt0dI/Lmgxqb04zOuGf5ZrgkCefJyTiIEAxLq wvnZAkanSbq7BbJCSs2ZayO2ihmyk+ueOxpJ6zSWuY1DQRLmPbz0/5qN/N0M/Bt3bY PQx6kqqFV07dw== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 0057317E0C88; Fri, 26 Jun 2026 23:02:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 3037C48006A; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:18 +0200 Subject: [PATCH v8 25/29] phy: rockchip: usbdp: Clear USB status on PHY exit 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: <20260626-rockchip-usbdp-cleanup-v8-25-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1229; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=MarmR1wDaE/auFAtnNePXWY3E7UWDMWQ2CxnXkcbfjg=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVdZh4n+jkW7gcyoPH3lQcGa1FiDJ1LO TdTz5vHHbYlKIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qajBsP/2iW+fNHmJyYrQARtaGAvY11NLf6GT7uYLt250imMz5I/intLeETL1VJExxtCnzZtLv CEePzyabyiwiH5UfqtAwnL/gKnVFaigLe8et4+t39Nf5D6PgG/LpxpmeZCV/1ZZztgeVzYKau8P 2JEFknQfYSvQ6k6dIXSqMVuV+8820Bqz7uGtq57KZDMgwlkxKRhcEGuK6OpZTzWx3bnTkK1w9rZ dKoj0cyzkJPDLo0bn1CvXls2vgHKrvN2d8IafShlTHVl8pUKZAifA6yKen0gJKgxrFWfuOFRgMN orA2lHrYSpwfo/yDCM+kDNBKL0LmTUWChHykSMECazqFDAdjbo3DXowzeRb6TePWniarJcycAl+ F9C36VrenjAftHquWyIbrjFBlcE05foQSjtdUPm3ZDZDmU2IPZGP4VuixM+tRSxe6YCU3iG9HYr CpfXHtTdhQo8RT1AQqIuvEbBBtKnyXk2LctsFxoMd9N/VOSVqRc2dgg2fLIfW16nybGWz0Vdbwp AazKTMcfoADXqHf5Egtdu8wji6b8mvSCAZEa+DjS/IY3tu+6EQyPPOJTcD1H7Ly1T2Uav9bjtHA Wt71WpJt7kKD4+fqbBPhhZtRVMna0sp2enPw7Ml0pU2lJMWrZOi/BbqejBk6WecqfV85VQ8zej1 BAVbXccjVkNWK47a3UtoyZQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Ensure the USB status flag is cleared when the USB3 PHY is exited while the system is in DP-only mode. This can happen if the USB3 controller device is unbound while a DP-only adapter is plugged into the USB-C port. Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver") Reported-by: Sashiko Closes: https://sashiko.dev/#/message/20260625-rockchip-usbdp-cleanup-v7-24= -38eb3cf654fd%40collabora.com Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 4566822d70c4..15c18c6e3093 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1322,8 +1322,10 @@ static int rk_udphy_usb3_phy_exit(struct phy *phy) udphy->usb_in_use =3D false; =20 /* DP only or high-speed */ - if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) + if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) { + udphy->status &=3D ~UDPHY_MODE_USB; return 0; + } =20 rk_udphy_power_off(udphy, UDPHY_MODE_USB); =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 C80CA3C3C1E; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=p4rC4TzJ6IbrEkkAJJHuN9E/oUHpg7RgkUuYFJPL5v3oKVg8vcZPoxQEysGhnrFMIHY8tNbnvY0U9EE8ZnUT3t6uqbB4IHaWYyNTrMQysFqZdN/YQAKf0LvPpj7SFSj+xBP12e5eChsiLIIvSG8oBaEWcuSWgJjvK7WsQFx913o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=GEM2lIbnRIm7Nvs/sTuHq+ytCoYrU2B/k7spbg9gs0U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SdSa+DOy0zjP0H8Sc/gOmNTJyR3blE2EOjNxBJ6gf5TWMV99VtiSfOAniz7xnzZyMm/EgtXQIARorhYvIl13mPCrHcOq4T7oSx52TXkjwmRdVlI1lHnsOmDqjQ6FUyNDIqbWHi8bkCMxLGCMiedQ5i2oEMMx9J/H5AtmDkR8v+4= 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=bExwaVsZ; 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="bExwaVsZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=GEM2lIbnRIm7Nvs/sTuHq+ytCoYrU2B/k7spbg9gs0U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bExwaVsZH7/SYzAg0DVj9jUvhFzptcJWPq7gW9o9MHWsqknE+wnEyQ3njNksgy+Jq E6C7CKZe04T90qxuZXQzh18XejHD5VT79hcVbREi9Fq6Fz9hEJEXQdLzSgvCw11JNz gDfPs6ygvwtofAOrEAwio2AB32Lj1RfM4gAvzQqV09hn65Fcr+IvlDGQIrkKnaSHNb HKWI8ejLadHH0rfPjuIjEQSwgjj94EvOPq2iCsQwtwr2cWRq2Q7vynU1eslvW2gdlv cq9vlqvqhLGu4Esfizzmf28UMky1zhswEPRHspJ/9sosBRu7i1OY6FuLTe1VtRoL2O doaHIHTdghzEQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 590B617E35C8; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 31C5D48006B; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:19 +0200 Subject: [PATCH v8 26/29] 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: <20260626-rockchip-usbdp-cleanup-v8-26-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 , Sashiko X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1341; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=GEM2lIbnRIm7Nvs/sTuHq+ytCoYrU2B/k7spbg9gs0U=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yVAHi3Zev+f9xGFi8LfTlZhI9cxCmipJ UkSCqRABUR1hIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qatPEQAJHA9o1JD5EyfeJPJ/JLHTR0CEkEW8S93dMQdof+5mzrp0XOtlvIoO520CmB9POcxTX fHyz31o5yTyFulcUcYr+NE4p/bQPJs5rCqdofn6siiVQicOuWD40/uT/DT1+0vo5DwRgraT8bPA 4K4IOfaLrMCa3cSNN2eDxdBtol+prqZ6YC1vPNpa6w3NLlDPx8hUhmNPScC+vX0JBbfe27kDk/n wmYfl3Phwndm0Kn6YRe2XBdkg+1YgOZB4WqgZCOrSQNq9wLtGrGHQ/ObzGflPRwDM3sYj1X3FTH 8895lqukWm70s/HCESu7BQrGVdE/rAuon71OW2hveZjFk+MO3jfcGr10ILl7E2PhDDDz8A3iUZu Q2ls6jaBSOoJIJqw4tBFbuYMYLv01rMzKys5Hp1I99NdMh+D3gZPcj96RrZ2bSxxlo2k0MwVHdv KSFQ81sAIOk9K+7u6IW+c5qv4MLHQYZ/NZVRzzdWT3bd8Kb718CuHsQ5QxrZeP/SDfs9lgTP1Um pwhB0GHxUF29Phc/NTNKBXsTf/TUvFQ+AxPeqSfnqx6cdGz8A6olDGhw7DFm+OCtLZW4Tl3QEeO qgI/5XuY15NIy4FGS6ZTfIwJPNeAJdh3BJ8G+xWna/Yt/59ek/jDByvmb99Ol7MGrkLO1Zn/Srs 9AW5Bs4Z4IbjoqpqI+K40jA== 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/ 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 15c18c6e3093..2681610d10d5 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1193,6 +1193,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 Tue Jun 30 10:35:46 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 CB5B83C4154; Fri, 26 Jun 2026 20:55:10 +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=1782507312; cv=none; b=lf0QydVdh/vYRfEWGyCrCBP/hMZ4QSGnnY0QvAl0axf3t2yTrnscESA07L0kPe/LfKIAoPeZNINw1R6dboiD7qCQMMXUML/NpHUnW+9Ox/jixQmTsqOSAv2RSyKNN2+cyGCrP/bbjozXKPU4BeNwT+lbq7E0zShqlEeboXls6PI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507312; c=relaxed/simple; bh=02cWmZKqMiGVzTf6KCwNSEtw9FxI9yd0x+toVf8lKs8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J4MwxABt+BketInVTJkM2n7FiV1/bHXIgVH+fg02DvcrSTTzrNnpRa+KO7gqUC1KAR6xXUAxiZYUN+AkOPLBs2wFAzXtStu2yXDFcr/FOQEt2wX9omqpK+Yd4nU+PIlc7f7sxBhp/DFjcDNnOq1dpFlHXUVHuh6azRiWSFdLIpM= 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=NP51eDSE; 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="NP51eDSE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=02cWmZKqMiGVzTf6KCwNSEtw9FxI9yd0x+toVf8lKs8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NP51eDSELG97sfUmjaGk3COMRpX/n9NZ6FQ0ihf5p8z9daryETmnl3Wks3+rBgNE3 Scsbhp/fIqfVwC7lrGENqlpLu6GQyRkInBu5zoQClqDGXirwF44hAb81h8O9/q7mO+ Q6h3RpoDrTah9IQjGf5mbSu7pykl2UMZmEIg0npP37VMJaOaP4UyxKdOkTh2V6S84t 8IE5DG+BDQN8KRPfyq+ZmxGN543cA2zXupYaKBAV8x0PxrhQfkK/V0pXsQ0H9OJ9Oy /7SYAZjkYLPPlJE7tieluefZ1c27sQ0L7WxW0+rH4pWMbAB+/XbxShAlMhEmzi8jH9 +fexNdbnf/yNQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 65ACD17E35C9; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 334CC48006D; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:20 +0200 Subject: [PATCH v8 27/29] 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: <20260626-rockchip-usbdp-cleanup-v8-27-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2823; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=02cWmZKqMiGVzTf6KCwNSEtw9FxI9yd0x+toVf8lKs8=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yU5RsDpaDtfaNAkaLh4aGivFwksfIYPe I0/PBd2Q4C3aIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qaw/0P/3xhOrg4qtnk2v/FV4hYfnJQ0sqLxg9GxWLinVZSD62AMwQTW7yCU8+0FGxAU+NHG1H f83vNrQRO1aWK06v7agXDnTTfHL9aUgaPPMWrSRQY5Bk6vM5av+9r+/NGKMZuUDse0omULaUjVO 3aU6McrEquSrujPqjZvO1+ElvoTWORfwF9ZFU/yUZxRt5BvgFGDc90SbiLu9/xBMnqCZ3AISC5T A+Pud8n2J8lvwu3nkHzBtZeOxGxYMXF/kC8sc3q1WztFd8bWpNNPd64LSstyMCEidGtpgGS6MbL dJtUdU+2hT+FG2ANvQuTilOX/pZnTS5OraWc2WKi0edFo+5zrq9L/Cy4lJNm/DwvHxaoJQei87v ClmqrYvdgs1Nte/CxdesFq/gFF3sMzArmOWFoFGkbPNfEx16DnoQtrkrfaF/6US0TdncV4IAKaK 6cm8KVij2mVshhZ4zhD7wt8T0eLDttlgxpbtP/6SmPQSrOm+NclRMSyjwS8NPP8Jt/ce6OdgG8N H890qYQbPyZUqbv5MOkR8DpNCd62o586xchxF5/l9fsrKOw2fzZnt6avSFMqhOpzzkGZ8QduXSf KkTvyGNYaW+P5wDgiqKZGyFE5W9yMTnkoRzs/4Ny+sDbNI9KaQc5hLa7KEkvldNebqN8aQHsJDI yFm3fpmfze2is6gxycMowOA== 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. Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 2681610d10d5..dc166392ba19 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -469,6 +470,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 @@ -495,6 +498,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); } @@ -788,6 +793,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, "(re-)init PHY with USB=3D%s and DP=3D%s (%u lanes) f= lipped=3D%s\n", + str_enabled_disabled(udphy->mode & UDPHY_MODE_USB), + str_enabled_disabled(udphy->mode & UDPHY_MODE_DP), + udphy->dp_lanes, str_yes_no(udphy->flip)); + rk_udphy_reset_assert_all(udphy); usleep_range(10000, 11000); =20 @@ -858,6 +868,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"); @@ -876,6 +888,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); } @@ -1359,8 +1372,10 @@ 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; + } =20 guard(mutex)(&udphy->mutex); =20 --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 A52B83B1009; Fri, 26 Jun 2026 21:02:21 +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=1782507743; cv=none; b=l/HakjtrczWfIhWTiT0A6b6Pw0WYWJMpZ1lfXPoRkbg40LShJCOEJLAJBPuAIFROHxGma8VATlGSz7AHpni5zsKIx2LUHIp48+HfQZYZjQ3R+fxMcGLGdfLBAOwixGTESmff/DuyW1eNEbfVlcMTpvJ1yfMU60bFgZCcOkW/6uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507743; c=relaxed/simple; bh=ATtRXr12sUyV+sDtMBt9l9EYiWar1IE41ewCHskMi7U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i/heUvgvHKGgCNx95YYMIl/3TxgZWWv8LlGz3iTg+jVeN2gCUOO3qNmFxC7uRgkd9m5XDDaHRrXK7iHq1sAS4kErW1wNfkZyjUPywIMcJDKrliGfP42fpGzxbu4rri6o1vS0g1+1U4T56h/T+m3NnUq9AspfNT+rGx15VH1mlmE= 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=Tc3p9qid; 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="Tc3p9qid" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507740; bh=ATtRXr12sUyV+sDtMBt9l9EYiWar1IE41ewCHskMi7U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Tc3p9qidsiXaHhlsAsUGqm3+SQOMTEZRuaqOheQEUPJt6Fvxlulo2+thFAfffSk+H GSPK/1kDftqz7aZupyXhZCSDgV5EWiR5H3Viknmo/tbj2eE3lYmel8s4L4LXGAReqE us0CEuWeN+Qusfv4LluTVtkQFVTFBp8OICMsY0joZOx5UKjLUX6eEKs394Y0pBWXwX xcXNWQ5wjti3u7rPKSRfWTcdTbpxBmGhAkUK7aHyugacFfANIO7GjKgc9aV6Xdchf5 LNco3G+l5otRYqc43oeNTHKA8CK7xFWTgB0SLsgzURiBmdRFXkkhK+Lropw9w2660F DWXH18BPD2SHA== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id F126717E02B5; Fri, 26 Jun 2026 23:02:19 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 34D9248006E; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:21 +0200 Subject: [PATCH v8 28/29] 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: <20260626-rockchip-usbdp-cleanup-v8-28-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1810; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=ATtRXr12sUyV+sDtMBt9l9EYiWar1IE41ewCHskMi7U=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yWvovxnmTaPOJYGGASoYc5MuFqRnbMi1 fXoFefcK6NKaIkCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPuclAAoJENju1/PI O/qa/gkP+wflq4C3m7xHPGiW803FGCNtuJN95iT1iNpHOyDsmROeouVXCN/zLL4u8amLogJFbe9 fwkGtA2Rz8gx3YVnckRheqLh4Cc9PnV5xX1Dz6Y9znzi5pv1BrDV1UnkWalKQW0W2a626b6C5N9 k1gQLltpHpAa+RqP/VrOxOfa3X6ZeVwCU2p8LSOypozO/bgGdiFV95pUY/408kbBbN+9KzTYAhG cHpTlI41BMqtXYMFgbM9KoDBTvZ3FKNJtcWhTYYttq4HE7IwRY6P+Gl8TNHnVNkXWXGlJGjqMTV kPOzY/9uDKdFfZq4kQLEfbRRrAUFoPFwe90xCK9NZTqhza7j00UoztYrcm4IhH81BBjQeXuxmh6 LFOUI/JZ5nhDz/nAYuvHoeau2fzo0p/5SpqP3N46ogg0bK0gAYH7D+Zz4P7uWXVzwHaKO+4Vg2J lTSlm4PZnpI7fTPwwDYsCEla/OBQa76TDir75nKM0EDJx1Kjej7T1SRMuCbDHKQ6E4RU22VrkOs MSQjX8v++Dugm9kPnukj5GSyakh4b/6Fvjrj5mlokpc1iRI1sfoSJ9OWd3STY60vDA+d5b28x1y xgRKJZElbZNBClQgzjacHBKmyl3HjvQ2R/AoL0tkgUtZnzaMxW0GoRN1ZGFRkaY3Mr9KxNWDfex s9woDzYYVHyYc4g0TVv4tqw== 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") Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index dc166392ba19..7c8b9eaaf352 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1033,8 +1033,8 @@ 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) --=20 2.53.0 From nobody Tue Jun 30 10:35:46 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 CC07A3C4163; Fri, 26 Jun 2026 20:55:10 +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=1782507313; cv=none; b=P6G48CNyeZP++mkS0JMrvepJkZCIdhIhK+oRG1d988Jl/QO3KnNa30whi9vQxZN31Xd9pCqI7+hwe/z7WnFl9lp2k52/4TvtK5ZCOJKmw4cjPsVKPFG8p10gc5UFElOiIzV6cqY8HO/jw1gwc35i6ODqNawsFFyyGUYmgSDWi1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782507313; c=relaxed/simple; bh=3n2dLm8cwAAZVSuTNSiRXrkEGCT5P2BhFUYLouYMLq4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JmtFCB3ozsEBhTOpgWZvJe3jSBQJExAHbDR5XFE95dhapnmpjnM8iE7gx6Od1QNcfCJW8IdklYPs2EFuX967EgvkD0c8QILt04XW3m70d4ZLjMWY3yDTsnvzHeoHAHCVqsNIoA/4SM5nkaAlNR3CGuRKLi8/MNqq0Wh5IqCZ6uE= 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=GXFM6Mol; 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="GXFM6Mol" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1782507303; bh=3n2dLm8cwAAZVSuTNSiRXrkEGCT5P2BhFUYLouYMLq4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GXFM6MolvEo36/TYaxuxg66OP1nhA72Tc+vqDn1yUxV2oAX6ZbWGk+WCi0W9seytd TzHQrEAttyyr8STqRyvarkCW387lV5BVcZP2W8HKiZ2MoX5sWE6+NajNw/uHY33w6b XQJ3CpABEbVBtCWdYp4lh5dhetm7uJfN/0diODW11nPQjnG5l4luvTYcSThLpKpQoG 9gAXudJftfohXFAKqjZeQyQFTIdgfSM48rLPQGn6Rh+ypi7V8WoRilFH3V2cxJO/kj 7d172O6piX3h23TwcZ0li8/hpUCEslk//7iP2BdlNXdXmW0zrHZo28Hs++gXMemsRq 1pb+0e3gqT0GQ== 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)) (No client certificate requested) (Authenticated sender: sre) by bali.collaboradmins.com (Postfix) with ESMTPSA id 7179B17E35CD; Fri, 26 Jun 2026 22:55:03 +0200 (CEST) Received: by jupiter.universe (Postfix, from userid 1000) id 3654248006F; Fri, 26 Jun 2026 22:55:02 +0200 (CEST) From: Sebastian Reichel Date: Fri, 26 Jun 2026 22:55:22 +0200 Subject: [PATCH v8 29/29] phy: rockchip: usbdp: Disable USB3 on probe 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: <20260626-rockchip-usbdp-cleanup-v8-29-47f682987895@collabora.com> References: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> In-Reply-To: <20260626-rockchip-usbdp-cleanup-v8-0-47f682987895@collabora.com> To: Vinod Koul , Neil Armstrong , Heiko Stuebner , Frank Wang , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Andy Yan , Dmitry Baryshkov , Yubing Zhang , Alexey Charkov , 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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1753; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=3n2dLm8cwAAZVSuTNSiRXrkEGCT5P2BhFUYLouYMLq4=; b=owJ4nAFtApL9kA0DAAoB2O7X88g7+poByyZiAGo+5yafBmu9Crfrt5VjEWfUAOd76vUFSXmvr b4Vb6dDCvzOO4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJqPucmAAoJENju1/PI O/qaLUgP/R4ED4RcxqTiOKyps2g+s/jwkJSFwHSjm6ynjiY4TZIHeJH6JVtf28ONhnGZKbfmXrU 0E5lPKmGLdtSQIRTWcWEfzqWRXIkr6SUsSCfVfp0wIga+mhShZ8z/zf5Nn/GNgF4ZcyYu6TLZTs l95atA67334rkFoBgUaM4uLr4pIPQ1S/a6wz0u/e/62BOUmBGnJUdNrohm8FhQ5Q1D8+8FglL3R S7L5K8kAT4FqZiulkMfG9EJXO34oHsAdTyern8isY30VjDLbXkur9sqlPa116h1uf2OOPnpIpYp oMjWEh6dONUTIhLlE2n0O86HywZnSO8cXM00zDTo28BXvX+M3LcYuUwgES+uoQ3tY9ODgWxPtaF SMW1AZsiY39WUOmxk7bwRGWwQWuJUx10bDcEZGIGp4FO/o1H/jD+Z0cPhzjpuT/mPvJwlyVtvDA dVARymrq1nQgxT8XDWOp5p6n1IpSiTCoNTUDji90mXv3VwjgJBx4A7f8xRIFRiT5NzAf9qD3dHK 9+IlhJVcp+EeNVCVkaOxgjrREGG2kDVN2wl0miitooM3SFD6Bhyvk1Q3dVlH/3hILiT0uDUJHja aHObhNZmk0GrHi58T0nBuEzLiSs5g3mk2O71on5dIVUcM7E3CQtyOW82llv+65t0kabHaBZnHVC N57yUkSexPY8RyUZbNCUpBw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Disable USB3 support during probe, so that the driver always starts with a clean state. With this it no longer makes sense to use -EPROBE_DEFER for cmn ana lcpll lock timeouts afterwards. This error code should only appear during probe and the PHY initialization function is also being called at normal runtime. Signed-off-by: Sebastian Reichel --- drivers/phy/rockchip/phy-rockchip-usbdp.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockch= ip/phy-rockchip-usbdp.c index 7c8b9eaaf352..a25cce0b7337 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -755,17 +755,7 @@ static int rk_udphy_status_check(struct rk_udphy *udph= y) (val & CMN_ANA_LCPLL_LOCK_DONE), 200, 100000); if (ret) { dev_err(udphy->dev, "cmn ana lcpll lock timeout\n"); - /* - * If earlier software (U-Boot) enabled USB once already - * the PLL may have problems locking on the first try. - * It will be successful on the second try, so for the - * time being a -EPROBE_DEFER will solve the issue. - * - * This requires further investigation to understand the - * root cause, especially considering that the driver is - * asserting all reset lines at probe time. - */ - return -EPROBE_DEFER; + return ret; } =20 if (!udphy->flip) { @@ -962,6 +952,8 @@ static int rk_udphy_get_initial_status(struct rk_udphy = *udphy) rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigge= r, false); } =20 + rk_udphy_u3_port_disable(udphy, true); + exit: rk_udphy_disable(udphy); =20 --=20 2.53.0