From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 68B89345EBE for ; Mon, 3 Aug 2026 03:15:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726940; cv=none; b=PhtoKv0ZFBF9mJdPkHo53vuXkL6Gvv2Br7dvI9meUxcLN/4u/V0q7OOJbH/F68z0JB8033DT0p2kTBWjXZalTSVw/315t0fiGwUrqFigvWwoQkxBu4YY5rpHiG+MovT029LagAkmsyAf7jteuVuoGKNEfZOOESH5PPmgv8dPw1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726940; c=relaxed/simple; bh=Ms8xCSaOs/jykWnpXTey6hmewHvpI4F5jGwv7/LeqII=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=f+iGCh5bbsQBuz5t8UR3oG/iMhe0EWzkbd8Bgr3Pwo/cHdVFe18pTgPkNaLpKZl9EM2xe2WxyzBdduTo74zqZDPWeMVRDixkk7zD9Qm7TzSD08T2v4kOkVrCZpSOis2x29zs2nNoBvG1Ato8ib2WlxcbPriuUipbFMVmVR2clsU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=CMFxrHhT; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kdPe/C21; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="CMFxrHhT"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kdPe/C21" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LWTFT3301136 for ; Mon, 3 Aug 2026 03:15:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Yj9yTw9oRgk ITJCjIE93n/SQASuWUbkhzKAsAeSQGow=; b=CMFxrHhTxZ1G42ZEnq+Jnl6Fqa+ LFg6koyCTJSQBcKGZ9kksVwzKBXqqFBq4fkYR0V5fHb0PzqVHehMgoPPwm1e5Y9l nZtrVlpGeBZOoSxCJ3USfHV4Vrpcb2BXM3iH2635tICPWLG5GA3p7/VcZ1zi6fL0 uFYdMfysYMVf8a/XfylRqAay2Hv+HCQ7zbWssTpwoCveE4K66e+iIf3g1fkVVUri O0kUHpkSRhtUIAXFbqM0eveXN/7r7B9KdCJtudrgaTU+FrxEz7K1k8eBMgs7GCEu mT79P28eBxEKlGq010ckHKBqiOgvfT4pb3lBm8RcbtXQcDeFLHJ4YBxDgoA== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8qpv8uq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:38 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2caf4173b1cso61904235ad.3 for ; Sun, 02 Aug 2026 20:15:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726938; x=1786331738; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Yj9yTw9oRgkITJCjIE93n/SQASuWUbkhzKAsAeSQGow=; b=kdPe/C21AdDuXLtSzd9dkZeFCjXDJHxtxET+aq24JOg3m5hxqTCeFZ4oztNIlerPsP fRDIRRwjdWCqr89X4ESTZdea7TzpvhFbbVYYrNVQ3ezOePgHV9GyJACljwGB02puLXa8 a6zEB65Qiv6wd39oKWfHavdsYQAURXH2ABn1tjyACSGUBLQY77WpYRPivcj43qsSbf6P LKy/o8sx1ssQQZDu9P/dfquf53T56Ym6uN3ALcThG8qBsvzuJ+nL1q6Yr34MEZZEfvR7 BwTZ+5aS1njEqxqV718sd4pRTRjgo4CAlFiEQDiJcnKtNxju2YVxqFFqmoJwzKguQsen GbIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726938; x=1786331738; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Yj9yTw9oRgkITJCjIE93n/SQASuWUbkhzKAsAeSQGow=; b=UvlJBb4nMkaWgQv2Y/8nER4Y8K03Q+GERPzXff55MD7/l5Lses+wJpw8RmBERlgebY 0UKMdxm2sMElEjHAANoY0+ROGrQtwyuvSh2FL7qA5ZtsgoEFiHfQTTlzGsS9qVoNRj35 ziAB9xCi7h8yM9ucxylyp7zqlOHqFtPs+4Y/KdkJB6R2NRgRF07HOghnM5qGm8Zx4LCf 6zKuNrxt1+pfXKadBwl4G8itoaurmDhOUo28jJD7/VtJAWJh/5nwhzKTlZSMI5KNuJoB gD7LqqxkLZnQ7npypGpG0hQZZ8dVqDhojPz1eln6VC+70BAbqzeE1kYoLqXNMhgcnqln WXYA== X-Forwarded-Encrypted: i=1; AHgh+RpHdczCUXYrONodV1eNlQ9sYAwJ06BZODRYpr4x3PgSbx9dXe06tQQtinVsnku0ewKvKRjaPf3COMUGWwk=@vger.kernel.org X-Gm-Message-State: AOJu0Yws2IKPYZDnBZHEKBbzO7iHsh2K2cRq9Onln2kz4OjBo/BiSrA+ fllgxXzMoxG7g7kCrjk3y6PeYBSLEDXGw+MGgkFRlE17ts0mGJ6ZDx968hKDP5VHJUFauel5q5R InRZBVWRTMmPna/nM6hZ5nDLWxp4EA6oh6AYQZZqBF+5CMWr4PuDmvP5+sKXJXBE3sYc= X-Gm-Gg: AR+sD13UJxY2FzZfaLj2BhbFHyVMVXQBMwuQeKT7hKPeFWmIJq2rGPv005SGVV3jSuz t0H7CWyoY3rN1m0Oag6PtY8Ldizw7FZ7znp44FWQ3BP8RcEPkccvINtBA9K+i2FNJghmQltCBeu 1icQWTc1IbxhZb1ayEKlXn446LDi+2un6I/ZnQ08fEu030HEnWtdH28aXuXJ2zh8W6vuqJQIj66 JccP4UEl1/og6Aeusyf5KZ5tWOX1BEv7vM5jwt415O87do4Ly9gMw5kcznA79r3lilFkDSxB6Gd OV/dmFSwpvBiCWWW11VAnX1TUJOaME7J03aht2ezTgy1o6kMJqe4xl41n6eicbBhMpu7zmt80Av +SbQjx2NvxKcbY3BnAzUSx0WeFoSoWZZAmJwi+HTKD9mnNdjdVzOBfQ== X-Received: by 2002:a05:6a21:7a82:b0:3c3:9557:3b56 with SMTP id adf61e73a8af0-3c92a992c4bmr8639760637.72.1785726937680; Sun, 02 Aug 2026 20:15:37 -0700 (PDT) X-Received: by 2002:a05:6a21:7a82:b0:3c3:9557:3b56 with SMTP id adf61e73a8af0-3c92a992c4bmr8639735637.72.1785726937285; Sun, 02 Aug 2026 20:15:37 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:36 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/9] dt-bindings: soc: qcom: eud: Add per-path child nodes for UTMI routing Date: Sun, 2 Aug 2026 20:15:26 -0700 Message-Id: <20260803031534.2942628-2-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX4Grc7ln23TN8 VbQF7wOhuLjbWJs2k0AE1n14NI6FN7F4u+l5YCy519cbuw2E9DOKLjfEMoDIEwWINahbjbD04oe MZSVuiwaHKYV6bWUslnQpiNikMW0pj75D4iGc2rN53iGAIUczP1UMZhoXXWbdGoQAj065VXJPP3 tyNdVTx/bCLxaA0vg1eZA3dtgRXiSBtHBZx8MQDhEgcJvoPG7NnwkkRUoBrXjyHo9ajNd5wZiDk tCHnXsWWzo1vlvKxjsYsp9Xn0kKQAwlToxd0Yjnm4v6l+xoGtjfgxjDr637cHHSuRbKJVR1esPc /RRtH44XUiYKjfZYgtrNUHK6RfoSlnvnfBT79hDKR3JlilhRwX9P6F7RUjwr9hv1wFdmyO7JPRT O3fkLlpFZIAc8JlaSQsiJR8Izbs1rNagFylo/6ZAGML4d4B5wWtXzuzLbsSeIf5Mycyis++74HI eJwjGqrKN2GXAKhY3cQ== X-Proofpoint-GUID: GBDHULfdfrP89vKFudQOzQFrcI3v5TNW X-Authority-Analysis: v=2.4 cv=MpViLWae c=1 sm=1 tr=0 ts=6a7007da cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=RJ9lep_nkaVUh_m6BXgA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-ORIG-GUID: GBDHULfdfrP89vKFudQOzQFrcI3v5TNW X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfXw5huw5leEi++ TLhHCkFTKjux6Suvz8fE/fWiKQWXVwVwO6ZMkGJkkNM+SJ95gSSLY+yxVaL0rmX9UA3eHuhFItR YmgjixjT9Q2wGR3+NYTTDyi+wl8sIJA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1011 phishscore=0 malwarescore=0 spamscore=0 adultscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" The Qualcomm Embedded USB Debugger (EUD) can intercept one or two High-Speed UTMI paths depending on the SoC. For example, SC7280 supports EUD on the primary UTMI path only, while SM8350 supports EUD on both primary and secondary UTMI paths. Each UTMI path connects an independent USB controller/connector pair and forms its own role-switch domain. EUD routes traffic based on USB role. In device role the debug hub is inserted, while in host role it is bypassed. The existing binding models EUD using a flattened ports representation. While sufficient for fixed device-role configurations, it cannot naturally associate a controller, connector, and role switch with a specific EUD-routable path. This is problematic for role-switch capable ports and becomes more pronounced on SoCs with multiple paths. In such cases, each path forms an independent role-switch domain and requires per-path role awareness. Model each UTMI path as a separate child node with its own OF graph. Add an SM8350 compatible for dual-path EUD topologies while retaining the legacy ports representation for backward compatibility. Signed-off-by: Elson Serrao Reviewed-by: Krzysztof Kozlowski --- .../bindings/soc/qcom/qcom,eud.yaml | 128 +++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml b/Doc= umentation/devicetree/bindings/soc/qcom/qcom,eud.yaml index 84218636c0d8..6fef958487c8 100644 --- a/Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml @@ -18,6 +18,7 @@ properties: items: - enum: - qcom,sc7280-eud + - qcom,sm8350-eud - const: qcom,eud =20 reg: @@ -45,10 +46,82 @@ properties: $ref: /schemas/graph.yaml#/properties/port description: This port is to be attached to the type C connector. =20 + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + +patternProperties: + "^eud-path@[0-1]$": + type: object + description: + Represents one High-Speed UTMI path that EUD intercepts. Use eud-pat= h nodes + to associate role-switching behavior with specific port connections,= allowing + EUD to manage role transitions independently for each UTMI path. + + properties: + reg: + maxItems: 1 + description: Path number + + usb-role-switch: + type: boolean + description: + Indicates that EUD relays USB role-switch events for this path a= nd + performs role-dependent UTMI routing accordingly. In device role, + the EUD hub is inserted into this path to enable debug + functionality. In host role, the EUD hub is bypassed and UTMI + traffic flows directly between the PHY and the USB controller. + + ports: + $ref: /schemas/graph.yaml#/properties/ports + description: + These ports are to be attached to the endpoint of the USB contro= ller node + and USB connector node. + + properties: + port@0: + $ref: /schemas/graph.yaml#/properties/port + description: This port is to be attached to the USB controller. + + port@1: + $ref: /schemas/graph.yaml#/properties/port + description: This port is to be attached to the USB connector. + + required: + - reg + - ports + + additionalProperties: false + required: - compatible - reg - - ports + +oneOf: + - required: + - ports + - allOf: + - if: + properties: + compatible: + contains: + const: qcom,sc7280-eud + then: + required: + - eud-path@0 + properties: + eud-path@1: false + - if: + properties: + compatible: + contains: + const: qcom,sm8350-eud + then: + required: + - eud-path@0 + - eud-path@1 =20 additionalProperties: false =20 @@ -77,3 +150,56 @@ examples: }; }; }; + - | + eud@88e0000 { + compatible =3D "qcom,sm8350-eud", "qcom,eud"; + reg =3D <0x88e0000 0x2000>, + <0x88e2000 0x1000>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + eud-path@0 { + reg =3D <0>; + usb-role-switch; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + port@0 { + reg =3D <0>; + eud_usb0: endpoint { + remote-endpoint =3D <&usb_1_dwc3_hs>; + }; + }; + + port@1 { + reg =3D <1>; + eud_con0: endpoint { + remote-endpoint =3D <&pmic_glink_hs_in>; + }; + }; + }; + }; + + eud-path@1 { + reg =3D <1>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + port@0 { + reg =3D <0>; + eud_usb1: endpoint { + remote-endpoint =3D <&usb_2_dwc3_hs>; + }; + }; + + port@1 { + reg =3D <1>; + eud_con1: endpoint { + remote-endpoint =3D <&conn_2_hs_in>; + }; + }; + }; + }; + }; --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 316AB34750F for ; Mon, 3 Aug 2026 03:15:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726942; cv=none; b=UPowt3fQbjREpkp3xu5CwgsRAuWaMvWMLl6Aa3L2ApGIl87ByiRPizrl2inEGjOtzGyLjjVOwbM0kgtMC2K5VS5bPFT1fXfBee9M3xmMasgk5nhf4KxKwLNPIjM/73mwrHGs04ThTel3dJD8isXScaVDlwHk30UOhKYPPtgtorg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726942; c=relaxed/simple; bh=t/IOKpp8GUwDRLwyyvCcudNrEhONnWVPtje8/6Ie4I0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n0ATvOKwnuhzadXrHJN61tdGPRVf8Lii2J4ZZ5DbG4uXlR6+vDQJelf6f0XKgWbLIqB5CBL+wqW3REmyVpAlPj+SEbc1J8kj+407n7GjoFOSmVuTLflDHTHfYB5IxvArvk9OKZv43VlHlRg2RiZtULCoHLqUKhtZaZJnnNLrlno= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Gl2ElXTb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RDqClefx; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Gl2ElXTb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RDqClefx" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LWPWJ3961171 for ; Mon, 3 Aug 2026 03:15:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=pWnZBTr/2nG NSYHs6XfsEPFm8fpS+X1zNeHDN3jDRwE=; b=Gl2ElXTb1rqwr5yVfvLzKuB3qr1 50BRwGJjDJG9YAdJQGKdfH0aYesuaHj5kLmtOKQ1VRQvGWvjRFjJtynkswXgYBgI FF6cLnIjSvSwdkC/H6gyElDMRWdWz38kUT3nxMpVyVliu5WyfIzGKtmNEGE3UiSB lkwmOkKojYNKmfwSkpMTgM5gLO7wnlfP2aoppxVxehqgCapharji3KVbZQ/9D+CT uDrS/EiR9oFJCcxe/Dfp4CBwG6uGYtBqyr9/PboXMsHEBCQ3CH0l8rI2deJ737Vy UZG4ynPw4DA38MUHzZIRaLrIdQImW7qYfxzFKJnx9fEjVz8oNRYb96yhBvA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ft9fah2s8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:39 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb48f41343aso2857064a12.1 for ; Sun, 02 Aug 2026 20:15:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726939; x=1786331739; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pWnZBTr/2nGNSYHs6XfsEPFm8fpS+X1zNeHDN3jDRwE=; b=RDqClefxOEhiTow+hAuF8u+wjtJIHnFqVtD9KR4MznIK6pXzJ6vEoYfQ/y78Wm+acE dSoFOmPA+/TJkRzkzLI5UambJtV3P0/2tNoQmyANWpTZueWDCMmFmqqsxa/n1FgsfBRZ MNScEjv9nae4rGDQpQDOlBIelMK0fvQloO5RZHNZxeV+NlhI147+GgssO9fc8fI3oLmU riHU/+lDDrkwE9sd+Ji1DA+mpjhNEpeil7RtLJjWn6kOzI5gnvY2WktguHkpA1aGcZRT F0TDuVp6VZclE4wTuFMZjaQWjP260QUmCxebYdqwNO320nMTzybApP+hNIzf3CVmcL5o ckPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726939; x=1786331739; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=pWnZBTr/2nGNSYHs6XfsEPFm8fpS+X1zNeHDN3jDRwE=; b=Aq1k55UiMJTx1bQ4JZihMF3Y/fzpVMMG04prZRpcWUaahDOZDSjES/BZn30iT73gwp cZy27JipY6D5g4Q0jM5rybO+v7V1aoG7Bl3Xqow3i9tG143/hh2Qg/GBZdmFjxvX8IfH 2A+t+13n7y67z0qLL+2ZHT/7L0/rhHvG7w8ePgptc4OZQlqnBnj4ktm5+vAO1cvJQSMR vVPiQS5JV4VFwMDmd+LLLqwa7EO05Qc8wjmkdT4pZgjKYs6t1cmlMnBk72UW04UYYuHc vtMsVfSpXwht7fO4SN8aLmZJhCkDJeMOG5coy2k8yWzkfG4i3v7ExOIEZ7Qb8SJBtBfh BEhg== X-Forwarded-Encrypted: i=1; AHgh+RpWpzhJYfo1xCVewm1Amk/e13GGQ1YUXAJi1x3qiiwQWaELlZBF5pBVgqPZCACQQAIXobcexlRVWMKaTEM=@vger.kernel.org X-Gm-Message-State: AOJu0YyyAnUjWuRv+m50cjsFjwFMgQ/s0NPmU+/TEadaBm5/SsY+eqXa ze3JSP9ncTNfVNnDHAsS57Y+WeUxMFsFlZuVQ4OOjvtnPVxOs6YW23l6aTERPnhm2o5N9NrcR/1 qpKX1VHVsj+RYJN2UWyFomEk+4zBTPJ9+xhftD3L9vKPpaawI78V1gTet77razrH4pZI= X-Gm-Gg: AR+sD10Ehd/ajaIJOVcDaw1Z2cZsfZEQjYNKaGFG+CXDBlA/fM5JtFslk5ZXXlW7MF6 HLsvEfvN93YXekG0YRVo5fBw6TeSBZ5LHTAjwmbDkeqxNOCY/tTQoe81rnA236EtvghO1nYPBV5 o7MoUWDeCIM6rVrbw79ZmeGy8ZN6asy7lwnxay4FFAJxKApJrBFWX6PX95W/TW1vv9mavFfyrd1 XxxWYKMcslfpOj8kRI+6tO5FvD9xYSGeWOJEUt+GXfSXxQLe5N4LwTDpkbtepHR7HsFT7Lvo+pS imIaUkNKfGZTlQbuKMgoS4u7KmH1aZZn1N+E9JH16nFYXZ4yxWz757P67Xjhug/n8RcRP6UBxSP i+NT2eMf+knmGlGWBKMqApdtLGKf1FrkYlpgI9v1buAfAUdgNxY04Mg== X-Received: by 2002:a05:6a20:7f89:b0:3c4:320a:737 with SMTP id adf61e73a8af0-3c91a7b7fadmr10394232637.16.1785726938662; Sun, 02 Aug 2026 20:15:38 -0700 (PDT) X-Received: by 2002:a05:6a20:7f89:b0:3c4:320a:737 with SMTP id adf61e73a8af0-3c91a7b7fadmr10394195637.16.1785726938219; Sun, 02 Aug 2026 20:15:38 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:37 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio Subject: [PATCH v5 2/9] usb: misc: qcom_eud: add sysfs attribute for port selection Date: Sun, 2 Aug 2026 20:15:27 -0700 Message-Id: <20260803031534.2942628-3-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=PZPPQChd c=1 sm=1 tr=0 ts=6a7007db cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=qXh0dugIJu6lbCvlF8UA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: mnvE_qOakWyVIHG6rx3mGqQ9roVBjklw X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX2jZ9cu/gK2cb ZGnASIZ8sBjXsyBgOUDeIPy/ZNRNbhUFWdnPLxFA54mHnyBjq39zC7m1CFlqet+S3Cpepu69axn 7Wmu5hoy/9F0PQEruRcq0NkVb0ZYJj4= X-Proofpoint-ORIG-GUID: mnvE_qOakWyVIHG6rx3mGqQ9roVBjklw X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX1Ed6D+itkzAw owQ8BIC+ZzfseIUAXwgnASxWfHO8eFWSnCl8fEimM3N0divyiOx4VBOPt9lYbfj0890g9Xtem81 9/wkbRdznw3hEj5ey3NhjqfnlfCkuG/EBtxFNxGpTpFzXEM/aESe4XGVC30SEnYcC1AqNUvpHqr sxqzuU1h1u+JpFWeIl276SKHI6ANcyHxlnvkL6YA45+giNp3LecbAvPawRs5Ddk39YQ+1YFHPI+ ak2UXNSqMRpHM/kILwu+P5P8a0bA320/z0e3Vckfl4z+PeqARhH1sXMeEB2zV0R76yil1WuPOft TU7icyjx9/ZdUjvxY/WZ+rpSaNumSDUXXqO9gfGqdAD3zyrsbMbA59qTsqlOFJ73tuZkcqDEFQN P9Yr3Ou6NxpCcKVr+TA/dZp9SjDE3R4GEG7c30j0Za79Bo2YkUSW+4e9vh3BgNwRT169fR36you 4uJRyebJsNSZzgXsuKA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 malwarescore=0 impostorscore=0 bulkscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" EUD can be mapped to either the primary USB port or the secondary USB port depending on the value of the EUD_PORT_SEL register. Add a 'port' sysfs attribute to allow userspace to select which port EUD should operate on and update the ABI documentation. This is needed for systems with dual USB ports where EUD needs to be accessible on either port depending on the system configuration and use case. Signed-off-by: Elson Serrao Reviewed-by: Peter Chen Reviewed-by: Konrad Dybcio --- Documentation/ABI/testing/sysfs-driver-eud | 18 ++++++++++ drivers/usb/misc/qcom_eud.c | 39 ++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-driver-eud b/Documentation/ABI= /testing/sysfs-driver-eud index 2bab0db2d2f0..fb927a003596 100644 --- a/Documentation/ABI/testing/sysfs-driver-eud +++ b/Documentation/ABI/testing/sysfs-driver-eud @@ -7,3 +7,21 @@ Description: EUD based on a 1 or a 0 value. By enabling EUD, the user is able to activate the mini-usb hub of EUD for debug and trace capabilities. + +What: /sys/bus/platform/drivers/qcom_eud/.../port +Date: January 2026 +Contact: Elson Serrao +Description: + Selects which USB port the Embedded USB Debugger (EUD) + is mapped to on platforms providing multiple High-Speed + USB ports. + + Valid values: + primary - Primary USB port + secondary - Secondary USB port + + Writing any other value returns -EINVAL. + + The attribute is writable only while EUD is disabled. + Writing it while EUD is enabled returns -EBUSY. Reading + the attribute returns the currently selected USB port. diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 926419ca560f..25a6a8f110ec 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -23,14 +23,22 @@ #define EUD_REG_VBUS_INT_CLR 0x0080 #define EUD_REG_CSR_EUD_EN 0x1014 #define EUD_REG_SW_ATTACH_DET 0x1018 +#define EUD_REG_PORT_SEL 0x1028 #define EUD_REG_EUD_EN2 0x0000 =20 +#define EUD_MAX_PORTS 2 + #define EUD_ENABLE BIT(0) #define EUD_INT_PET_EUD BIT(0) #define EUD_INT_VBUS BIT(2) #define EUD_INT_SAFE_MODE BIT(4) #define EUD_INT_ALL (EUD_INT_VBUS | EUD_INT_SAFE_MODE) =20 +static const char * const eud_port_names[] =3D { + "primary", + "secondary", +}; + struct eud_chip { struct device *dev; struct usb_role_switch *role_sw; @@ -40,6 +48,7 @@ struct eud_chip { int irq; bool enabled; bool usb_attached; + u8 port_idx; }; =20 static int enable_eud(struct eud_chip *priv) @@ -104,8 +113,38 @@ static ssize_t enable_store(struct device *dev, =20 static DEVICE_ATTR_RW(enable); =20 +static ssize_t port_show(struct device *dev, struct device_attribute *attr= , char *buf) +{ + struct eud_chip *chip =3D dev_get_drvdata(dev); + + return sysfs_emit(buf, "%s\n", eud_port_names[chip->port_idx]); +} + +static ssize_t port_store(struct device *dev, struct device_attribute *att= r, + const char *buf, size_t count) +{ + struct eud_chip *chip =3D dev_get_drvdata(dev); + int port; + + port =3D sysfs_match_string(eud_port_names, buf); + if (port < 0) + return port; + + /* Port selection must be done before enabling EUD */ + if (chip->enabled) + return -EBUSY; + + writel(port, chip->base + EUD_REG_PORT_SEL); + chip->port_idx =3D port; + + return count; +} + +static DEVICE_ATTR_RW(port); + static struct attribute *eud_attrs[] =3D { &dev_attr_enable.attr, + &dev_attr_port.attr, NULL, }; ATTRIBUTE_GROUPS(eud); --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 70A3C346A1D for ; Mon, 3 Aug 2026 03:15:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726945; cv=none; b=Zfova323uaGAKzTaFaoGwcpFdTstr8lrCzL5SgKzV0cYTyZCL1UwxpeyrYoo531K/SSp1dh7ftDY3aYF4aOV49Q0k19KwGiD+tx0q+IFFOD5XE4h2tV6mX3l35RYcslpJLfd7JmpocTMU1uYhuZO9/W/bnES8OfBmPKmPmHewTA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726945; c=relaxed/simple; bh=f8lOALFAxjQ2jaRYRc4yKyprEP9GFjCI3ftFRnd1wDg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aHrr8htNI1eLSLBFapCTARioBsniDWf8t/ZHEG38WSa3ch72lCY4j1jgg1OWVs1g7FAYJs/A6kSgwUJK0j5Kly/N5wad38xGjgm0hui9lJsot3jmRr8IUbp3USnmo8DCOAr8hV9BtgBo59/hOvSkTszLC/RfJ3W0Ic+Vj7budLI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=EFR+hRqe; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=esIkRTNT; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="EFR+hRqe"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="esIkRTNT" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LVv4a2770083 for ; Mon, 3 Aug 2026 03:15:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=7/Den6QuSom M3UQRJd3UfPRQXa9qYE/PHhFp+/XsXdQ=; b=EFR+hRqeLSG8hgqjGlCJBpZrPi7 BsPJ1EQfG0prHmli8R8iUyQQSo9P/ZI9uBmus/7Gxz/PxHJ8pM5Apc6xZvpTY3Uj TYkUWauwRyqdWyhj/QtSZiOpjE4KSa4gQisgInRxjFTlWUwDuqV8P3eZPpL9FUAA u7omjWycfYHCGgShV62QFSFzMEtZRQ6K64eubGMmtqCONs7gjSve39hMCgVUGczn bOrLBM9zw0JDIRPNCVxmJRiIlaE2z/LJh2mQziJAxf348pYkBbJGuE0SjN0M2+ak FzKZEbXPYhEiAnwC9YIKtnsoMOuoNgvKV5yiJoele/pE2cTDJnbqOQ1kSIg== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8r6ma9r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:41 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38fa7b09921so5062559a91.1 for ; Sun, 02 Aug 2026 20:15:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726940; x=1786331740; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7/Den6QuSomM3UQRJd3UfPRQXa9qYE/PHhFp+/XsXdQ=; b=esIkRTNT8yMhTEgDQP8wRF3Kw4qrFumpeFKoZpOBMeHBuxRtqXoLDBYb7AYM8EVg4y f3W5vHUIiUhurXz6wRE160U11nGg0572NcFJgkpKlTjDYgf+Z0lvLGGpXWDDG58J79ix O8An3wBnH0eFG1hzNYzQHfOhvcxavJrX4LGZpIfns1T9eq/SYNI20TRO2zw5klUydN8E FzYTGEV1LEqCjgpUt/KZ6Au6Pi/2mTBsTfm4lU/knrp7qq0ysvZ2/D0bjK3QVZozx2il /9GMS/B0Ww4XpKEm+6L2IGMCr3TWxCrSVenSw8xPwn6xkQhceOE9flwqmuwgDnDFK0Bv AKeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726940; x=1786331740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7/Den6QuSomM3UQRJd3UfPRQXa9qYE/PHhFp+/XsXdQ=; b=FZLrTXUpD6RG7ia6GKmopJU8BjngNHi7B5fFnLTArl4P+tV9abKus7Hn0tkFWUtWzT NenI+zhonxyrgH4L7tEV79KU2G16FLQdyHkUgag17Ixsl9PkL4ZprV+HBm6i7R7x+ev3 vvIWAmWfmhUvo4HC8b5dosgU+u0mh1eWy4cQZDW8AGTJsMeUj354ysIumomL5NPbw6mm rqoqHiNkABk+MXhSIChXxbcxkGlelVvlbUV4gJjwdHlz3Cgu0Citiq/MK+GWbQSs1hwY 4oJcmb2x4GZeUFj62Z4F+kzgBYu4BFtkymO2SCwSTSQsNUfoXZDMznKW4vtwK6CMyBgh fjDA== X-Forwarded-Encrypted: i=1; AHgh+Rq11I6DS/1P6mI3COiFqUmfB0f2Spj4dApI6yZG7lG2H0/NZmJos6V0Omft10qSDRt/VSdBjIlZEXh7CvE=@vger.kernel.org X-Gm-Message-State: AOJu0YxauS5uf+fZ0oVbwQGN/8cJqJ7ort8oiYLzPJ0k7dc2Bv2AX1Ed yy10SQgMcfn+oU0bbRQd0YJek0pYstJ/25oTYZas/HH+dHRX3NY4Sqf2vlM2qHnp5Fd0XYjZdTZ N3nS+MugOF4vXjCG+i5PVO8QZokqpT17FmvPnS9u2jLZcQZPun/Mc0LNVJyzKdE4bGg72RUpNHp Q= X-Gm-Gg: AR+sD13eCLPAP9VPJ9y6FRxzA+urWzrz12Mg1hhqwJ1/hD1lTOHEg0482vTClUSg/LW 4okfNaLJqjnG527acBOFq4giZNmVi2pOLYX15D6N7mOAj09pOgwgKel3aGTKU5bJIl24Ha3vcyt r9eoCAM4x5V4mY84Nx+oCjXjYjJ3KjLUpGYwoO7EkTQnEkZ37eBwMsmku3fM6O7oAvhpvKps3fQ K+I3Xa2k0UNfXzM8CjPS78N/0VB/VbORj9lw9NcLEb1pBPYHyIqagRf/fKJszqEKiofu3n3+eHk wBqTFsqThkeIdzl+47XkUTY1OrzW7Y/MIAINgbpuG13xg6NHv2bK2H0ESSXN48UxLplmng6Jk2f aWw3AQ8w+YXlaeskjFKIrB3GkMEBzP8Jzyu19hOeaA3+R11xa5AfdnQ== X-Received: by 2002:a05:6a20:5491:b0:3b3:1c7b:ffb with SMTP id adf61e73a8af0-3c92a7c8c79mr7841289637.34.1785726940042; Sun, 02 Aug 2026 20:15:40 -0700 (PDT) X-Received: by 2002:a05:6a20:5491:b0:3b3:1c7b:ffb with SMTP id adf61e73a8af0-3c92a7c8c79mr7841259637.34.1785726939570; Sun, 02 Aug 2026 20:15:39 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:38 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/9] usb: misc: qcom_eud: add per-path High-Speed PHY control Date: Sun, 2 Aug 2026 20:15:28 -0700 Message-Id: <20260803031534.2942628-4-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX0tUJTGMLlyvm 0H30LbpGGw6UhWp2zJ5ormahjZl1YvHf4GHggWdGCmjyCKXqY6Xk5f3bjlq9MA0SUJwgLTJg12U tmQ70U+uqciCS+GBwCwEVFCIEq9qpvk= X-Proofpoint-GUID: rf6_zSSrUdcNnysQKIhr0oN_VJsvPOHZ X-Proofpoint-ORIG-GUID: rf6_zSSrUdcNnysQKIhr0oN_VJsvPOHZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX5Cz5yrnL3Hep HJYz0QI5nak3EhrLFnllY6xVoV/x736JrlItVcCUyenfys7yAhfDLcvylDRXHZi6BLMQhgXb5Ts VSBBqkqXKxc8uS0Xo3y8hPDtf/StjH7A9ICdABnX7VW35egNE8Wer3QSNuB/NxNanXQVsQ8ULej E2ZLSp1nqiswhoXEgG81AB7X8k2FO3F/Zrfm03GswVNAUbPwIDZs/QPqQDvyC7sb5amcIDkt2I/ E/+wTLPGN9cP3e/nuJgdnB+sj1TcBXN81FWUQGNVOC1DCyoaOSaEkmKuUEsdAehG4gdJkmktGBT qXvc89Am7pWHefz+B10RKCVT8tWQLcFCV3pRqUA356RQ8/+m8nQId7fWCNHOeoMtMo7QKijLBrg eY3zdysMjJpSVKx6/6M0idv/VDNPQoXgA6PvRxHVqn2QCKujn7q23axDkK4HC1vn53NE7KhObe/ EDhfoPyzhpAWjMtJFlg== X-Authority-Analysis: v=2.4 cv=Q5ziJY2a c=1 sm=1 tr=0 ts=6a7007dd cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=OKkk4dbWoaB1VCfbt-4A:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" EUD hardware can support multiple High-Speed USB paths, each routed through its own PHY. The active path is selected in hardware via the EUD_PORT_SEL register. As a High-Speed hub, EUD requires access to the High-Speed PHY associated with the active path. To support this multi-path capability, the driver must manage PHY resources on a per-path basis, ensuring that the PHY for the currently selected path is properly initialized and powered. This patch restructures the driver to implement per-path PHY management. The driver now powers the appropriate PHY based on the selected and enabled UTMI path, ensuring correct operation when EUD is enabled. Historically, EUD appeared to work on single-path systems because the USB controller kept the PHY initialized. However, EUD is designed to operate independently of the USB controller and therefore requires explicit PHY control for proper operation. Signed-off-by: Elson Serrao Reviewed-by: Peter Chen --- Documentation/ABI/testing/sysfs-driver-eud | 3 +- drivers/usb/misc/qcom_eud.c | 124 ++++++++++++++++++++- 2 files changed, 125 insertions(+), 2 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-driver-eud b/Documentation/ABI= /testing/sysfs-driver-eud index fb927a003596..f20b82b5a38a 100644 --- a/Documentation/ABI/testing/sysfs-driver-eud +++ b/Documentation/ABI/testing/sysfs-driver-eud @@ -20,7 +20,8 @@ Description: primary - Primary USB port secondary - Secondary USB port =20 - Writing any other value returns -EINVAL. + Writing any other value returns -EINVAL. Writing a port + not supported on the current platform returns -EOPNOTSUPP. =20 The attribute is writable only while EUD is disabled. Writing it while EUD is enabled returns -EBUSY. Reading diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 25a6a8f110ec..03d1c200658c 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include #include #include @@ -39,26 +41,84 @@ static const char * const eud_port_names[] =3D { "secondary", }; =20 +struct eud_path { + struct eud_chip *chip; + struct phy *phy; + u8 num; +}; + struct eud_chip { struct device *dev; struct usb_role_switch *role_sw; void __iomem *base; + struct eud_path *paths[EUD_MAX_PORTS]; phys_addr_t mode_mgr; unsigned int int_status; int irq; bool enabled; bool usb_attached; + bool phy_enabled; u8 port_idx; }; =20 +static int eud_phy_enable(struct eud_chip *chip) +{ + struct phy *phy; + int ret; + + if (chip->phy_enabled) + return 0; + + phy =3D chip->paths[chip->port_idx]->phy; + + ret =3D phy_init(phy); + if (ret) { + dev_err(chip->dev, "Failed to initialize USB2 PHY for port %u: %d\n", + chip->port_idx, ret); + return ret; + } + + ret =3D phy_power_on(phy); + if (ret) { + dev_err(chip->dev, "Failed to power on USB2 PHY for port %u: %d\n", + chip->port_idx, ret); + phy_exit(phy); + return ret; + } + + chip->phy_enabled =3D true; + + return 0; +} + +static void eud_phy_disable(struct eud_chip *chip) +{ + struct phy *phy; + + if (!chip->phy_enabled) + return; + + phy =3D chip->paths[chip->port_idx]->phy; + + phy_power_off(phy); + phy_exit(phy); + chip->phy_enabled =3D false; +} + static int enable_eud(struct eud_chip *priv) { int ret; =20 - ret =3D qcom_scm_io_writel(priv->mode_mgr + EUD_REG_EUD_EN2, 1); + ret =3D eud_phy_enable(priv); if (ret) return ret; =20 + ret =3D qcom_scm_io_writel(priv->mode_mgr + EUD_REG_EUD_EN2, 1); + if (ret) { + eud_phy_disable(priv); + return ret; + } + writel(EUD_ENABLE, priv->base + EUD_REG_CSR_EUD_EN); writel(EUD_INT_VBUS | EUD_INT_SAFE_MODE, priv->base + EUD_REG_INT1_EN_MASK); @@ -75,6 +135,8 @@ static int disable_eud(struct eud_chip *priv) return ret; =20 writel(0, priv->base + EUD_REG_CSR_EUD_EN); + eud_phy_disable(priv); + return 0; } =20 @@ -130,6 +192,10 @@ static ssize_t port_store(struct device *dev, struct d= evice_attribute *attr, if (port < 0) return port; =20 + /* Check if the corresponding path is available */ + if (!chip->paths[port]) + return -EOPNOTSUPP; + /* Port selection must be done before enabling EUD */ if (chip->enabled) return -EBUSY; @@ -227,8 +293,54 @@ static void eud_role_switch_release(void *data) usb_role_switch_put(chip->role_sw); } =20 +static int eud_init_path(struct eud_chip *chip, struct device_node *np) +{ + struct device_node *controller_node; + struct eud_path *path; + u32 path_num; + int ret; + + ret =3D of_property_read_u32(np, "reg", &path_num); + if (ret) { + /* Legacy DT uses 'ports' node without 'reg' property; treat as path 0 */ + if (of_node_name_eq(np, "ports")) + path_num =3D 0; + else + return dev_err_probe(chip->dev, ret, "unexpected child node '%s'\n", + np->name); + } + + if (path_num >=3D EUD_MAX_PORTS) + return dev_err_probe(chip->dev, -EINVAL, "invalid path number: %u (max %= d)\n", + path_num, EUD_MAX_PORTS - 1); + + path =3D devm_kzalloc(chip->dev, sizeof(*path), GFP_KERNEL); + if (!path) + return -ENOMEM; + + path->chip =3D chip; + path->num =3D path_num; + + controller_node =3D of_graph_get_remote_node(np, 0, -1); + if (!controller_node) + return dev_err_probe(chip->dev, -ENODEV, + "failed to get controller node for path %u\n", path_num); + + path->phy =3D devm_of_phy_get_by_index(chip->dev, controller_node, 0); + of_node_put(controller_node); + + if (IS_ERR(path->phy)) + return dev_err_probe(chip->dev, PTR_ERR(path->phy), + "failed to get PHY for path %d\n", path_num); + + chip->paths[path_num] =3D path; + + return 0; +} + static int eud_probe(struct platform_device *pdev) { + struct device_node *np =3D pdev->dev.of_node; struct eud_chip *chip; struct resource *res; int ret; @@ -239,6 +351,16 @@ static int eud_probe(struct platform_device *pdev) =20 chip->dev =3D &pdev->dev; =20 + for_each_child_of_node_scoped(np, child) { + ret =3D eud_init_path(chip, child); + if (ret) + return ret; + } + + /* Primary path is mandatory. Secondary is optional */ + if (!chip->paths[0]) + return dev_err_probe(chip->dev, -ENODEV, "primary path not found\n"); + chip->role_sw =3D usb_role_switch_get(&pdev->dev); if (IS_ERR(chip->role_sw)) return dev_err_probe(chip->dev, PTR_ERR(chip->role_sw), --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 B38DE34FF78 for ; Mon, 3 Aug 2026 03:15:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726946; cv=none; b=ogwCo6JdrrFOeEwCMXypAzMrRZWAC2wnddF/AOWfcnZ8KmH2zVT/zR1tt2tiDfQ1mfFUSupW6aw3LwA/q+/immh9eLTzyvEXx0Xj44jRrp8iubRANYeC8fBTbrM8VCqJ/ArGxgAQn7VqL7gCe0xrGaKnroS+Yi7mHr7VSMdsMe0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726946; c=relaxed/simple; bh=cEqUL7LWmjZmV0f9R8kvoQt9d+i3M1jiw3JaTLMkrm4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=syiCL2GRJHDlnzdwxQ4SxlmIDnAnFTHkMaTnGMb+ykJJDVTxg8263UN/mLKcy9kpJqFOi0S4JyhiCmj9T5RUB8iHR1d+xuDlQEIPNKNp177Qyg7lmKTiJQKhH1ZWUUsWzlLhM/uswToFomaspj0+4EEqS08/TKvH/JVyzrMEN4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=bECTX9lg; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Oe6NL3Qk; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="bECTX9lg"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Oe6NL3Qk" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LVei83299614 for ; Mon, 3 Aug 2026 03:15:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Vz/fmOrzqsS Ioh1iZe9GD60v7YN8pz9alATIH1yPiJU=; b=bECTX9lgg4HuA8/+0CQjY94oblL 9hmhNvewisYTwi3kImbJzES1R2UYjMw4hkH/7sA6BN2TvK7CaasCQEnDy9ngwALq 3+SwRksN/IGnjo802RXCpzbsSCeLTDysL6gVKEodCsmCsgNvijORGkM54xS4PP2M YNYH0UhvwkmIGaSyL9ruEJ3NTRfmYx13JLaEepA6epWGnPDmYOhiTVqtMptKoyrX tMpaddflRv8JmaRv8naGIuaNFhZNkANTEk2CWgqWqbWzExfm+LaXJKrmzeurD2V3 LbyeewBG3pBTojZLdppM4LWBXeQthSBCjgUUqyIWk38zVcmVUPluWMYb5GA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8qpv8v1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:41 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb835525b13so3697594a12.1 for ; Sun, 02 Aug 2026 20:15:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726941; x=1786331741; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Vz/fmOrzqsSIoh1iZe9GD60v7YN8pz9alATIH1yPiJU=; b=Oe6NL3QkWjHGSQDOjbmXYeTd7lvIbqZne7eLQUKzZ4zuM6aFQJpjxAomAskpXDp60D jR8HhNKi3wUpWYu4iZiAxYo9mgQXMLseLrZlRzK5HExs1QqS6av0rGVFSaPGpzvdlO/m /7duYG5Com8nM7/hQPohbgDT+HE8x+0F8NlnyRRTRyWJxkP918EwjSioplmGrgqABk1u cTaWQeLPYiAKpeKO1T+nNKYcQzvoYdXStAR99ckz/IuCceQPXQvw5wwiFILqXZ4XCYnQ RondKMMrrGb6I1LKY82DbaDuAjWDoOcVFOB0L9ajLL9Gx5ouyY1j++NyooZwCESdQzrA WyHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726941; x=1786331741; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Vz/fmOrzqsSIoh1iZe9GD60v7YN8pz9alATIH1yPiJU=; b=bNxXBcKMrwVbsIi7a5Xo7lCIDt0AcrLbcGVML9i1WFHlubxW4xlj6IhFUKx/AAwliC Qzf1AKUmSYIyUqZIn6axWrtTxDL7FFeY4K8iyROZE3UyxejNJiKq0H4bk7n5xXqOEh5r YFmHnfQyhlmERfmtgfdMMLXCCguah8VgUt78Lmnb88lM5mO2XkmV5V89p46QOuGVoXP0 6GE0PYUEHNWXX4+LHRH7c9J6IUAeyyk8QhvYPIBVBlwQE4Y2FdSAVQq4Ja8tcf+x2OS7 0IWGj4qNhoVRjrCT/8vSEJkh24RUpnlL6orA1+ePj0Y9mFB8/9dKZ6LSDJkBomP/0/cw 0pjQ== X-Forwarded-Encrypted: i=1; AHgh+RrAmMZe09kQUmwt33Krz2Kz7eql/RNEDPjB1QjqZG7K5v8NWL4yZgTvpq5qw8ahKVQurljBVGqgA/K2zy8=@vger.kernel.org X-Gm-Message-State: AOJu0YzbBIeYP1RTYNfqdkEh9X/q/p4XG0eHMykuAoTg1FWvAWYchxij kwFW6TBQJ5ohTv9M6u2PNnr/rWfHWuX4lOq8prLOTiqaTTEoVJVCLjV+j2GVVCAS5YBgrazELWR TZYZ7ELOWVv1QxA7Tnp6t7ych7rKH10Tk+30Y19x5pwT+Xnf3g93UtXa5Ls71BCOSp4M= X-Gm-Gg: AR+sD11V2ynVI5kyTfaTFXdpmJClJ4xXmQqx5EvaPhfL2Hl6H3AwmuwLpqRijKCp0f9 XfMvIRaNMaSr9jML0HrRrNr5XKtkz/u1/AuF9CdSWCQCgL6zPoomeW59c6kBgWMfcl5Y1D5MBie zxB+/lwI9vtew8a8bbbm/z/wjJJnwvYxCLobYQPn8evpXRAwhH/Gb23/BzGwjGFHBCt57eJLIpf NRF8wGLOC81b6tSeNjy8rj4ZwrDUNt0SjsKBHCbSe4J/UIldbyjHLvyKfS+ntNcUkfSBq7oUa0R e98ZlhY/vzSW0Lie9Ft/vS6f0cmkPu7hNxJknZl2O5Q9ZB0SFbOW1G5+kwCzt6bWxWefAjwN16b 6zQKIxKcjKBwkHnwK56vdl9865jWkbDT1bOPUuFSuv+rKzQlsJu+TSA== X-Received: by 2002:a05:6a20:430b:b0:3c3:aabb:dba3 with SMTP id adf61e73a8af0-3c92a99383emr8606418637.76.1785726940962; Sun, 02 Aug 2026 20:15:40 -0700 (PDT) X-Received: by 2002:a05:6a20:430b:b0:3c3:aabb:dba3 with SMTP id adf61e73a8af0-3c92a99383emr8606386637.76.1785726940509; Sun, 02 Aug 2026 20:15:40 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:39 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 4/9] usb: misc: qcom_eud: add per-path role switch support Date: Sun, 2 Aug 2026 20:15:29 -0700 Message-Id: <20260803031534.2942628-5-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfXwMgwLCgGWyUX p0iK2PvVzZx7IvMEt1foKGV2bcYFcylu/8DI6/CihVUwW/8l3HvL/kCZcskf6bJsLswenMvtD6Z fnVzV5ruJn0Y+qnHEuuywSchV9CVZwP1hcelc+JEt2YhEvdbD4DP3/S5WldaWqWAPhdI+Xyea8Y XJy4n/1PLCB6hMV+Cb1NoDwI1H4117tTpnRo+iCCzRWWcT30xglXvxw3AnOOwuNv1RHHn2LPUq5 Hm+hPPGurOYfcYqgJ6m4brAkcL5xDDbt1Ha4XVLu2xAEcgGG17n+nPmBANHP8eZAK5ewtnpXglj ntDjY9uZUlVrAUdDGTissI3bmd5n51Kd8HX4K8g0lfXZFb+Jee2a0f4qtaxYkz4bNDPRuQabfhi RKbmoYZYo9bhgrZvEtrXi4GWd484P5c5K1fnFQvrrlDCcWVSSr4SZmw/kgIE8EvNalSHN8w9/3C BPuDfHRiQWU8DnYNU0g== X-Proofpoint-GUID: Y0lZNk7cxH6Xtwk3bans7qObah3K7hh2 X-Authority-Analysis: v=2.4 cv=MpViLWae c=1 sm=1 tr=0 ts=6a7007dd cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=40BmpV7J9y7yzTAaPrUA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: Y0lZNk7cxH6Xtwk3bans7qObah3K7hh2 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX93HpiYSw5qFU hLHnftBtymUcqwrKTA9v0LQs94XNpPvxMn/aVQOKTQrZKo5vKfXFWUKR8tGHkXwHFWjQz3E3zzh H6HqkosaKhAmcyOdCFb3/ZrsQUL8mq4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 phishscore=0 malwarescore=0 spamscore=0 adultscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" The EUD hardware can support multiple High-Speed USB paths, each connected to different USB controllers. The current implementation uses a single chip-level role switch, which cannot properly handle multi-path configurations where each path needs independent role management. Since EUD is physically present between the USB connector and the controller, it should also relay the role change requests from the connector. Restructure the driver to support per-path role switches and remove the chip-level role switch. Additionally, as EUD need not modify the USB role upon enabling, remove the unnecessary role switch call from enable_eud(). Signed-off-by: Elson Serrao Reviewed-by: Peter Chen --- drivers/usb/misc/qcom_eud.c | 100 +++++++++++++++++++++++++++++------- 1 file changed, 81 insertions(+), 19 deletions(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 03d1c200658c..48a4441b0c9c 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -44,12 +44,15 @@ static const char * const eud_port_names[] =3D { struct eud_path { struct eud_chip *chip; struct phy *phy; + struct usb_role_switch *controller_sw; + struct usb_role_switch *eud_sw; + enum usb_role curr_role; + char name[16]; u8 num; }; =20 struct eud_chip { struct device *dev; - struct usb_role_switch *role_sw; void __iomem *base; struct eud_path *paths[EUD_MAX_PORTS]; phys_addr_t mode_mgr; @@ -123,7 +126,7 @@ static int enable_eud(struct eud_chip *priv) writel(EUD_INT_VBUS | EUD_INT_SAFE_MODE, priv->base + EUD_REG_INT1_EN_MASK); =20 - return usb_role_switch_set_role(priv->role_sw, USB_ROLE_DEVICE); + return 0; } =20 static int disable_eud(struct eud_chip *priv) @@ -270,12 +273,15 @@ static irqreturn_t handle_eud_irq(int irq, void *data) static irqreturn_t handle_eud_irq_thread(int irq, void *data) { struct eud_chip *chip =3D data; + struct eud_path *path; int ret; =20 + path =3D chip->paths[chip->port_idx]; + if (chip->usb_attached) - ret =3D usb_role_switch_set_role(chip->role_sw, USB_ROLE_DEVICE); + ret =3D usb_role_switch_set_role(path->controller_sw, USB_ROLE_DEVICE); else - ret =3D usb_role_switch_set_role(chip->role_sw, USB_ROLE_HOST); + ret =3D usb_role_switch_set_role(path->controller_sw, USB_ROLE_HOST); if (ret) dev_err(chip->dev, "failed to set role switch\n"); =20 @@ -286,17 +292,39 @@ static irqreturn_t handle_eud_irq_thread(int irq, voi= d *data) return IRQ_HANDLED; } =20 -static void eud_role_switch_release(void *data) +static int eud_role_switch_set(struct usb_role_switch *sw, enum usb_role r= ole) { - struct eud_chip *chip =3D data; + struct eud_path *path =3D usb_role_switch_get_drvdata(sw); + int ret; + + /* Forward the role request to the USB controller */ + ret =3D usb_role_switch_set_role(path->controller_sw, role); + if (ret) { + dev_err(path->chip->dev, "failed to set role %s for port %u: %d\n", + usb_role_string(role), path->num, ret); + return ret; + } + + path->curr_role =3D role; =20 - usb_role_switch_put(chip->role_sw); + return 0; +} + +static void eud_path_role_switch_release(void *data) +{ + struct eud_path *path =3D data; + + usb_role_switch_unregister(path->eud_sw); + usb_role_switch_put(path->controller_sw); } =20 static int eud_init_path(struct eud_chip *chip, struct device_node *np) { + struct usb_role_switch_desc role_sw_desc =3D {NULL}; + struct usb_role_switch *sw; struct device_node *controller_node; struct eud_path *path; + const char *dr_mode =3D ""; u32 path_num; int ret; =20 @@ -327,14 +355,57 @@ static int eud_init_path(struct eud_chip *chip, struc= t device_node *np) "failed to get controller node for path %u\n", path_num); =20 path->phy =3D devm_of_phy_get_by_index(chip->dev, controller_node, 0); - of_node_put(controller_node); - - if (IS_ERR(path->phy)) + if (IS_ERR(path->phy)) { + of_node_put(controller_node); return dev_err_probe(chip->dev, PTR_ERR(path->phy), "failed to get PHY for path %d\n", path_num); + } =20 chip->paths[path_num] =3D path; =20 + of_property_read_string(controller_node, "dr_mode", &dr_mode); + + if (!strcmp(dr_mode, "host")) + path->curr_role =3D USB_ROLE_HOST; + else if (!strcmp(dr_mode, "peripheral")) + path->curr_role =3D USB_ROLE_DEVICE; + else + path->curr_role =3D USB_ROLE_NONE; + + /* No role switch needed for fixed role controllers */ + if (path->curr_role !=3D USB_ROLE_NONE) { + of_node_put(controller_node); + return 0; + } + + sw =3D usb_role_switch_find_by_fwnode(of_fwnode_handle(controller_node)); + if (!sw) { + of_node_put(controller_node); + return dev_err_probe(chip->dev, -EPROBE_DEFER, + "Failed to get controller role switch for path %d\n", + path_num); + } + path->controller_sw =3D sw; + + of_node_put(controller_node); + + role_sw_desc.fwnode =3D of_fwnode_handle(np); + role_sw_desc.set =3D eud_role_switch_set; + role_sw_desc.driver_data =3D path; + snprintf(path->name, sizeof(path->name), "eud-path%u", path_num); + role_sw_desc.name =3D path->name; + + path->eud_sw =3D usb_role_switch_register(chip->dev, &role_sw_desc); + if (IS_ERR(path->eud_sw)) { + usb_role_switch_put(path->controller_sw); + return dev_err_probe(chip->dev, PTR_ERR(path->eud_sw), + "Failed to register EUD role switch for path %d\n", path_num); + } + + ret =3D devm_add_action_or_reset(chip->dev, eud_path_role_switch_release,= path); + if (ret) + return ret; + return 0; } =20 @@ -361,15 +432,6 @@ static int eud_probe(struct platform_device *pdev) if (!chip->paths[0]) return dev_err_probe(chip->dev, -ENODEV, "primary path not found\n"); =20 - chip->role_sw =3D usb_role_switch_get(&pdev->dev); - if (IS_ERR(chip->role_sw)) - return dev_err_probe(chip->dev, PTR_ERR(chip->role_sw), - "failed to get role switch\n"); - - ret =3D devm_add_action_or_reset(chip->dev, eud_role_switch_release, chip= ); - if (ret) - return ret; - chip->base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(chip->base)) return PTR_ERR(chip->base); --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 8183D350298 for ; Mon, 3 Aug 2026 03:15:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726945; cv=none; b=NPGMIAEdX44cQfIJMC1R48zqwIOOwD1oUEzfuMONcC5OtnTrqtlFhx02H1KCzRb3NcguXEAT9cZY8kYtViwV6IJoUfKoBkQIoAyMjwh5aprecJ+T7j6PmgET9ETggZIjLJ8EfcTVo0p/0RG93XudETpjNE3xk1qpu2MijO//Ebs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726945; c=relaxed/simple; bh=HpHLnY4+cq26k9bEYWvJsx8FG9JYVOEw8X6TJecOzlk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MJDVysk7CAypHv4H9LH3IL06/soSQ5YmuAal2ClExjASzLmf0PTmKrIEdyo7HntmPhaJx4vi1OGbobV1iq6Aodi57hpjeO7WDPGh5GGchsBxIWhQ4SSuRFFX51fhk96vUMF7PL5jeVKRLkN8t/ulBYQ4BQO8JbZCvl9O0k65ehc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZZ0yOm55; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Orbt4cfB; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZZ0yOm55"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Orbt4cfB" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LWYnq2626936 for ; Mon, 3 Aug 2026 03:15:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Lh7VPnpiWdW yrdblOAW9o/VI9PYxFPN0+cxK+2KPVVg=; b=ZZ0yOm55CmwDCYxS11YV2uc2mNl P0om+LSoGl+7c0OTrgyNc5vjgDmMECakEzeAHJbIf4W2qnQ8CpYBqjGveTov+6xd TXlaKt3Y8Vo5JC0An4V4qjUL5JsOIi8Retgdk9JC+OI6bLFko84rAaxt+EZlA7kX ioR7DeOOKLSs9dKz34oRxs4tMHFVWMkz6x+f+K3QTTyqY9ZrCh8oze3mMF0WXpNR t0a+jS5ukJrXtETjBqFzdtj7FCsJ5FzLULGjkNwKiA8vfFOA7Lmk7+CVYjvGbWFf eram/IyW6YOoAWnaEUVdR2uWC9AZewVWJ3ySrHmm/9XLXSitWOcxBGsjCBQ== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs9jfv3sv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:42 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb5ea36f969so3134014a12.2 for ; Sun, 02 Aug 2026 20:15:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726942; x=1786331742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Lh7VPnpiWdWyrdblOAW9o/VI9PYxFPN0+cxK+2KPVVg=; b=Orbt4cfBsyPjubVLKgROhxYNCbzYaE5GURLGgaPQscmRo7Bg5TxXPQMKF8kt9rS+Tq BVXDaGLwgTDSBKJShm69+TIZyUIbAt9cwAEwiBG553Fpqi0Hy3eDK/CYli8lE4jvNnTi b/wbDNLenfv6Le5S1QMNKNae62pnatSDC8xzHszj9OLAy7HL0t6TdUMD9+xRagh24/dk EI35Ro2iSML3Paf304+1VSbaOlCniv4PuS/9LM4SwX2hmqhkTebMhYUIK0yE9gxPO0Gh T1ODBHVgTFb9RMCPmnk3TxCRTdzhAaxGNBcnSCXq9We6AtSF0+3cgOydSMJF38x8BnLS OE+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726942; x=1786331742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Lh7VPnpiWdWyrdblOAW9o/VI9PYxFPN0+cxK+2KPVVg=; b=OOIsr4oJCgY5scJetTdhodh/6vnliSOtp1lMk0sm71JqrVXHGAzO1VktrNHD0WWNhd E6xcu2nPnqIL/0qOpGvx1ExYcrxODfZ47O1+IlJHX5wRaayomB9/7Ee3a8aax280zQat QLeUUKIfmvB51xtPIzsybaRJe14shd2p8ZBE/J1wscWB1v/BHVt3lleH7f9Sy9wrh6eu R588sVWBiOjUr8LevYeyDgpklShRv1gl4//qaCPRJwafyYrjp2qGpOWyZ7u0PqH4htSc IhVrf7k9jaPH/i1WfkIyCEQsNML+0P3KYgGmLv8ddaP9u3Dv+5URv6z3QKiV/5D+Z01/ pBsA== X-Forwarded-Encrypted: i=1; AHgh+Rqb4+AY3CZEiGGTsQkwuyDwU2u/UTMjJhWhkyDTBXFEbZ8K4IW9UPk3rR/5J5KgdkBBqVnFwT3gMulG944=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/0GgVTXWUdzEBKjVN5/Yy3P8PJ3CpcfzxysV8W9y7YOO9hMTL QK/LtT+uBM2Cv5nw3BeQmWcEfW5iMKHTcRCBrNvQzXSMtwdpJ7UwAT0wXHbRuiiR2btIwDbgz/M mUhKL2/fmBdcLgwNGIerwWKIxBmYFfAagszmh0mncZ8Ywt0DYEhXjute1PP0RFEFaXUk= X-Gm-Gg: AR+sD13cQgGpfL+3NdFzIdAd4Q3IimkQaCPZ8eUC8znIT5HkDjbQbsIWOK6fLOL6Ifa crdqo0DdTvfpWuJR7XsinSIY9+Pe5Dp1chSsvn7QpkDKvEfuT6ANCEXix8VWQQ++jxDgKmaKPZF Qjm+S6aORK92Qk3oEhcSftWs9FMZ1YWbQtPx+BwXy73gT1gS6bTHfuxVvHINtU5CR/cW9qf2xzO bWhQrP52qePqlDNZbrhEsmcQXcDxTpTSrO1OuZMeVHLywJCtPtzaAowshqfvtEqeBqpPobT1Prd p1wHp9fqdL7bq8ePACFHfe+oFE/3wkeOn71NgqwpR+Fl99uHvtZ2osoJeGdoNR8IkPXTdbL7BzP 6Z/CoxJ3tcpVEFasGMbEAzFVeq5uvbj0Tx0ZTZJfmzit0e8LeouFQOQ== X-Received: by 2002:a05:6300:4045:b0:3c3:a08d:5b44 with SMTP id adf61e73a8af0-3c92a524e22mr8309484637.23.1785726941858; Sun, 02 Aug 2026 20:15:41 -0700 (PDT) X-Received: by 2002:a05:6300:4045:b0:3c3:a08d:5b44 with SMTP id adf61e73a8af0-3c92a524e22mr8309462637.23.1785726941444; Sun, 02 Aug 2026 20:15:41 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:40 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio Subject: [PATCH v5 5/9] usb: misc: qcom_eud: improve enable_store API Date: Sun, 2 Aug 2026 20:15:30 -0700 Message-Id: <20260803031534.2942628-6-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: LlaPb6v9iAwV7BLPLKNKPULuS7qnIJ11 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX9bAqcPm2ZdDZ XkvQruWnO4yNqDgHqnP95RFhODPgB5WjfREKTZcltkNtrljL2B0vxDa94UPDZEShui1T3Zf1Oc2 QAZQfuDyVc3eCnK6autiTBalvfzxWwdXbNSYI2aKRNZ1qLYBoaRFRjMw77vmBA3HNwlmWMe49rK zrYN4WpqM424um014vZAfCwC//ngx9pDyGYM5bcnYlHnJFDU4lw7OOVDleLEG06c/+vh/as1qmP rpMOMzWYQ/sTzqGrjlhZFA3vwrm37vwdA+ezaEnGt9OQa9DFFvW3zV43TWoKZxVloQHeCGxGL5+ 8SVKQQfeE5p4cV9zbdJ00H28TPMMcWVZ5DTAbgcpQ9zQmyPdD3tq/V1mEp8gPx/VhsKvhz5o5Mi aT+HpWeBG+0e61rdOcdboJflAuoVDpD8N5Q1ltB0OMU4krm3PSWqs4Fjbbmj2Ybf1L8HcNqt51R /GF9U62zGJuLVYa9mmg== X-Authority-Analysis: v=2.4 cv=TYSmcxQh c=1 sm=1 tr=0 ts=6a7007de cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=iEam2xx7WbKG8qDqzoQA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: LlaPb6v9iAwV7BLPLKNKPULuS7qnIJ11 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX8O0iWg8FbRFv F4OWT9LE3BEug9e8HqH61O4csZg6QxREBi5Nv18g7/zrXB4RfF5VR4kec9D0srzpxKhYrQPKZij Dvk6vhTr7/I/5XYR0cOhkBI8syXximg= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 suspectscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" Currently enable_store() allows operations irrespective of the EUD state, which can result in redundant operations. Avoid this by adding duplicate state checks to skip requests when EUD is already in the desired state. Additionally, improve error handling with explicit logging to provide better feedback. Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio Reviewed-by: Peter Chen --- drivers/usb/misc/qcom_eud.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 48a4441b0c9c..e83a4402e4b8 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -162,18 +162,27 @@ static ssize_t enable_store(struct device *dev, if (kstrtobool(buf, &enable)) return -EINVAL; =20 + /* Skip operation if already in desired state */ + if (chip->enabled =3D=3D enable) + return count; + if (enable) { ret =3D enable_eud(chip); - if (!ret) - chip->enabled =3D enable; - else - disable_eud(chip); - + if (ret) { + dev_err(chip->dev, "failed to enable eud\n"); + return ret; + } } else { ret =3D disable_eud(chip); + if (ret) { + dev_err(chip->dev, "failed to disable eud\n"); + return ret; + } } =20 - return ret < 0 ? ret : count; + chip->enabled =3D enable; + + return count; } =20 static DEVICE_ATTR_RW(enable); --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 E690B35AC09 for ; Mon, 3 Aug 2026 03:15:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726947; cv=none; b=f9yG/nXs4okUSZsx8uqq+ng1ZHlhus7H7EPJKp14kND80VFpym0miz7T6PpH2huuBgVGqoIOAQRVl1guoxSOfZh5iG2ryB74lYv3I7xYLnCpWztp4JyJXYY81qdfbjazqOgVK/Nuapw9ITAGwzZqYP+8hUt9nzRAslcRZ0cnOsA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726947; c=relaxed/simple; bh=/zuik8IdUv5jQQ9WIET1PHPqFn0iJxzjcyyR0zwdaPM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ubaFoZnMa+p36xpcpc9aUSbknqlI/JthjMJwxVD+xm1iqJoSq+q0WWEe6TaEhw/Drk0IiUtkPBvz/DsVEPAocMZU9VKB9iolaUTa/BwLGSFTmLql5MGQz8lY4kJdJLSzqs47YwTiGQomHTBGAsdW4MZmAlwmtugzECJ3gcOc+N4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=oudIUmBK; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bvJkT+1a; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="oudIUmBK"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bvJkT+1a" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LVYOW2941302 for ; Mon, 3 Aug 2026 03:15:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=3sGB3Fal3bV qXiQy7bl5CeUWFPhCUyUHhWRj6XmUwrQ=; b=oudIUmBKE9c0WSEtsSaAG4T1QD7 m6Kn0ZPCJ0x2nV1Mws4kZt1KWiL5m8mC2CAm3h6xdncQrkvT0s9icocD3W7UL38r vugLtNwwuLzFFKp4Vo9L0exTM5rv1OKT78ZWhfjN4XccKBjTMqayP7Q6VnBqo25d fg3lf7UyZ5Hg7KC8HccY/gRP0ui36CksbjZsg0fmtQgs0VHFnj+r6uLI0BbnMwBY IUO7/JKYuQMt3xKGEFBzvFT6TpdW3S81oxXhL5j46tUwqzFkewGgWiI2YU1vXPJv YjRPTQg2YXhHNFJJv0QqbHaFXGf8xl0GazvejjaKTSt3qCsVfSrECyv7hCQ== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs911c84v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:44 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38f283baf1fso2735113a91.3 for ; Sun, 02 Aug 2026 20:15:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726944; x=1786331744; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3sGB3Fal3bVqXiQy7bl5CeUWFPhCUyUHhWRj6XmUwrQ=; b=bvJkT+1amRbAfZhXOW9Nos+sEi265p4cIAuR/ukNDTmVmCLOwJv9WU0cS0hzNPJ6ck 7mKEtpthcJ4oopUSdEkkLNABBUev1AXxVpVxKJl4tfqIhU1LR/DSBnVbpGg5r0S3LIZD PLw7MvO73noZTrMcdDaYiFPcfVYd9E034uSv8EUTW8/1OrS7IpCSaqBFBfGiG1pssX2v pjptAHgdYFaYRl1HDCE+5T3p+8vf9CDSIexw7HmYhjGAPmzguH/++U2tC7duoPlhBZSS 2RGlq//ZFVSXUaUz8DbJMogGE8FqqfI60JRg3vIuK2J7xe9UEF4UZ82Umn8orEG9IU0L xLLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726944; x=1786331744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3sGB3Fal3bVqXiQy7bl5CeUWFPhCUyUHhWRj6XmUwrQ=; b=iCaVxQT+2JPj7p9YgoP7oRV4sazhSiYHnmxpYAmTeBn2CxdqCGRuh9rGI8sRfDRS5M ElCIMD7ulB1JJn6VtCgMP9U3ci+0rivlAiLEhBM3koiU0uk/f1Gf1eTEpu4H+jwWe0ue dbosMR6F4uXu+y3d3E0b5nIjma5imB5x6Stjr+ijDUlJeVtq0yLU8ufjXfiz/JYs8269 8siYFs67jWtbefd/ti6WtE/cBH6LR6LJ7f6LAAPvvtz56FnEYIqv8GQ+DB3WS/nCeuFJ hzWNKQHFQ3qqGcooaiSwItCrZqV4dP39sb7wJNpPZkwNJ8jtL7APTvfxSmIXhXTWJHYE b9IQ== X-Forwarded-Encrypted: i=1; AHgh+Rp55/t9oNyMQ0b8tU5/yPZGrsDIKMXiYWuJwHiPbZaNiDQ4GYCR8nfGXdwwCpoDz8IpRBqO9Hpd+EfGiMU=@vger.kernel.org X-Gm-Message-State: AOJu0YzOLb+gty4a3eYt9zzNYkeaeUdkiIOmw9CDTpMzLgqy3EFH1gm2 2ROVdEVh3SC/ohei5MBJ/KCRFMyAsEGQHQVNVhM4Sb5ADzTYsgPbL+bf4ppv3oIEu5oFyIzLZTy vlWKHvjN4pfV9ir+VyBlx2YCf/y4/xQ7+o06v4Nt31g6D+dnxsrNolbQ4ermsFm7X+RM= X-Gm-Gg: AR+sD11lQ+9sNw0QLQ8ztd1OkE5awrCZXNiOe6e8WbLAJjodMxFnhyl4QFpMB630VvN 80OKrXDQHmvZ/BB9Q9ciRgznKTghEqTpWbus54HVO+ixq9VDYrqx2dsa1qvgtQy7pD+qkSHEWsp L2FNpBbvcsaHdEZNx2V/y+s5GD6RpXIIzFRmaYAdXGrgCn+NGL76lzMfvjUuwn69xAi8s58GUQR 97eQdlwPFhFacZ063UqNYmGfLwOSrx3auS6EKb0yiWHcSvjtuUUrvdh8O5dCp1BE5+QrqK/Smdz p8yg9FwbGMZrypdBn3tEIxkMuqSgMWoenCWLbI/Ffls15ZNKcIvRf/VSRSkTXeci6sZqtulhp6H 8xG3w3IHmb+DHxrZB35T3a2tolkbHrX8R7yWA/7Ahw6hNHBLEQHZ1Kg== X-Received: by 2002:a05:6a20:d43:b0:3c6:61b9:917d with SMTP id adf61e73a8af0-3c92a9c1adbmr9012293637.49.1785726943638; Sun, 02 Aug 2026 20:15:43 -0700 (PDT) X-Received: by 2002:a05:6a20:d43:b0:3c6:61b9:917d with SMTP id adf61e73a8af0-3c92a9c1adbmr9012231637.49.1785726942719; Sun, 02 Aug 2026 20:15:42 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:41 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 6/9] usb: misc: qcom_eud: add role-based EUD control Date: Sun, 2 Aug 2026 20:15:31 -0700 Message-Id: <20260803031534.2942628-7-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX66tLFSeazI+T f8E+/1To7yIGUw6cbWFBQ9iiToBT13TRCaUKVv9fkkwcZwAV0zVdKZRFwgUg44ISiN8dCJG5mH9 nNv5OeIiUdPEZX5aFdV4Z8ppOWsqFF4= X-Authority-Analysis: v=2.4 cv=PvGjqQM3 c=1 sm=1 tr=0 ts=6a7007e0 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=4GSD5CdKrKcBI9kQVZUA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: 0Da1W_KuUF3vV2_uPCmQYvuuy3SBOm-4 X-Proofpoint-ORIG-GUID: 0Da1W_KuUF3vV2_uPCmQYvuuy3SBOm-4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX//5GNEUMud20 RhysQwhHGMPY4CM6FKK50J079N8+CbznbaioVGcCe14B0r8U9XAlRhCr33Ya7ticvJ8SdAvkPim crblz57L7JDIqHBnEdKf9KcPSgW/uUTPXZdhxiYd17IzbMg7oiZRP+6uCOIbgNnSuj6vEeItlh/ p1H41aIe0Ja5FhCtaxeiHU4irEkNPatIn02beMlgtOv8KxdZjPU7wgzsdAbAgEhuOTvv270Jnmi j/UNKMNdzefeDhowyKWd37W+9AdR8A/7sKXOF7HBrIydBU7YXlJMK78AUHYUtoD/4/fO8AlRUUq RWzXHJA0+VfpbRNB3Ds9N8Ue42go/ZbScYWJUSFLtK+6ue/SE3K782y72A92ZRyMN65Z5Y8Ws7e eGUOzwwgS6oL9mXESNfVRMvAiuT7isxgF5ytnzik5GZwbCFjMcjADyKkpnV0Q1Gg2364puMdREK 17uRU99T1G88KNAtyiQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 priorityscore=1501 adultscore=0 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" EUD functions by presenting itself as a USB device to the host PC and is therefore only applicable when the port operates in device role. Keeping EUD enabled in other roles provides no benefit and unnecessarily keeps the associated PHY resources enabled. Furthermore, enabling EUD in host role can cause the USB controller to misbehave because the EUD hub supports only a single upstream-facing port. Address this by treating EUD as usable only in device role. The role-switch callback enables or disables EUD as the port enters or leaves device role. A sysfs enable request made outside device role is recorded and honored when the port subsequently switches to device role. Signed-off-by: Elson Serrao Reviewed-by: Peter Chen --- drivers/usb/misc/qcom_eud.c | 46 ++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index e83a4402e4b8..538e070cc140 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -55,6 +56,8 @@ struct eud_chip { struct device *dev; void __iomem *base; struct eud_path *paths[EUD_MAX_PORTS]; + /* serializes EUD control operations */ + struct mutex state_lock; phys_addr_t mode_mgr; unsigned int int_status; int irq; @@ -156,17 +159,33 @@ static ssize_t enable_store(struct device *dev, const char *buf, size_t count) { struct eud_chip *chip =3D dev_get_drvdata(dev); + struct eud_path *path; bool enable; int ret; =20 if (kstrtobool(buf, &enable)) return -EINVAL; =20 + guard(mutex)(&chip->state_lock); + /* Skip operation if already in desired state */ if (chip->enabled =3D=3D enable) return count; =20 if (enable) { + path =3D chip->paths[chip->port_idx]; + + /* + * If not yet in device role, honor the userspace request and defer + * EUD enablement until the port transitions to device role in the + * set_role callback. + */ + if (path->curr_role !=3D USB_ROLE_DEVICE) { + dev_info(chip->dev, "Deferring EUD enable until port enters device mode= \n"); + chip->enabled =3D enable; + return count; + } + ret =3D enable_eud(chip); if (ret) { dev_err(chip->dev, "failed to enable eud\n"); @@ -304,7 +323,30 @@ static irqreturn_t handle_eud_irq_thread(int irq, void= *data) static int eud_role_switch_set(struct usb_role_switch *sw, enum usb_role r= ole) { struct eud_path *path =3D usb_role_switch_get_drvdata(sw); - int ret; + struct eud_chip *chip =3D path->chip; + int ret =3D 0; + + guard(mutex)(&chip->state_lock); + + /* + * EUD is usable only in device role. Power it down for every other + * role to avoid keeping an unusable module 'ON'. chip->enabled + * preserves user's sysfs configuration and is not modified across + * role transitions. + */ + if (chip->enabled && path->num =3D=3D chip->port_idx && role !=3D path->c= urr_role) { + if (role =3D=3D USB_ROLE_DEVICE) + ret =3D enable_eud(chip); + else if (path->curr_role =3D=3D USB_ROLE_DEVICE) + ret =3D disable_eud(chip); + + if (ret) { + dev_err(chip->dev, "failed to %s EUD for role %s: %d\n", + str_enable_disable(role =3D=3D USB_ROLE_DEVICE), + usb_role_string(role), ret); + return ret; + } + } =20 /* Forward the role request to the USB controller */ ret =3D usb_role_switch_set_role(path->controller_sw, role); @@ -431,6 +473,8 @@ static int eud_probe(struct platform_device *pdev) =20 chip->dev =3D &pdev->dev; =20 + mutex_init(&chip->state_lock); + for_each_child_of_node_scoped(np, child) { ret =3D eud_init_path(chip, child); if (ret) --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6BCB1363C53 for ; Mon, 3 Aug 2026 03:15:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726948; cv=none; b=mHNVuVbiChYpkrt91NIM+6mCcL6/+oS5oq6NjJTtincxcRydGIANK+EQPIWMlXac/CYgFWu6WyP/jk3XH/MBS7RByUiJjcOgftFgw7HXV7XEuoAOk4F/o0Iu87P3WlR72vfooOFNOk6mngwaybVPNNBgI+MIbyIUdTfVZfuWl4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726948; c=relaxed/simple; bh=lrzDg3DWlq31fhZW3kj/zL6U0reZsq/g1bOD8a0Dpjs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=F+Zgb5yoZrnlmZX+d9QgKwxuwN7YJ1C9GdJfqkaUKh1wELEa6i7A39lsKz8/wZvBWZDZ1ctcZipQOp8Aq6WuLQLJ7h+x8yyzjuGMCvcQml+x9WewtlI88z/rSuALheKo69outThcsDktHQa+6ZLP9RrOTb2EbvrQ6MOX7fI64oU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dc8/243l; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JxSRWhNq; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dc8/243l"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JxSRWhNq" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LVe5n2594187 for ; Mon, 3 Aug 2026 03:15:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=FvsgipU31nk 17Fa4c3BK7HLyoHaUyZsM4m2Ma/Z/a0A=; b=dc8/243lRTePF6gfJSg+UiH9OVN ccmrYqGV8A1xCgOyoVRNGD0tanMa4JHdlX5DgqXoVrjRFRnPo9/QgwuP8rarKDvP LoP7dA5/ZXqdGcL6gx07ZvkFy3RIaWSBVPsIhH4Md+pY2F57iTpHQJU4pOhKZ6zI IZYqCM4v+68jrN5oDTScLVrpIZQGAgXj6CLuo9qVUTsmXdLKiL+HTIEj+Vs1TnBq XNIvaxIst6yOy64V8omXy1dnr2iXj+ZawMSzzOl+in3pRQHdZ3ZyVS39oyYU60RT 1U+HtPE8d/AI816e/ITXAinuT40/+UMDE8ZP7djigpwIYp8nq7O+UaZt3fQ== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs966c7cm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:45 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e8e864ef0so4891208a91.0 for ; Sun, 02 Aug 2026 20:15:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726944; x=1786331744; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=FvsgipU31nk17Fa4c3BK7HLyoHaUyZsM4m2Ma/Z/a0A=; b=JxSRWhNqADbWYx1Rkezb3ZIVowGsgLZNsE1/nK57MFxAMzY+EILZwNOvfdohbmNQsB nSNe4ligOcb27DYelzAHIbX9cidA6K+cnfoulI9rlArpuGIpf6V/hHMLTOlQaWuGbvAa hzVOXyKw6m3/2zqebiVBgVChDqvxE1IPRjDy8GP3yyWXtUs5777DlQP/o+bm+7FTdXhi 96lweZYlwIzetZOYMBUWH9JnHJeB6KG31qzLn4pOuRvuzmeXmLYOfFiLTTkDqxo+bH3+ YathJ0J7hV31T7+8zX2T4eb8SGMd0JtpdATiotXwu2gbAPO6YtVojy1B6s5NmYzdcrc6 PWcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726944; x=1786331744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FvsgipU31nk17Fa4c3BK7HLyoHaUyZsM4m2Ma/Z/a0A=; b=ZSvpZ/gK1wCNWf7VD8FvYFK6ynMbUQnScDPQ0D1NjSMOuqLviL64uH9zZjqpQMaZ+8 i5SIIjCZSx2iJlLRMLxYUfjzdoyCqsqVBTMQHIS7FotPNCP0NceimUntiTwwhPOai5vm cjLtfhswAqZOmUyMQ3Z1dIAa7BLkn75XPiOKO32RvxJEVJOJttgI0M9Mk9gymLh+lXv8 UBeKiuWQ9yDN0gtBH3HCnoacv/xAsawvjE8z8cgc1PRvQB1qVGepflWwaSSXlt3/190j JJ7j3v1X53JNORwyrgkT5tZ/lQr4LLM8R2Vn0sY0fFZE0WmNxbx6KER0teAZqp5EqaSa Qrlg== X-Forwarded-Encrypted: i=1; AHgh+Rou2k61XSAAPFnC8iqNrixF2zF82nBxkW274G9OsNdE06whgTU06bSaWLZA/TSsLlC74lNRvbBYF0s8+wc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6g9rKO2YkwwGC6BqoYBpXfxwlkE064YWl1CLajfx3JoSLTW/4 50uPPA8/lor++PSEOSDjLssizP8HV6f8fdoDziLrdHVt5dUvW0C8TV2KdMZvqOz1wx0tVcvl6r8 6iQK6vaI05UH11sHp9bJjVYoTe6sNS5AVLKMQzcQNWTGx1xhOcoPiYuKPpHI6OmcgszE= X-Gm-Gg: AR+sD11GgVQ16kd3gur8gW9k51cPzhqNeIzBw8RWb+5lGJmTJ4Amxs5WWVkdkKHA7A2 SGuuJj6x4tWUNP5DdL6Ra39RFw6usnM05L7WHbbRRHuXbBEirpuxKPMeuKU7AEWrrrGgt+yJT3i kV8O51GSEN5jidbYar4Ly+CeAsns7KgkqnVn2/5RoshfKXIUvALmJ7dDnLOJImwvPJdYtEVZ794 CEUYS+/iIYUjX/pt/JKkcQjX1e+zrU4cHv3Z9f+eQ48XPCIcNmXP21MgxCvEcCKNfZOPpXlB9z7 megMCsW4IhnqeVUjqVZjupatoQcEWVc+FXXULdNURUQcUjyxGBA6BovGon+ATxaGzlxI7Bp+Gto +ntK/uUngN41ENtdCJG4kAuElc5WdaizQb66bhwNcRfJDFoSxs/CpJw== X-Received: by 2002:a17:90b:524b:b0:38f:2168:b9cb with SMTP id 98e67ed59e1d1-38fbc3e5c67mr7323470a91.9.1785726944095; Sun, 02 Aug 2026 20:15:44 -0700 (PDT) X-Received: by 2002:a17:90b:524b:b0:38f:2168:b9cb with SMTP id 98e67ed59e1d1-38fbc3e5c67mr7323441a91.9.1785726943670; Sun, 02 Aug 2026 20:15:43 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:43 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio Subject: [PATCH v5 7/9] usb: misc: qcom_eud: fix virtual attach/detach event handling Date: Sun, 2 Aug 2026 20:15:32 -0700 Message-Id: <20260803031534.2942628-8-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: CTOYwpmIB7IsVEMYWWW7dS5J-pDyeDlc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX4YB/GlNeidm0 WgCLLXw1HNn4syUs05Icx0BrvOmHZnCzxWdNx1Mwnwv2+FTCCqLGygqFR7iAxnsVHZaedquSSH0 uESQzuj324pAfXgkaWG4ZB5AQLeNjzGn08DF6lUpal7lQbSnH8jSujAgOMBFvVA0a7oiicDrpq1 nxfEWRx/qYgPtMUFS/1FENCcA+Rt8eRt/OhaDu+0K3IJOM2eGEuUuEFaKOfil7ItM/WKx+fLsS0 7CtxONmCZ6mmOIguweHIzTQBa7ti2lDhBpTQJZCBhuHFU7xHXrmTQCL9uCPotj3B9ZKNR+iuOuR 6LONLrROGE8y1la4PFYYaHfvE8md5qJCIr/lYWNQ8hNZJTowvBZE0fiFod/YaaJKsygu5FtxzO6 g5/ZejL7NKRrWbaH/RDLl6k4rf6OQ7VQopztpzvQ0HKLRjwTlngx1zRrNwU8FL3lbec9cAZe6vv 6guL5ciClN4bGetxL3Q== X-Authority-Analysis: v=2.4 cv=TpfWQjXh c=1 sm=1 tr=0 ts=6a7007e1 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=oDIJ3hVRoRHbvujwG_AA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-GUID: CTOYwpmIB7IsVEMYWWW7dS5J-pDyeDlc X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX8vGo8UnJuryU witrfm5YxEVbVt6CgGml1VD3UN7+8CHh90KOxMbz0LrAWPsB0Jq9thF5hh21ibYfyUfA5wvyLyv Za/IMLLFRk+/jRvKLKfg68HkiXOFCYA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 malwarescore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" EUD provides virtual USB attach/detach events to simulate cable plug/unplug while maintaining the physical debug connection. However, the current implementation incorrectly sets the USB role to HOST on virtual detach, which doesn't represent the disconnected state. Fix the virtual detach handling by setting the USB role to NONE instead of HOST, correctly representing the disconnected state. Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio Reviewed-by: Peter Chen --- drivers/usb/misc/qcom_eud.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 538e070cc140..a02f3535956d 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -306,10 +306,26 @@ static irqreturn_t handle_eud_irq_thread(int irq, voi= d *data) =20 path =3D chip->paths[chip->port_idx]; =20 + /* + * EUD virtual attach/detach event handling for low power debugging: + * + * When EUD is enabled in debug mode, the device remains physically + * connected to the PC throughout the debug session, keeping the USB + * controller active. This prevents testing of low power scenarios that + * require USB disconnection. + * + * EUD solves this by providing virtual USB attach/detach events while + * maintaining the physical connection. These events are triggered from + * the Host PC via the enumerated EUD control interface and delivered + * to the EUD driver as interrupts. + * + * These notifications are forwarded to the USB controller through role + * switch framework. + */ if (chip->usb_attached) ret =3D usb_role_switch_set_role(path->controller_sw, USB_ROLE_DEVICE); else - ret =3D usb_role_switch_set_role(path->controller_sw, USB_ROLE_HOST); + ret =3D usb_role_switch_set_role(path->controller_sw, USB_ROLE_NONE); if (ret) dev_err(chip->dev, "failed to set role switch\n"); =20 --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 BAC723515DE for ; Mon, 3 Aug 2026 03:15:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726948; cv=none; b=ai6/h9LpENceUoJJswwUusmJ4ATjTdrkIaCgJt8X8HCwuLUIeCP+ecxA6Yln2z4TbL4u453i1tru4pamBWiRb4+Vti5vICp7yJrAnUu2fIWil5XvnA1IM0mAijfrmVVqZ7acy2YP+/WbDyM5Ju9ytamv4yQs6Ysp6Hhg9q8/dzY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726948; c=relaxed/simple; bh=XZLciamH/wbfMlCyMbSXczWHwkmWjTG5jgkd1xDkSi8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fTDNK+Fqf3EfTJxr52oEyVvis/PDNICwho/N3TiNXnqjsCuYzV+lcHhWQIqaGjaMi6WCGrNBut7krRKRjZF1YlVdyu72QO3fAae8+d+2+5i/HjPbQtxS5lU8jeDw90PJC/2WspThd17YgXDVg/kgIxK69XvxmV+Gto44y72IOvE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=iqEcxq8y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JoPlBDgU; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="iqEcxq8y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JoPlBDgU" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LVei93299614 for ; Mon, 3 Aug 2026 03:15:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Gexg2OCd5HT 5LbNBVBev2qK2kO8LY++t9yEzWXMAh38=; b=iqEcxq8y26eonL304FCX5HJOVgB lUZcyAwMU3vQzeVHvV3s6vs4rR11E6YvIaCOVrXzMUgR02oUwKUUn8gyoVg4Kkma rTe5VWLRX7J04iYSb2h/bb+oPZqrQAj1vlhYlRdnYasE2L5BWTnjQ1dEY8cUuPSJ toqqbdE6gK9SvwhjVkFCywtAEIJj+zJut7GgR/G7KwtNvl9ITgav1C2StZ7J6t3u KngARDcsX1DxtwcGiLHMWpVuIi2J8Th5fhfv1JgF7sNoXdWfp3DoyRVOfab/20ou 4WKDYRGFgJMECERcGhF2kUrZvlyMhLQ6GVl9sYVxlllG/u/5pwjneqhv88g== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8qpv8vc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:45 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d02df2bf09so41118065ad.0 for ; Sun, 02 Aug 2026 20:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726945; x=1786331745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Gexg2OCd5HT5LbNBVBev2qK2kO8LY++t9yEzWXMAh38=; b=JoPlBDgUbSSIUWcsc4fiegYI7iMXkMqvgjv7rXOPnBCoaBpd+ve6S1s+yoBjWBzJp3 Nt/Yq6jvvQ5wojw1llsTkrQgrEDk6rofyOiknK8PJ6hU63vwEBJ18wdUEZd/qNKcZ01/ 8GYEZDQkHToptbRUP3+y/4p2rXA3wwMRMm98G1mHAH62HPRbgnMYUA8ZVgvNOB8+ZjSR FEuEkU3APsMRvuz1SSdZDgN+hUoqQQUV8xNYPkU7eEvzRGbn4se1Nvpz0AgTjP2etyLN SRUubGpbW31Ikof8ESXd/4+We07PFG5HrCMyyAg2IOKMUcKNN8lzpaqxL5xWsZGKH3uD JpZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726945; x=1786331745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Gexg2OCd5HT5LbNBVBev2qK2kO8LY++t9yEzWXMAh38=; b=RAoReFRCj5dGW6x+rV2obqfYbj9WUomUFRGtR9VG+yQY2G1KeQ8llm9DclLtwaWEWI 2SKe+HYsjKvUan2SaMxzleexaOZ39a4KhGSLbBRnsDOJMFWBeyexoGOPvbRf9YwLU4L2 +DHYW+C2JgITD9bAMZlJzlb9AMHmy+tLQSEDqg5aNODcUKlc+u8j3ePkFvPLgoYxEcKK Cs0FBk2Z/J5Xjwl5AZqIhbzgGo/azYiN+nYVoFe2RJKjHrA6KMMWmYqrH/3qiAgNlxX3 Je6QbIWZuHF/Yjk91LA8Dt37gcOU6Qls2h9hddRqhclEQwyXzfWZGM8tgIG6GNa5c/nX pRrg== X-Forwarded-Encrypted: i=1; AHgh+Rr+A5+T4geYfGn/szclEWvNIIbd/XfcH1JbkPBteeC9fWmBZCYUUrGDC0VF61aBTYrA78hSkJEaWZkxGaw=@vger.kernel.org X-Gm-Message-State: AOJu0Yz25PxVHZsmVabN67Z+B9hgwlG4StWbCvHIW/1igC9mYe3TctXg XEFVCJswU3RvIVnMZeIZnUBo4V8XAHKjvNc/DRU0rKA1AUOixqq1HEqv37O7tWCjAq7hNtdA4dE 9/cAuoKsaxwjyGV/56JK8SKZtHv9ku+FQIbu/5FIBL0IIlj1W+OoLyxitXixmMtd9uQI= X-Gm-Gg: AR+sD12qpRYO+hhdM+XKQ7vJ0LF12txGTBhZCz6SZ0MrzLP2TCNOYaEjc7xKhnAmMOR W2w/tx36vTPGIkIQBptTP7Zdi/pex8GFaQVs0MJhGdLQ+o6s3Z/BO57CpozpY296zJWa1Irz0O4 qLMwir+hgsqcsr5ghlgwl1BLfioJ3JOzIa8i5H1+D5g7ZqEp4zsfa9qi3+ebKtr2T0Ut/EAAdKZ PObCkJehdYbQ7g5JJ5RCu+NRLD0YGqAzFonnJj1Odb1vgZrzp/k+qftfDdN1yaOyeCvDCZVh8of V6izKIQZ80pRYiy2HUcmRsxQgiaxN+riCHfHWCMleFuzCWzbZ5aPZROhcM79HLm7raieSNWAUIf v1k2eUuxZaauJH+QjhbcIMNSv7TjCr9NUBYDtFjgbtn9ZDmEt7enJ3g== X-Received: by 2002:a05:6a21:338a:b0:3c3:791e:5e12 with SMTP id adf61e73a8af0-3c92a8e2cedmr8565836637.72.1785726945100; Sun, 02 Aug 2026 20:15:45 -0700 (PDT) X-Received: by 2002:a05:6a21:338a:b0:3c3:791e:5e12 with SMTP id adf61e73a8af0-3c92a8e2cedmr8565806637.72.1785726944641; Sun, 02 Aug 2026 20:15:44 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:44 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 8/9] arm64: dts: qcom: kodiak: Describe EUD UTMI path using child node Date: Sun, 2 Aug 2026 20:15:33 -0700 Message-Id: <20260803031534.2942628-9-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX6DhzM2EeX5PU OcRv9cfmOhZLU10U73so52VhRSegrEwTWU0i1OcI+ZkNhVK1fcot2HC9aM2VgC46yFiOtebwH/H xlfNXYyIylhg70rUfAISByHmFJEUqUvTmsb6WdjNOZBKS9yW4goeH5aYZWONy0YnDDnOriQ70NF 6LsFgkH9fXlKJEUmVVGimVRI89tE4OWzVYsA63cjit+afPtfwg3lQOpcQrtJNIoGxGQ4W9Vjl18 m5pverUwNvyjalSEdFYJAHwv/J50g8wC+qF1saNCzw5Wo9HYDBIYzQVhTdbkYb24ElwZz8G/5gH BQIQxyVWrseI0fYWPW1220oQYxYCjOV2ypRczm/YsfrT7+t6VLljDLzahK7o0Q+tzS7FiKQFElr 8olwHHflO6aftbBEgyNTSbr9r3kbjRRgQgZgjost2keZXl5U4Uokukyq8oq/54uKeq6mUD4BOV0 o+po7wlDmUkclLuZ0RA== X-Proofpoint-GUID: CNRuD0MtlrXTlGUmmJ9P7XpR1fUtPFz4 X-Authority-Analysis: v=2.4 cv=MpViLWae c=1 sm=1 tr=0 ts=6a7007e1 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=-Y8wEhFFMILef-Bpc8oA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: CNRuD0MtlrXTlGUmmJ9P7XpR1fUtPFz4 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX7mfqywXLsrn4 gU3S0TFf3dqqq/EYvOsiPwnnBsrz5tuBKl8ihyOzoZyiCY4oDTkpKPDnhIapAR74fqhRhBqxXN9 qnt8EEPDE14e7tLyWGVnaCAOJHc+l7A= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 phishscore=0 malwarescore=0 spamscore=0 adultscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" The existing EUD description uses a legacy single-path representation that assumes uniform UTMI routing. This was sufficient for minimal configurations where the USB port operated only in device mode and role switching was not considered. Update the description to explicitly model the topology using eud path child node and add a role-switch declaration to reflect role-dependent UTMI routing. Also on this SoC, the EUD hardware intercepts only the primary UTMI path. So remove the USB endpoint mapping to the secondary controller and associate it with the primary controller. With the UTMI path now accurately described, enable the EUD by default. The connector side of the path is left unspecified, allowing board-level DTS files to describe the physical connector mapping. Signed-off-by: Elson Serrao --- arch/arm64/boot/dts/qcom/kodiak.dtsi | 35 +++++++++++++++++----------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qco= m/kodiak.dtsi index fa540d8c2615..be9d02760a98 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -4404,12 +4404,6 @@ usb_2: usb@8c00000 { phy-names =3D "usb2-phy"; maximum-speed =3D "high-speed"; usb-role-switch; - - port { - usb2_role_switch: endpoint { - remote-endpoint =3D <&eud_ep>; - }; - }; }; =20 qspi: spi@88dc000 { @@ -4736,16 +4730,28 @@ eud: eud@88e0000 { <0 0x88e2000 0 0x1000>; interrupts-extended =3D <&pdc 11 IRQ_TYPE_LEVEL_HIGH>; =20 - status =3D "disabled"; + #address-cells =3D <1>; + #size-cells =3D <0>; =20 - ports { - #address-cells =3D <1>; - #size-cells =3D <0>; + eud0: eud-path@0 { + reg =3D <0>; + usb-role-switch; =20 - port@0 { - reg =3D <0>; - eud_ep: endpoint { - remote-endpoint =3D <&usb2_role_switch>; + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + eud_usb: endpoint { + remote-endpoint =3D <&usb_1_dwc3_hs>; + }; + }; + + port@1 { + reg =3D <1>; + eud_con: endpoint { + }; }; }; }; @@ -4972,6 +4978,7 @@ port@0 { reg =3D <0>; =20 usb_1_dwc3_hs: endpoint { + remote-endpoint =3D <&eud_usb>; }; }; =20 --=20 2.34.1 From nobody Fri Oct 2 09:19:33 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 D67DE36A343 for ; Mon, 3 Aug 2026 03:15:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726950; cv=none; b=IW43UqQhI1BH9NVZEpSaITojfEM4HIiOa9SfrUzC8ASl9GfE8Dt8jdtWpv/pLjWxx2eks3JU94AbMJ0eDqd0t0Ro3EfF7zRRCG3ICUsAtRrVJyKJMZpPfeveIML9hpXI/L9nE486+og2DBMeSaSmPTlDAiccOnnByjcme+JyJJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726950; c=relaxed/simple; bh=VCGrUCv7IOkUq2MZxdjNlkV2FpeOYj3YUXeRs42czTs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GN4mxyNg9EA/2EBpmC4w40yHDT4B/oG4atxMIuwgvwzC6SLs6B/TSKZBqzIJN7HCXb5XoeJCwSkxBPOZLzdSDZVPauohuyZV6z8jm90u1lZ6trc1VfthP2EY/zb4htkHgPFGgKl4MsMi9+SjJFOuWVUI9VXO4hO7UB/BJOgYzMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Iz/OQuO9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cYUO5/KH; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Iz/OQuO9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cYUO5/KH" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 672LXqp22556727 for ; Mon, 3 Aug 2026 03:15:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=uYWo7IWRIzy 0S9p8K3Ch8+Id4p9MfiNkgtvi0y7Rir4=; b=Iz/OQuO9c5kKacIjMLXe2rISFig VOMIzS2mT0NkziT7njYUtHdV4Cp7oVjMr0ZJPvKJ6OFbfBUeEDuWll3mWNcDWWga mIv0TwBX6fhHEIfwWxky2RFyGvfBH+7cxmuNtqWncL0Oh+lu5m9+/HnhwJoyjfr/ QI8LJfTy49izLz5K/uRIBWZfTgIUUmkLQjqgmhs7aDGxSEkC8YqyacyaDvFZKeMI nUtk8Zoylw/jnilICge131qIg96I1CDDAxYddxAORllNGToWgTTAWjt828G+/0V2 QTWFqB0FhKxs2m+zHnzn6Z8sJ8JdsUM/kQd5s8QxeOZpyXQZKN2qqoLBtEQ== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fsa3842p8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 03:15:47 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cc7e86e7c5so57449955ad.3 for ; Sun, 02 Aug 2026 20:15:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785726946; x=1786331746; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uYWo7IWRIzy0S9p8K3Ch8+Id4p9MfiNkgtvi0y7Rir4=; b=cYUO5/KH0dewTP6RfuyS1R2FqK/lHlVd/KEt5atIS0Ib02HjvlxT7Wgn8c4xfYTRhS CC3912/9Rxa4jJQ11HwIfchtFir8aOfrixPnH8K5D0U7jitgJvRxbl+p53b8ESP6cRHF 003QkT7uRLpc6dEQxuVnO/bKW/Qw/TIzX4lp9zc0NmrO2ul+2lXCiM/3RhLEyWPgHTwo SPAW+WfYwTbx4XSzunabMTQc7V+nDIX2Eayf6Tr/Xb7nDhl8kIIL9vm7l3iSx+u4vkyF 39dYDVDrYt5URduqaBU//80B2QRX4yW4m+a6qFA5s83kU8uCSJy2Ai4L7lht1WpmOxiE WLrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785726946; x=1786331746; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uYWo7IWRIzy0S9p8K3Ch8+Id4p9MfiNkgtvi0y7Rir4=; b=Pa1uWb/e/Q6MEqofqh7ItTj0CVPhRkrjW36BESCKjcwIG9Vz5bGy4UWnU7x0dyKRwL ozogrBXn7cR9Z1uWqodUl6DlOUui6A3g0z4GIE2ADhKLRkg3dFOlzVn1aOrpqKAVfQpH 0tOlYwg9LyjJKeIsXBN5R0hO3CDBn7G6xuxXPDZZlNkOVoiHSr67LbBJg1PuDp/wJFJG p703A4d/XiLm4IgOweYlwc4iN5iowaQCm3vNU5GkM+QEXUHINltceiHLHQqm3ywXLCrG LvSPoa2U9LymVsCKxoPEk3xrUmx+R5Th6iMSIR5YEE8ItYPoqeg4gDGd2mcC2pLqXFbo wcZA== X-Forwarded-Encrypted: i=1; AHgh+RoTkUmBk86kjDyI9YSzDS1XewOjGtJuXa0Shi4nw4Ax5khtULDU+wiQAlZWqg0972Eo8+v0zLQhoSyIMRU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2mMshvL7aXLji/r/ed+955YpHnKWGXSPIMs0gKUahahA1iT1i qJFp8w5+fmRyhXBsqwfhJ2VXGeke0Qt39n3RioDA4KGswRvfShcc56XRD0BwC0r5z5WCY3hX+eP ERph8UQUXMXcsZRBSiqv7SnbdZp3LWCdSNeufiIpnRuF9uvGJadyT1dWcYaghzEHu5jc= X-Gm-Gg: AR+sD10lJNSf96UWTCWa2kdGe0DR+FMlx9rEsn0MrYI1zlibpzlIHIHBZnurEES48fl v9EN6PHbPOuS3Pcowrtd1kPurinPUvnZvZAf7LkNkFI+TUBCT5pyNrWOKX82johYOPiOzA8K6ia NlxNqX5yXFNfe6AYKinjiuFiKbD+2IECnjOhvu3WJAJLwM9sNZgXOfrEb0sIg4wfs7+MoSl4GUK BSuI52N9xW7bRPXzMuAvFaBPfpNjKqaaLLvXvhDJ8A63DzsqsEDuWgl7IzFFzyRY3hmBS0JFIa/ aQ65nRM62jrzKBMbhWz2cBwBatbAqgAeWRolvkvMSBcSWG1Llk+lY3Ix7GVt5KuBgljO8aWbjR2 tWmACfjeP8WFiEV6BUYLDhEHK1cF2LrGdudQHISxxVWePJ0kHEYLTdQ== X-Received: by 2002:a17:903:350d:b0:2c9:ff29:3f91 with SMTP id d9443c01a7336-2d05219b9d8mr83778745ad.6.1785726946372; Sun, 02 Aug 2026 20:15:46 -0700 (PDT) X-Received: by 2002:a17:903:350d:b0:2c9:ff29:3f91 with SMTP id d9443c01a7336-2d05219b9d8mr83778445ad.6.1785726945860; Sun, 02 Aug 2026 20:15:45 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd9c93dsm32585113eec.8.2026.08.02.20.15.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 20:15:45 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Peter Chen , Rob Herring , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 9/9] arm64: dts: qcom: Map USB connector to EUD on Kodiak boards Date: Sun, 2 Aug 2026 20:15:34 -0700 Message-Id: <20260803031534.2942628-10-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> References: <20260803031534.2942628-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=KezidwYD c=1 sm=1 tr=0 ts=6a7007e3 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=2A7QdZd8yE5LlEUtRoYA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX86FclFuqwpYr P08cQaFNoNJDBDLsRZViCBmUF8tH25eynaU3GLXAL5Y0TQx1zOko+gZ6i+ZvyHlOe2x4xy0G1sO 4OmJgBqVKqcOjo31z5vW966H5llg5J8= X-Proofpoint-ORIG-GUID: uidAhUXu7Xce832ijYw0RX7Nu6J_c5hZ X-Proofpoint-GUID: uidAhUXu7Xce832ijYw0RX7Nu6J_c5hZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDAyNCBTYWx0ZWRfX5O5gZseQr+ZU Q9NoktbBbqiWWVvN05TxMKTh9Dgw7oWBPIUfmHPYmOzKkxJNrhemB3mWH9vYEHL1esrRpOQEr3A jIvE+xz30IOTUNXQhLwjQsZ7kwSFrlCTcJ2ENHZ1piN0rsUHNNEa2HwCMJqYA797JLrCnoJA/Mw V1MBlv1mwzjMasQS7Odc6Ga4FvFZ9YbdBzBWbVNk+vN7kqPgQM1Z4ZuAM4KAw2kuLjU+Z6NcnId Huugyd3D+ZZzp7fIHLLWY2GYg17IhYkYwO6FRi75j8QOz58/RI6yDUM4sk0066F04DtdP5AnP9I tQ33HSCpKjbRdmSO3uCI9ypbcLBW3I6yEvq5SWPyJEdQNFzfU5j8ERpIve6vaadOaHf3no6VuQ4 9IQNo1kPSjg7V84DNePZ9s4Xgv0znzHRk5fpQ45ZGC/qHLKW83MnP0iXBn2nlmVuElfHIyI/w+t eqlOEvF/lbuCss38KeA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030024 Content-Type: text/plain; charset="utf-8" On Kodiak-based boards, the primary USB connector is connected through the EUD on the High-Speed path. Update the board-level descriptions to map the USB connector endpoint to EUD, reflecting the intended hardware topology. Signed-off-by: Elson Serrao --- arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 10 +++++----- arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts | 10 +++++----- arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts | 10 +++++----- arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 10 +++++----- .../boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts | 4 ++-- .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 10 +++++----- arch/arm64/boot/dts/qcom/sm7325-motorola-dubai.dts | 4 ++-- arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts | 10 +++++----- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts b/arch/arm6= 4/boot/dts/qcom/qcm6490-fairphone-fp5.dts index 04cb9230d29f..c213e06a4428 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts @@ -98,7 +98,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1478,10 +1478,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c>; vdda18-supply =3D <&vreg_l1c>; @@ -1521,3 +1517,7 @@ &wifi { qcom,calibration-variant =3D "Fairphone_5"; status =3D "okay"; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; diff --git a/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts b/arch/a= rm64/boot/dts/qcom/qcm6490-particle-tachyon.dts index bf18c4852081..e9c0463daa53 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts @@ -74,7 +74,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -826,10 +826,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c_0p88>; vdda33-supply =3D <&vreg_l2b_3p072>; @@ -862,3 +858,7 @@ &usb_2_hsphy { &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; diff --git a/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts b/arch/arm64/= boot/dts/qcom/qcm6490-shift-otter.dts index 797f37596bf1..650c4fbc1606 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts @@ -84,7 +84,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -952,10 +952,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c>; vdda18-supply =3D <&vreg_l1c>; @@ -986,6 +982,10 @@ &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; =20 +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + &venus { firmware-name =3D "qcom/qcm6490/SHIFT/otter/venus.mbn"; =20 diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot= /dts/qcom/qcs6490-rb3gen2.dts index 37a3b51323ce..514d6d7fedb5 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -211,7 +211,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1402,14 +1402,14 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_dwc3_ss { remote-endpoint =3D <&usb_dp_qmpphy_usb_ss_in>; }; =20 +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c_0p88>; vdda33-supply =3D <&vreg_l2b_3p072>; diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts = b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts index a5ad796cb65d..1d992dcc89ed 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts @@ -77,7 +77,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1046,7 +1046,7 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { +&eud_con { remote-endpoint =3D <&pmic_glink_hs_in>; }; =20 diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/ar= ch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts index f47efca42d48..387c38aa87d2 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts @@ -93,7 +93,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1090,10 +1090,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c_0p88>; vdda33-supply =3D <&vreg_l2b_3p072>; @@ -1127,6 +1123,10 @@ &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; =20 +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + &ufs_mem_hc { reset-gpios =3D <&tlmm 175 GPIO_ACTIVE_LOW>; vcc-supply =3D <&vreg_l7b_2p952>; diff --git a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai.dts b/arch/arm6= 4/boot/dts/qcom/sm7325-motorola-dubai.dts index 3c836e196b19..99913ba41d55 100644 --- a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai.dts +++ b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai.dts @@ -98,7 +98,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1431,7 +1431,7 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { +&eud_con { remote-endpoint =3D <&pmic_glink_hs_in>; }; =20 diff --git a/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts b/arch/ar= m64/boot/dts/qcom/sm7325-nothing-spacewar.dts index cb59c122f6f6..a2e160f3f46e 100644 --- a/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts +++ b/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts @@ -99,7 +99,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1440,10 +1440,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vdd_a_usbhs_core>; vdda18-supply =3D <&vdd_a_usbhs_1p8>; @@ -1459,3 +1455,7 @@ &venus { &wifi { status =3D "okay"; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; --=20 2.34.1