From nobody Tue Sep 29 05:34:25 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 634BE313E31 for ; Tue, 11 Aug 2026 21:36:16 +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=1786484177; cv=none; b=dM11+BW/YmpFETHQugVQrLoSR4YZoZkAFdGrWyJzravQRIQxT2ruMh7DpOcY5AY/ufROfz1aU2qd1J+AFlA7JVqn1yezMZr+JvZzAljuEZkMelP5ecedK9NMFDoEKa9xPD1y8YO+nsQITrEg7JzBoTyvqgmUbICSNKXdwr4a+3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484177; c=relaxed/simple; bh=vMN9xFS7+UE4CpC8JHmwvxMa/ZHXGxw+m0BPvf48J2E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hXvPDs/BtYtRbphhILoLGaczNWT9qUbsmF5TBNhz9RRt5d6nFyq/XhcYrBNsUPWBtAtrPpDtYkrUTsJy2z7U503D8hKUxrOs+16yrVFa0DXfIdChWuw0O9ZCa0kGHA5bqQ3GdxMlwH7mdOxfD5DFO8Tpf4Ytx8NAKC8GI8rgdeE= 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=FEKvAmTo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EBh0TxS2; 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="FEKvAmTo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EBh0TxS2" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQRAI1835903 for ; Tue, 11 Aug 2026 21:36:15 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=Y6Vl3S9Ln2Q ++E5qKFv7377jV7NXuG93z+ypJQ+LQuw=; b=FEKvAmTobjJytMmB9Le3k1W4Elq mYQ60EH8zAZ2jda057ej2RJlmJUo1xpeBIfcqb7sg9AdBjb/u+JG/xgTwLG6vchu V7sM73cb3NpdQPdZCaGZsMMCwt68EzL9X/0w6PwT5fwJzwN4GRGl7UMzaAhaDQgl HHaC5WLuzuB6d6uhu29k06K7lsMNyqmliAnJWBZL/0qU8QUBS6l05glBr9qc+87Q tFU+BHpNaRWmoHWMOcCJUOxXlyPLG81s4/OIO5+Rla2j2vrQpaeH12y0WNHPbW0I N99bMInffo2ffSpL5wX3OfczJWgLe9MK7ag2GI298+QQS6bPLuvOcmQBwIA== 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 4g01nc2rmt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:14 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cfca8558d2so4623075ad.2 for ; Tue, 11 Aug 2026 14:36:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484174; x=1787088974; 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=Y6Vl3S9Ln2Q++E5qKFv7377jV7NXuG93z+ypJQ+LQuw=; b=EBh0TxS2Sx/akIIs9KeydtbJV8zhkFN7cuH68grGkGSW1hrg7UK0jcIZ4LWdcK4HpN tzyr8aVUSi0l3ywO7nNIIe2KRZVDB4y0Xw6W/pXg2b/oHsc95ShBPPDSjO0f87DIx2YI 2cdvVIx2zhKmHleMErNfjPvsp0mcg8zYJNcDO0awdywAr6MI2rTZxRzuvDcEEMTNe0uU sh1zG0O/1qMqKan0VdN6LYykZPFIIq5KJNbV8zYorW1r6NIuhc4TJl4irKGJNUgO+G2R K8U7sLeR22gUxjru9n8piXgiwGAv9dxQ5GqA7MF8nkklRVe/9LMogslMv3cVJYqktueF 3TPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484174; x=1787088974; 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=Y6Vl3S9Ln2Q++E5qKFv7377jV7NXuG93z+ypJQ+LQuw=; b=mvW9Mq3xnl5c+IKXhbtgbeVCGxPsu5OQn2Pz/9ivN+LqGMlzS6kKhNbG1D+P8RGvfs WQX3jfR5mk7F+023Alddk2YExpVaPSacR2Ic5/f3/S+hOqmJ861igTbmDmy7yyamr7/6 hJkcK1nZbRWs3WIUaSLbgfu3LXY5BMDlvckOejD3Kn7PI2EhQvK/7SynIJ21TiBRRNJ0 rA9lBD/hE32hWSaZ8bDg6ZGKegnKXA7rgPURiPeWcqK14R2c1dfhfVVjzCd1SYA+Aw21 PUcF2nDfIo/tDTxuv6NUcPMETgkDRIjL8CKGBLNzIy4mfLOZ+6Fv3WNFBzVvL7s5chjE xMYw== X-Forwarded-Encrypted: i=1; AHgh+RqwLYqwE+ZIh6JMSCLc7+7ifNQgSX9h1wrR4pXaDaKJzO1hHm2rb06MBmR3Gv7HgnPMd24cdIdtN+4IJt0=@vger.kernel.org X-Gm-Message-State: AOJu0Yxo3uDnyKCdbGioEreOAAbOymK9XP1PH4qusqHDlw24tgGcdqbJ VlRiSQg8KWaNi1kdo9cIsuI3XKkcQadZbi+VzoYOY/sX7EtCMnojmYY/FI38k62V9VZ1SEFeP74 lglylj2x5Fpk5+EIyUQK4g2wHOavFxgi+T6SOV8Uxtl6BD8SOHjYczdkdccNwJAO+lI2JVkG2Zu M= X-Gm-Gg: AR+sD12fucnhE8xDJVRGy72Dyvaz4FEjPIFomtcIQ64JeYdZBA/FrmLTugKCf4mQOCW DDaYjbn44T0H82N72GCdG34zBFSuySRXIRXu+wHS8oBy9VAjIn+OnHq0hW3kHi2pLDem+Fpt95b DkKxrar1i1avNpB13MUu90V+EYvjCyg3yF2IMln+iLCmijQ6ULNworRkywteWaF98wtZ6p970Sh BXyBB7lZ0f2DnjR/aOdc+1xaBZFkqP+9WH+3RtTClnmfiL8JhF792/RciZGbaO4XcqU+4OKqVm7 EO4fWzYhs8uGzTr+9DkqdF4jE5dcd8LM1tcEPQ1Wqa9mjaLflb1oahFlPOcqPEYifCsz4LuFnqr 6bz1ZB6Jrt0cFsHcOUH0uCiokvTQrrs3HcK+2QbgP5+NRV+bHH64ZDQ== X-Received: by 2002:a05:6a21:6014:b0:3c3:8d4c:6679 with SMTP id adf61e73a8af0-3cc2baf91c1mr9221715637.20.1786484173493; Tue, 11 Aug 2026 14:36:13 -0700 (PDT) X-Received: by 2002:a05:6a21:6014:b0:3c3:8d4c:6679 with SMTP id adf61e73a8af0-3cc2baf91c1mr9221656637.20.1786484172935; Tue, 11 Aug 2026 14:36:12 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:12 -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, Krzysztof Kozlowski Subject: [PATCH v6 1/9] dt-bindings: soc: qcom: eud: Add per-path child nodes for UTMI routing Date: Tue, 11 Aug 2026 14:36:02 -0700 Message-Id: <20260811213610.2956147-2-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX5V2QOenJK5DI lnWTEpBS5N4Z60IG/gRAnnZ96ZUhYtflwqQP9iRJ21+e4or1cswZ0dub+bEvnB7TWd8jSX+5/t4 7Zf3rH5ZDsuWs1AV0iQ9jHS68kANgOc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX9KFRWqNgNqSk 477HOs/pqHCT8qZSlsDx2H/BHMqZpD54mor2Obp9Ji7aDwiJ0vbEaY+x8SUUSgEUbUHTaMR0IvX UnmRajM2R+itFj+1LtPm+5xfEmu0W++eTOktq0RI5YMoMyb4cXeSOizMTjjy9EqN4S8Hpz3INHq gLmsVBJGL+3GuuYoZCJaFHEsZcSpwdMy0NUJ4h3OAzkapcJiYDjOL5zDEY5EbJD2PNEcKE2HCPw cBtgvGNIOvO8A+EKCP+lyZoIHWVpIwJFaujra+NM63gZpHB3f9/NNq70aOxyaozysFJGb3CGpSh ceBe4fQvbq9icPm6CoP8ovr0kLCi9m5pPFf+CDQHxJcEvWw8xSM4zbJIWizlGYlPWVcrKX5OVVJ mBeXbuOG5nsPk7PdbsOOTt2mOzoaYZuV/mKTGGrC++/APiEKo9l5UR7Q9EhfUB1zNGCMwMYWiSL iZDOrcy3EqmUaQf4Hqw== X-Authority-Analysis: v=2.4 cv=RY6gzVtv c=1 sm=1 tr=0 ts=6a7b95ce 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=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=RJ9lep_nkaVUh_m6BXgA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: RRaVPC80TXFbObsDn9_HpDVYWKuZGxdg X-Proofpoint-GUID: RRaVPC80TXFbObsDn9_HpDVYWKuZGxdg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 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-2608110182 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. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Elson Serrao --- .../bindings/soc/qcom/qcom,eud.yaml | 133 +++++++++++++++++- 1 file changed, 132 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..0e35bc9a9d20 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,87 @@ 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 + properties: + eud-path@0: false + eud-path@1: false + - 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 + properties: + ports: false =20 additionalProperties: false =20 @@ -77,3 +155,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 Tue Sep 29 05:34:25 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 CBED84779B1 for ; Tue, 11 Aug 2026 21:36:16 +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=1786484178; cv=none; b=sWdYwkuYlMPhL7Z2RZyyvlg5LibjbF2isKvGp+WX+uK6GdWjO5n7SIDaJ4dyUVs1PrgAVDYhG2UFZuOspYLPwdkIgA5rL+HdqiB7YYCGYK4AmxjOI+HncUYdDg0uAuRcIUYSOD0CU3t0THzSE+ifRHAW/l9IOrMe0HzhCZO7tpI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484178; c=relaxed/simple; bh=ldhObfEr4z0Xrekc9qI5UQO3v16oHY3sXmgjk69PNKU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=j3k975WeFkfPwifO4Vvan7SuDuUdthMJ+AHnOGC8ogglrWclPqBgiyavLikBepc2QmH8Aw8kdt5EpVq6a9Cfqdbd/QrBkMG7rOHYA8auIMXhYidV1eejyI86OftCal+41zlm42DPQarPnzf6vkClB6Nu/WcLh36BjXzrWRkA5EE= 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=CVP92sRV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RLbzVvgH; 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="CVP92sRV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RLbzVvgH" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQm6W1836714 for ; Tue, 11 Aug 2026 21:36:16 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=nvOjwEmlXGk kLlIdjY1MOSExUXg8PKOSC1XZVD1rwvw=; b=CVP92sRVi3tpigu/yKFE30F8qq8 BdddpRIFo0jCguAr0A4vSnXzk16v7x1JIAkc1qcQqUhgFqFPU4Tjy8/HJ2/rFTnK lk4IFDPA0HuYUyqMitqVWVjaYs7B2TpnVzBfebievMCGghoZJzSsX0k+eUChn8oN dH3der4MrcBKODQ03YB4GO2CoRoPET8YvWeLP1VvTmL8VZN6BtJB2T6sqwjaiZIe 7r0EMuixaszIKlVvQgU6893VLnCxBhxHtqToLiynEIUHDhpd/6tHcX0C5Q8si6GK /5qu6cMQmxu2oa9qAGeKTMH+JcCE73U3d3lfiddN/4HTo+2FSzDZLCahE3w== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g01nc2rmv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:15 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38e8e864ef0so499588a91.0 for ; Tue, 11 Aug 2026 14:36:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484175; x=1787088975; 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=nvOjwEmlXGkkLlIdjY1MOSExUXg8PKOSC1XZVD1rwvw=; b=RLbzVvgH8rQcraYpA92QzkKtXf88X87VX+N8rSYY+s5thPPtxoY+jYtYp20ANNN+zg VFePgS/sYjDWwtV0B+Eiw/JsJ8Hibplo72ELRx4ZwBPtG1hmN/dF6AQ4KIJANcOUMZWE 4JBUFJVLSjVQotRu/Kbus7tbJbECy7F9gzUs89QWEP4D96XKtmc4pkPzKa49/0n8jjh+ WeHkxyzb6z2Ck5O+1tmAeauhQ7Pinwg0rHUcYi3j75B0/2Z4F0Fu006qYdmfYA9iKFz+ 3CNrbTP7XqTKiMuaBmIJYGQqPx/0CZjaRZXx/WKl2VSpF4n+0iGjtr9+qpLAu7mC5609 bmew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484175; x=1787088975; 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=nvOjwEmlXGkkLlIdjY1MOSExUXg8PKOSC1XZVD1rwvw=; b=R1qz/Xh8Vnbnu/PX1x6c1VeFfN8s0rFuDq7+o2bNCOe7WaHaEJXhMjNQ2Q4nN7p8aC ktirxTOAItej+E4w3LV7dKM5/eWuHP1HBlMHFQ6mpr7rwyfQoWMhHnEC3JN6hPyDwYF7 JwasmmFTjqeeOKY0uQM0kP6+PqepyTfU1Hjgkbxtoua5N45V6TnAP4se4BlZJ9AUQpTL zEPfFQKG/nrrOELe8lUNTvFPLmyV62fDxd+/J5+hQNE6jEtBl+1RezWIo2IlThSUMC+D QrFiNq8fYVg4PQ5h7Rxt14SWyQvzwVb6FlvLrqrTgN2unreEi/9Js73mSQWu9usnTitx zbwA== X-Forwarded-Encrypted: i=1; AHgh+RqNcbimqPC96pWey/3+6uA7Qd19mXhNAe7GPhKNLVKAGMxpT3eQPlogEig5XaPxQOnuCTLveyeHvTcvIFw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxx6yXkryLGXnhrZ+PyqNVnnyR/ejl+DzRGWncTYYr3xmQAPAYz ouwgPrY/37FI0JAZkUgZhIWLQi+nMM1QtjR1sbvRRKMJLIo33x8maorQEaVq466vR9LFgD1r6ol DvmBjZ3lOft/T9IWKdkxeCoD5BUz2NBn2pixs1UvLNvF/YnGqfhAT7r4HTlC3fyiYWIQ= X-Gm-Gg: AR+sD12ZAFrzAski2/yxWyd0qGlPslWwFZUeEG4K06V138c/SLe8EpRWR8l1eM1Bk6u ho4kTUZ/EIdw9pP/LceTCGOUXQdOjR9js/U+nYCaYNpPcfSkfbZcQ/oj0xOW249Y4R4fkkdHddZ KflljmCUUyY5nn8b76V7xg5JfQMk2Rb1hJ0b1g42ttd6HnWQqTjQeaY3XFGzNx+E+vDmnXULKbI gYY9/B8KKG9aQj7h+AGmJY6OpkL8EogyKY6oIAuWISXa+MWf2u/ptWfaYDqrTrvoTToheiFnCOZ iPUGl/kW/B+Gan60prUj6z+sr168lfS/LTu5gJDrFIa0OvKMKeMqpCHJu8diaWSUZQ7HDb1kxlz 2ajWrIgMz+T05BpAj3/iKiMpqlCRfENf16lqvRJSag0mZszc0S5Hohg== X-Received: by 2002:a17:90b:590f:b0:38e:542:6485 with SMTP id 98e67ed59e1d1-393012c79a5mr28719a91.12.1786484174513; Tue, 11 Aug 2026 14:36:14 -0700 (PDT) X-Received: by 2002:a17:90b:590f:b0:38e:542:6485 with SMTP id 98e67ed59e1d1-393012c79a5mr28646a91.12.1786484173949; Tue, 11 Aug 2026 14:36:13 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:13 -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 v6 2/9] usb: misc: qcom_eud: add sysfs attribute for port selection Date: Tue, 11 Aug 2026 14:36:03 -0700 Message-Id: <20260811213610.2956147-3-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX0ky7sr5pF1bj IItxvHIUyT0ajF8GVsaAWrht1wBb6wls5GFXvwfQcjyNo0CLOk5QvQOZw5vmoiwU2P2oe64UOvG N6pCcD4MTUS20h0y8wCeCq+UB0r8phw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX2hAnOH/tjyqG +hhbBKPPhhVgMGqIAMBQSxEKR7nd8NafCCVFkPbY8FpIeikfQuM02eRQPjTgZpuztW8seCLpRrZ uV5DfSUoh2GCm+9KLiTNVKGxnziEubMJWFAWMYgBFDlSpyl+ctwjnDTdJUjDPLDmr2zXgkSwnhq 3vfhx8lr/6rhUoJclWJAkcK2LlQIcEIHSd9BrKMuYWnSvCeDTng0iKyh6YgvtUDI2YZFekHl8LV dYcSB8hagQM/wKdRvlY6AZeQ9CIVXK5ghtlEi29nuMAHcJSWfzIiSl4qCm14BLB+3W6a7WRR4RC 0c0ekzgfcOmBHEBd5FY/O/2PjWUP4KjgHTQz86A4isodP5hiC19VnFrAAUGWXxcbvj1yTHXuh+P Iy26P2f8u2LLcJ+MB+JkdNo2vErsB0WNZv8pL4yYVEFtp+BmfN4ERudqBMGh/dKezFvamF9US/L dRJO/+mOKd8OQ68pmxg== X-Authority-Analysis: v=2.4 cv=RY6gzVtv c=1 sm=1 tr=0 ts=6a7b95cf cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=qXh0dugIJu6lbCvlF8UA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-ORIG-GUID: BoMLhlkzG28DJEBGY_LCREHshmL0EGM8 X-Proofpoint-GUID: BoMLhlkzG28DJEBGY_LCREHshmL0EGM8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 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-2608110182 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. Reviewed-by: Peter Chen Reviewed-by: Konrad Dybcio Signed-off-by: Elson Serrao --- 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 Tue Sep 29 05:34:25 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 B637447D92D for ; Tue, 11 Aug 2026 21:36:17 +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=1786484179; cv=none; b=TzS+DKIk0CXc47TBJHMCDkntz44b4/IpQbJSEA9O16TXTajLnQwh0+VWlNedWQ9QIF1DIDSBc1p6nUg+udqughuE6lr2DbTRbbSx5RoRbqRLtCPNqShRWx9GzoHkV4jtPUl+Fu+AsCP1cCETbH3sI4tD6TaQXu+ZgsoqWx3rXEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484179; c=relaxed/simple; bh=5XbMsA2WEfWZ5PXFP+vN1bXOmWMnIkvRDYrvY8qwc8g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G/xtYouZScvmCxxDgrwtM11GH6wy4hNaM+97Y1PZLsf3EQL7j1hXljhd7b0cWDM0cFbwmwX5m1gD8RFNe6itBPg/ZRM8qlHQEt26oImknntPdkXY2spjKyA6jpco11/SiEWXUQlw6UG2Y9i6BaCetCi0qZ6luRgNeYpIKW7SXbk= 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=E644s33K; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=E5Y8/7YB; 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="E644s33K"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="E5Y8/7YB" 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 67BLR1he1522387 for ; Tue, 11 Aug 2026 21:36:16 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=6pY1IYJCaWc Xc+Y4IVIbUdPUrvld+59aZISMpQApWk4=; b=E644s33K0sdUWRFqRX45eQ+iUAv mTrP84Zvuo4MhbJQj4X22VX+yzGEvUILRB52pfHSySNKdUBOHyR99MGY81rY3rlm O0zYjZvRIXK6lemHGhhaxj/Huysen28XBahpmvOl+ncpdziM8gXjeLUmAOYtrecn Gvw4KScum88TyS9i3oZcpDe/YU4Y+azzOOjL2NSUvTcs7lfpzYWbvqDgBjQZrw7x bJ+A++D7RkWamjh2sbHgYA/qft6+RWUi931Tw+9BmCz+BmyDAzzN4dilZmUZS6bY 66eLaJkEfYgSgQr4J//dfhWhZGhZ/9LVvWzQ4WQ+YUA/ur3IOY7I/uAhsPA== 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 4g049mj60r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:16 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb5ea36f969so229846a12.2 for ; Tue, 11 Aug 2026 14:36:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484175; x=1787088975; 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=6pY1IYJCaWcXc+Y4IVIbUdPUrvld+59aZISMpQApWk4=; b=E5Y8/7YBgSu6y7IQcRmDmMJdmviIEXMHLgQF4fn8aZtGl0mqGHrtmQEHMVvGLwRnEn Xx/63WexSyXvcn19mIKUmzuw31oxoL2kVZE8aigm1n1FBK1C0p9pPcdWVpMuU57S3fzd Z/2aJmiG3hSH6yLdV7KVcMAol3zkZ8VnY8XwgDGVqZQRwRHu2dVd1oQBLbL6TvdOh0CL mbDHNzt1dXmNZ6WsMD8089RPSVZcG6daBc4LmaYrtXAkvgWSHU9Gyj7cIxHQ7mXU7PZw uUdv4xHU/+EESW2Gd9A2EeIIE5CX1TAEWqnWzVwe2+gYfyzx7dlarMwFKqhgGaRFbEaA A2HQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484175; x=1787088975; 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=6pY1IYJCaWcXc+Y4IVIbUdPUrvld+59aZISMpQApWk4=; b=K+BRBpJO+1rN2voetxzZfi2iBFfQqwUwoNsZ2laiDMdcy9Znty7gAFT0GpqqjAlRJy eWC9OrYepXxgajMVPMO8PPGizh6UbHQTRJTPNZoisAwzqFh8UbQJvks6VNZ1RRF0rZlM Zzeyew1WgrZMlme3OuYldEImzzRAiy0FJlc+jtCQfvGdAeA4wyVyBM+xW/q+Xwqy7sso daC/C6GRDjR/4QBUcNnkNRHwYtx2lDtQ42UcECrV/BIHdEmN9Yun7fDNgTVboMldCehe kDNipjR3SY0r0SUYbgfFc3CwrwzpnmATHX6kJYZsiPATefUtM4WhNdEY0bjYWqdEoNAa UCrQ== X-Forwarded-Encrypted: i=1; AHgh+Rp0gmEW3gmhY4PtXYwXqKGEIS+eFZ5DQc6TIyoms08s3nYcJ5GLmDc6F++KrCV2pRf7eXatgVHjIYbWD4g=@vger.kernel.org X-Gm-Message-State: AOJu0YynKqnEazcmsmoiHWikXHCMaY2BbZsvpxNTS8g9F6xEq2bXXfW5 La8MlL0KH19tQpPJ2V/+4cdzK64em/WZBt2V7lBHSoWZJhOrOykUoAoV5lZeZyWPzbsWcn9yx5B XYH+EjTRhD8+lxabCT3YkyBnwMW0Sd3MFjE1/Lt6tXtY7iMtHQoifb1n3VZ/EvzJ+ziw= X-Gm-Gg: AR+sD10Uv7v/AtzTyK99tM4y35OCdWgwyilk3S1zEFtJ8CuBtuxv1rIvgj3Hmy9NDLg ppBF+nWG1cy0QOHflbCXaYJVD70xj8A8JZ8FGznm9OLnFuqjepshQHi2b+lxmh2llj6Ft8HWrmi LYXXgav9zqse0f1V8gLRiuTTf20ULtAwOoP7JEx1Qzh1sc0XYAC1a2qk63S6IKZJv8jvjNccOHN +3bhc3lPYohX50jsPndnuIfU1A2jKRcZ8hPu5CM3pLsZ57/obQBlDv3HKzhjqc03MzkUqY9/QDD Hb8nMgW/I5Zh8Yq50r+l26VXikPgmxLGHIdkqNEt/A737k/4m1798KnRwHw4NVWaliIcDv4A+q3 ig8QI1z9d39w4RpOvKtITI4wMTbHVNzx8fcC6fx5Br6je36YYG/kpxQ== X-Received: by 2002:a05:6a21:e90:b0:3bf:d0c8:2aa4 with SMTP id adf61e73a8af0-3cc2b7aa2famr8747888637.8.1786484175486; Tue, 11 Aug 2026 14:36:15 -0700 (PDT) X-Received: by 2002:a05:6a21:e90:b0:3bf:d0c8:2aa4 with SMTP id adf61e73a8af0-3cc2b7aa2famr8747839637.8.1786484175051; Tue, 11 Aug 2026 14:36:15 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:14 -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 v6 3/9] usb: misc: qcom_eud: add per-path High-Speed PHY control Date: Tue, 11 Aug 2026 14:36:04 -0700 Message-Id: <20260811213610.2956147-4-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: hWRKu6O9wNjQqz-KWSGZFOQdzqESI7CJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX0s7nSSwZrHMn Tih+OfQGtj8hQ7/m2nKerRH0CrOXtf0v8HLp9F2j7eRHc6SXJH58FWFc4KE2q8Sa4y65SMTrXgn 6tdwjAN6CVy/eT7cjV46EU07NQTG3g+pM74+tzyARQmxmS4HrHj62JzLdZU35bvHZiW9bykXYv7 7b6yGomesIRF1MyBDudkHhJf5Q1LAzixGBAg5DnvU3gLXy8aAdcrOxylPhbevtFvcgMtmPjB6vE z2zDjyTXuc7nOdYB4DlOBhSdxcM0qJacdsNzYQwwEFIKmFoV/qBDCs9KwmkE4TMhxKvOp+2Ogyf wkuz3WdBnzKM7sAULPp0/uCVckuVb44HcBXO39Y1Q8wQMhjxFMCy8TCLTPh0Twg5XhdqUEGgBNy V7QPQcXwvr8JXQ590F9sped+aOZbKMmUkUuhGLJKu/o92KkrsDC+rCIeVhCta+2U6zkngswaPmb huAYz/BNB5BtqumHnXQ== X-Proofpoint-ORIG-GUID: hWRKu6O9wNjQqz-KWSGZFOQdzqESI7CJ X-Authority-Analysis: v=2.4 cv=FbkHAp+6 c=1 sm=1 tr=0 ts=6a7b95d0 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=yx91gb_oNiZeI1HMLzn7:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=OKkk4dbWoaB1VCfbt-4A:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfXy+GtjnckdzQS 5Z/3sa8B+v9l8/zz2SLr3DSM1LCZbJlgK/DmhRwZ6amcnyqTD3l/Yue588SVjgosMLqT5gc9aZs e3ySOmbxkCtMgKrw/K5idjxfMOhNwik= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 clxscore=1015 bulkscore=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110182 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. Reviewed-by: Peter Chen Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio --- 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 Tue Sep 29 05:34:25 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 56DA647DF8D for ; Tue, 11 Aug 2026 21:36:19 +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=1786484181; cv=none; b=n6i/kv8Q4gtcJ4eOVThf8PQC7fjYR+QcF8aA1byoKt3tK5RNXZmhejr87WB5/z42GwmY2KAuy3z4poJIDCn3qCv/xOPGF7Thy61lWk4euv9IekBxGL3omE1MWJtJWsu18kDSfElBlDUNeJKB9guqdT8yfR7LS0k8lYEUpNnWYFk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484181; c=relaxed/simple; bh=0L1Nlyhc9R2Fh9oy1Sf9Zo15aqLWpgRmbpV5WKoAi2I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gqd464+lUyBJIriKQaGd5o55T1SC7EfFfX+l3ofB/mFWV2joRkHwjn+A+Df8klge5Z5+52LBNqfCXw4AUsiKj37sliuiSsTCDC37fy6OaJlzwfrwKch3TuZtIJSgmCD3wh+eCN2BkhTxqde6WTW9dLPrHGW0OnCdGdIv7f+ODfs= 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=EzgfKZBR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=e9e1Ol1w; 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="EzgfKZBR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="e9e1Ol1w" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQuHb1756990 for ; Tue, 11 Aug 2026 21:36:18 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=pPQKRnqntZ3 qOHUeBtj5RYbP4mgE0OmZLSFKwefcwXk=; b=EzgfKZBRlDxuuc9d/+o0KqsK9WN 08XYGSYdUI4GIMxqsJ5DyiNW6Dlgu6Z0pvUvtU+z6OfR6vT+lIn69H8ET1VLWVGL xQIAFezDDOcbwWjNQnZV6L2CK1icUyn+Hit5XQGKI9wwI/0VX04ykfTOX64Mn3oD +jnJWcyF6XPPn9XWvNeKeTOOmm/IE+ddv9dK9BUKym0zoNU/suZ7faTswjIU+5Et R/yJ4ySJrUB0yTDOsGOKGM2gLNRR2MSsgurBG7zgOsWGr3g5Ssab9zfPH8a+RiR5 F0a94g2NF0ea99NDWiGKeCaxjFIFB5WkzL0ZSdZjw+1hJSzE2ps9w5hk0Ww== 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 4g049gt7a9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:18 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38fa7b09921so511714a91.1 for ; Tue, 11 Aug 2026 14:36:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484177; x=1787088977; 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=pPQKRnqntZ3qOHUeBtj5RYbP4mgE0OmZLSFKwefcwXk=; b=e9e1Ol1wM4FZ7LUtZnJb6FWBx59ADPFgOGew+KPMDerKDJdxaHGtbSKcAFIxlWNaw+ vYesHpDMOE8azaEtekGjSBRGYSEpvX33Mcfj6VXcj9MTXDw7jNmb15sdxcwdBy/QSoRz D4gaax5sidPeRI164QZEmqd8l460k1mek2BwFgbG7IwxhJrXexDvnGlm+Rc66JKbCpf3 ub+iIIThKREc+2KFfxDoxf0IgEVO/7gpxHmaspdc26QRbyHg1JwVCtyhjkC/OW7kmp40 L0kkijers4VLq7b4xQ/GxKFMsrayzlOTZlgjh91Fs2m3RFavAVz3LHRa7SUaaiG1sFdv 2tMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484177; x=1787088977; 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=pPQKRnqntZ3qOHUeBtj5RYbP4mgE0OmZLSFKwefcwXk=; b=clpKSskdEhHR7/SHGu9oYikIU1WLItwAhzP8QyoexxXObOCFdHPO/qQ1Z4X5l9QbCh s3GSJOoqA3O4INOej3V/l0yliZ+5twybCI3A4uBVpn4RXnyN4hKWwEadgwEc0K3BpTtb 9CpiztU2xp43EpYXa5GxZZEltBP6twfCK1ueWYFQwVcOG9HIWT0ic1ORsZhpDfZ5Cxl7 p4I5uSWbJUE3fDNBM8MXNYFNGZh8Pb6yW+nBmoXn6Z6UZ6zKqouvBA4VVmmJLkXEO7sf j09LzOGnr4g+ssOLIt+lH1eLmVOwzjKAQxxwlTc36WQIIyVBHho4NjXvWjkV0SGCjg2a r7dg== X-Forwarded-Encrypted: i=1; AHgh+RpceQZqZ4QBkVq1r/ElBPkh+8BqwqMLk09HSkkRF7NqaX71cLsk5T22nDos2ez5Lr61Z41XD8y7MQmRs20=@vger.kernel.org X-Gm-Message-State: AOJu0Yzx9s/4r8hlf1V6BcZ3Ye9SR0kHXMLHebZEIebZtCDX+jlJErHL Rcr3EhSWc9dhNLdqUvIbKPVSemElZk7q/ZO+plz+nQV3T80VaFq4vk0wT00PtCzyZseTKhYQRAc YaK6qwaa/K2Lo/WO4RlSJuqXiwCopyu2ipNz2t8INuRfGj7P0Iz7HcydEf/JzWT98yHk= X-Gm-Gg: AR+sD13bGMqb/pokiXUFRSJ5LGhi5OLS8UzepLWcji4dMJq+XcSdvk4D8ggQykvNwFG 8NLYDQ8zd5YNi5HLwt5d7HQH397TVRDNIyZkMnntHjlOY5KU86IpaTNScbjb/XSUO/Allgq8ngf SCOi2dQlEOysW6yrXbER0jiGoL6O38dik93kn3GT5X8jKVEp/grJQIZZVUhWAka9RXybdxKHxJm rATON9kqcnCqmbaSuIYKXF+iMZGqhYvB/fxwY6e4Xt5YYxtinPl2hOgs26MWunm+/re1jb6yHGr 7rQ9HiV/Q6YAsVG5b90iA1Q9JPe8gUY+Pri0c8ZYX8+P3kY3JrtPjZN+IobdNUUNp1jGNFLLpZ6 Yrx0MHx1xAULwJF39D3QTdUXBKey2SrQSs5CLprBx0aNxJh64mYV73w== X-Received: by 2002:a17:90b:1b05:b0:38e:4cb:51f with SMTP id 98e67ed59e1d1-393012c841dmr41874a91.11.1786484177122; Tue, 11 Aug 2026 14:36:17 -0700 (PDT) X-Received: by 2002:a17:90b:1b05:b0:38e:4cb:51f with SMTP id 98e67ed59e1d1-393012c841dmr41827a91.11.1786484176504; Tue, 11 Aug 2026 14:36:16 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:15 -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 v6 4/9] usb: misc: qcom_eud: add per-path role switch support Date: Tue, 11 Aug 2026 14:36:05 -0700 Message-Id: <20260811213610.2956147-5-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX+eeJ7OU8nIUd d6NzaWO19NML4r6uVnb50x4ISHSII/5RHg7Y6gWDvfkRw2NKDwTTwIzw6wf9BKuVarLB0M5C4rf k33aPp16jJLwVbHJz2eKIumbhqwSKN4= X-Proofpoint-ORIG-GUID: hNKZer-3g17TFLqL9ikQpmMVDVB1AZFx X-Proofpoint-GUID: hNKZer-3g17TFLqL9ikQpmMVDVB1AZFx X-Authority-Analysis: v=2.4 cv=cvarVV4i c=1 sm=1 tr=0 ts=6a7b95d2 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=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=7LOY1QleUuiESi-gyjEA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX/uw0arKRSnD/ pfxJw44Tezcv2SWUMCn99kKd+HP42J8w1Yjg1qZJuIXQUEdZjuQtk94HPJ/rZXpM/xZ3sX0RhJk QwHcbT3Cfq2MBUpHp2wKRlRchvlOYO7ySHpBKmnMvsEdcprgeK7GGGCALqCnll0iUUdM4aWXyNq WTqxynXhuMemuqNsCS57dA+LfXkuTl/zMAQPnAEa+eRVIWacXVkTz3nks3Vmjk9h4MyiC9RGZKI 9HNQkjJjQxFEkptOT5+j5Clmi8A25YjB9bYpOOGp2D/dV5R0ycoiQphw5VvpAMXKdlwdvgEuvxK DGCxp1nKgNBHgXz514S5y53h76fEP6BDYPRE2c+X64Xywd/56HUqSItla59F6HhYoi0sMUEbVkN SF2gPyVcu03eHpkuvYexpIuzlbyLqF3QYk1drV1fULAogOn37z2OVR3pTUkk8LN3YTcoWrxQxfm 9+I60VlImak3yrizLyg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110182 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(). Reviewed-by: Peter Chen Signed-off-by: Elson Serrao --- 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 Tue Sep 29 05:34:25 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 542ED47ECCF for ; Tue, 11 Aug 2026 21:36:20 +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=1786484182; cv=none; b=PhJ7+jtayu+B5x47KUSX+DQYnVo6SxSzaV6SCCtnRT9zkburkI9UG99q9iLmmamIl9Q+GUl1Q/GTQsbnIv3tABzTofrAgn6AdXLxdYij8eX44R/7Lgd2TLIXuusUCjd5mWWH4tpBO2gBQmsHX8+J+f3+HQ1ZQzU5fBKq8bOaEh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484182; c=relaxed/simple; bh=+r7CuBFCSOL+IYGJGaj2szhxa9w9Ee0pYXSbBBAU/UQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YhznLhg18toczUPZ3roj/kRdjXCrcAvtV5m1zxkO3ARugrpMzfT3N/CufA3+a4NEDE7O+ZZ8jxyRjM/rjQhfpj8IWE6rTn5wpQsots3WV5lgn/GS+PFYpFGrdXqd5f7vEVHqqfrAwsqyyxaOwfyaWmmCHUcBfgmiUj8UvpalqeI= 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=Uiqwu5lG; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DK7EJ9P5; 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="Uiqwu5lG"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DK7EJ9P5" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQRAJ1835903 for ; Tue, 11 Aug 2026 21:36:19 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=ms/DiiyqieY P+k6wa6aklT6LJKO+25SptkRHjNhPWoo=; b=Uiqwu5lG0B4rmfTra/5SMQVAYyX Wy2IyuykzIrF0y3uwAGDC7nj2hYz+B31FfT4JuWdq0hdcQI5Wa0e/mwU+sEYyEZ9 ErEzXI3IuaP0BfgIJNq+8xi3OI3/15CrrB+mwJ1GcMn7MmY3zo8SgWg4L+y0DaSI q1/1R94sJ0cyEbpQw1mrQcMjm7jq+1VTNJhMT7epjUOLHgDf/l3BHjWvSHtsc/jg W5NJEZOJJbROKZgu8gkauIhtOwJiqqHMNR1LaPjJnapCODSnv7L/QFXkSp9UQIJh OPIFkVkCMfkFC93KRdT2vJwAdkubgV9RQJeqS/Fniv21JJAJmLNT1AWMkFA== 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 4g01nc2rn5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:19 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c9fe4c5eb39so184192a12.1 for ; Tue, 11 Aug 2026 14:36:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484178; x=1787088978; 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=ms/DiiyqieYP+k6wa6aklT6LJKO+25SptkRHjNhPWoo=; b=DK7EJ9P532yKMNotqcqomrHm4BSdvC4qV0f8KVbZyPOfV4bVww6O0iGRHHziK04dkc E+KU5g9sKeAqfRjPKyyZhFoxe6d1Anb1ptSd0F62IML8OfcUGrBWJnUYe+86m0FxzhmT n37qRDoWVucZmYkVNgI2lhgx3M2wObFVjRDm/f2EBgLaYQGC7S5OUGSsQFQaTVxkP5U8 XuatRSLVGSGLKKOok2k0+BQJg1iI6y0L5qwzQXDefsSCI8DxsPwHJk7rp/USrGgbgzdz i+BGXt55Frpplp5f+4tZ1rfbf4QHllK9WjtL6As0qQZnWQK9UKCo9JGyMuRbev3PkQLV vrfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484178; x=1787088978; 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=ms/DiiyqieYP+k6wa6aklT6LJKO+25SptkRHjNhPWoo=; b=CqaZzyvFoQ2++xRouLGKUi0LaWS4Gzw3yGPuaAI4SgPd860pH61MJlR4rP/R/b35cc kJlgVSocp/bjqH6x10AT//dCg5HwOges50XTC6AnP40wf9x/aZIGRCFXTz790lC1B5c0 JqD1AJEYk3oy9Htbh+Ir51YEOstS1QqmnHiucwQCHKOMF2buDRsjGmFIXvSHOmt0wD03 5racSsozMQVtRi3A17JqknbtkbO+y+Jq0USFBaiyx3cuhGRmEExYUdROTdLnhBox7jWF VBZM5A+3OsaVNP76qDXF31NZ8uMNCV03CGFjsyjrcEofwrofbZbaNKYhQo5LgeZTbniz kBrA== X-Forwarded-Encrypted: i=1; AHgh+Ro6KHMPZN1Aor4zqtNT2j/WaIZoyeEXGakQbx6a/Vk6YqNYx1mz0xLDaR0Udk2trfRfSaO1w6aH2dv1ZDU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5Lu+kedAh5qQpL5omp2zV8m4lTn26+hEt8348uXY+1dHqgV9m UpyLom6R68E1A1aQ2QdqylbHBJ5dCNCnOE3RvY1W9grqq6E9Obc3+v53qqxf2KycsKhqsJxgimI 4xa6Lm52GyHeu1s7tk/ESi0lFQWCmcg+iWD/GOYAfsd+RffErI+w9tSoiUlZIB91UNXw= X-Gm-Gg: AR+sD13b5tZG5jMMzHC+ci75CmwBSur21uqqP5HSj+jyyTSPXCQH3WbGtsYDrezuzd5 Rdw28s9Dd5A+GPxbECrQsrQrp8CnQMHzD1Cz/OVPpw7TNqHZGuQ7C6wphohNKt9+2/iYEKHp4kI RSVFS5FfrBKtEVNDdwCRs6e2m4U1FFZkIxcW/Jnw6uKcNHJI5KT0PsujBbjt0NOKzJ8IerImxGe Gdegd4xAoIiAQdt6+XZLkN/NbcGTgvw79JoMUcoh3P4GgnlxHwC96g4aJduuIhXv41/xmlUpLua L8s+zh3mXKzWEjrB3UPACL1EtRHKUtuWqeMrOkdP5Lu8OdUWa2ld2kU839cqvnzXbtqgDhuB6IE FrKaQz8G8yL0hOd4lTyxqA8rmAhZO/J6bYFen30moVz4RYHjWUoWxwg== X-Received: by 2002:a05:6a21:4a98:b0:3c3:a9e1:a819 with SMTP id adf61e73a8af0-3cc2bb05982mr9394487637.24.1786484178132; Tue, 11 Aug 2026 14:36:18 -0700 (PDT) X-Received: by 2002:a05:6a21:4a98:b0:3c3:a9e1:a819 with SMTP id adf61e73a8af0-3cc2bb05982mr9394427637.24.1786484177681; Tue, 11 Aug 2026 14:36:17 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:16 -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 v6 5/9] usb: misc: qcom_eud: improve enable_store API Date: Tue, 11 Aug 2026 14:36:06 -0700 Message-Id: <20260811213610.2956147-6-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX+TwY7Im1kQDH mvu2a76ENOpgxOX4ovvlzY9Id/HchAUKh6KJKJwPFamO/ks17MMzqwiyHzfFR+OgcXUj2YZkj0r pErxlXV8LQkc8nSiCs4/bw7NyG7JqMQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX5cki77tlnl3t wDoyAcibZHT9NR4VA1NvN9mJJhTC4xONYAPIEp766fuow5S1sG6JDSIsr3EX++1EOrSr1iQ9dH/ tsk6aruuX6cT41cXemHiklaMO9R/6hHexZvU1JU2cUQtILiwWShH8XFIuWV60aDv8b9qh0QhAMr Jxbdl90GqCmj1S9OMcNC3xE0XLiSaJWaXYo3pi6PmtAEe9qVINm7dWB6f0lR+KEyLDWiccTQo9K A0T+cIf2gDOUP0BIMNlFwKqqzsXM0JK9rROCiCEPeUkw/1xu57n5GuI1hiXhUcPs8cY2Eku7A5a sQAuEY7yVRxjr7phBr1RHZXUXijIuGQVA7v2ILhcHFlqlKIRlD3jBX2qhsnpw8DJyVHT7kckd50 BXxOXb0wsOcjuzGr3xyNKk7kbIaFVwd5MozxUZda+cASnagrDLGaOM6HcLVMydCPgeOWoECaLAk O+6b+Q6pPb1h9l6hGWQ== X-Authority-Analysis: v=2.4 cv=RY6gzVtv c=1 sm=1 tr=0 ts=6a7b95d3 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=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=iEam2xx7WbKG8qDqzoQA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: VQ_hC06Mdj5USfm12X527eXAnEQcbtiD X-Proofpoint-GUID: VQ_hC06Mdj5USfm12X527eXAnEQcbtiD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 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-2608110182 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. Reviewed-by: Konrad Dybcio Reviewed-by: Peter Chen Signed-off-by: Elson Serrao --- 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 Tue Sep 29 05:34:25 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 C6A8E47DD5F for ; Tue, 11 Aug 2026 21:36:21 +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=1786484185; cv=none; b=E902gC6EhM6sdRUe42L0koFMd6m5IrSat2BnfjSL7h6P7Bc59ek8W8u7q7DBW2H7UST0t3wROuXRk8m4fZ5JCxfnU4awdK0XJQ6fg29+YimZdOapBtEqmtN+9IHysCWdYDfdCSxXB1qezTeT46WEz73ixh8Lu755At69pcAwNQA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484185; c=relaxed/simple; bh=5Mm/8OCSUUeiOPtEdVdedojwWX3e0j0B4fBaJRk0iT0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Kbr/6rG75c9A2dyVBglHJeSUAP8MULe+YOmVC1HK9+R2aIT3eblXc8Vv1VdKTI3FcFkGU87lUQLyln0vOtfJztWQzhcIRG1Yn872h+0eEvIGn7CxNdtEaFCjCWePYglDkb6Brs+Nmp4W1cWGcikob6Ag5FrvcBgRTRANSEJLeg0= 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=C5ApUtKA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SvTv0old; 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="C5ApUtKA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SvTv0old" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQRcT592683 for ; Tue, 11 Aug 2026 21:36:20 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=Du0qQhW7XcX nwXOV5Ggqm/JiThDiZ9c3EHZ/YQFFZDY=; b=C5ApUtKAim4Vl8IEsdkw8bDmhaZ rGfXEsaZv4WHV9KE0wQ5WFA6bp3GfY693oE/NtJDdO2gN0+7qHA58W4SUhjot48S BfurbVKNQSQzND1haQjVbb2MI8/iwAen4cswwZXAdQnFDL+XX63LbQ2X5LUPcr1X RtZSpM37tozv6H0amy+d627EWHndgHKZptXADkdIQXnT+GUQEaNsCliQok5N5zOp ITq1HDFT9IiTp7a49sj3UYjcCHHJ1GnM50EL3Cz7JHSKB9iionpTuwZY/BeCnYuI vAJfxy1iCtXPTgGXSDubuFDcQ8o8knxbIUJX8W3WzblvFZ2E2rQzWKoMTsA== 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 4fyxweufbn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:20 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e2f61c09dso424366a91.2 for ; Tue, 11 Aug 2026 14:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484179; x=1787088979; 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=Du0qQhW7XcXnwXOV5Ggqm/JiThDiZ9c3EHZ/YQFFZDY=; b=SvTv0oldhUUFEWj6LlBn7ydKZcJyzR7cXU/NPH20QFPc0WTTGicA1Xm450ClVRZmYw RlPkF9wVadMPpT8M5ItxKnyoqJiZ5V/O5PQXStB9cqBde4gxOA9HUjomuBeuqQwGunDl iqN1BsHzUxsJ+LHym7XV5vYPOmYLMozBEiI+YE/e9AC4nYVADKYm6J1BwBW+bli42ehA ucwnJhFyFlstaYytUcH+Oy8JH1fJkndZXJhsg2ZF8+rDbv+ya7GgZd9t290JOE6mo3sr F3aPnxjdeihA2RdCdX2rp3osP5biMQ3ZaKSMjOQZM8hrxCrqZGiz0oXqYxzdq6uoexuo lNXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484179; x=1787088979; 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=Du0qQhW7XcXnwXOV5Ggqm/JiThDiZ9c3EHZ/YQFFZDY=; b=QE45iBwaWWggTRtfm+fbnf6roU5n47rUeZpRnB2BzlhApo+UmP32WLP5hBYksNqGoO iJzRUshqas0NuzR3v+V3UO+DHxissHnNrrEDMAXR5O44JwXne+1yGgHzGQ2vChvooLjE wrkPkA+gETTH85g49EMRGT4Eq77JYCkAlSK2kz5I/Uc4bwVFj/4zDl2OfFwhgrP2rXob 1qMiMl77FX7h7bSSq3PURbA8QeYE9YnB1Hfew8qqoR7NIMcBPI+xUkGLcoAAhkzo8agL lR5stH3yGJbBeAI5D1xFdPTzektFTiE3RtpszJY6jLmAC7NmYxVcqZ+xnz1/BCCugL5h iOFg== X-Forwarded-Encrypted: i=1; AHgh+RrOi0oNOe1+3ZMmWnLfvJwBFtKtKT72UpuBEH3xstcHFXYt6FiQLwLptD6J0rJVjbH8WAJl/4lyiB4+xRE=@vger.kernel.org X-Gm-Message-State: AOJu0YyEHnmu1eqE2o9S6goUyiBX3Z/xwmM6SPJStv2nuaFiXCGc2C4J lTxTb+lhydt9OZL1e09X0U7olvpL9jmJCNTwdP1qRz2J/D3Sycz47gRMOirKWYwhxs9PZWAZPrz ijUPiGg7UWxsM5Y86UoGLWQ2pW4X/pEUWw3OTGGlfVETIzkYjJR3SDhuEgkgEgbD1TqQ= X-Gm-Gg: AR+sD11FXcxSMD5tdpy6AjL/ni/w3vhjLeMaS4wjfjIf+DwNuExA8F4lUajg8c3P3zo LKMkunHpJhuLZ28OOgy6Ag3Q0vHgJYLiqJXg8bs+r4JyrMJOW0vkwAYDgS7z77ErqzVLNe+Njhg z0tdpoBD+aRQNclqIh1W0nftZ8wuev/dloa4qB6obCIZHbzdiiFqVsbeKklNo5zb3jlvbUczMmY 01Ix8V+cje6wAm5Z14VTgDGErjMf95DSLGI5U7pAPlnyvjSc8VQnnHTK1y/EwQ7v2Xzp+pcnzho /tGLXMjdRXNTceIPbxXXrFev6nPPctL0h0fsfO0zk4nj0ZyVx3g5p/pPUZSZog3BV4QTgSlQ3A4 R+n2vIMlwr8tUmfes7M3vxP7ysSKnww9hQqtQi0KKI0IPNAf/bnwMzQ== X-Received: by 2002:a17:90b:48c7:b0:392:b509:b1a5 with SMTP id 98e67ed59e1d1-39301410288mr44767a91.14.1786484179164; Tue, 11 Aug 2026 14:36:19 -0700 (PDT) X-Received: by 2002:a17:90b:48c7:b0:392:b509:b1a5 with SMTP id 98e67ed59e1d1-39301410288mr44717a91.14.1786484178634; Tue, 11 Aug 2026 14:36:18 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:18 -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 v6 6/9] usb: misc: qcom_eud: add role-based EUD control Date: Tue, 11 Aug 2026 14:36:07 -0700 Message-Id: <20260811213610.2956147-7-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: KBltRh7OMjmmZTlvQvLH2L6CjUAW9kqT X-Authority-Analysis: v=2.4 cv=K8QS2SWI c=1 sm=1 tr=0 ts=6a7b95d4 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=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=4GSD5CdKrKcBI9kQVZUA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: KBltRh7OMjmmZTlvQvLH2L6CjUAW9kqT X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfXw6/TV7/DekHP PwHwJGxxTFI2ly4MebrWGiwFhM2H/o/hsaOqU7De3ooqxOBn69VrXxvbDi9FbfweNK0/aBzUjai MDymUAZo5mSER8tmu3xylYhHgXn5Phs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfXy3mzlHktMWjy 8yrv9Nhmrycbpz7F+eta4HA7SKxLeW3mdOtszxQ9zanAR6QvaLRJ/oYB7frOmyZA9hcpl2qnpa6 Fz58zBcJHYcCAxgH2mHvorXIQhmxz857ZfJAaq1L4DWRKmVOVrK7WSTQPaQ1sxYJCdWE7VhrcJ5 zhOG+xOVdjkmeGyaXRfT5hZAgn/9iT8P0z/cBmeBItEtHe+07eEXohFj5xrIlsea4AMiXbQ4m5I jIi9ggdsU6+89NI0hSgDtkKOswkqVCuLOEkELypH1TDpboK/Tgtha1k+REWKrlKcTJpsm8AiZi4 /xZ+SvxjIvzJv5YX77Qmo3Jg3dYTYwunKG50DFrnzWA412iVgeAXHq42+aqWs2wNuV4nc4d692L mmaRDrubJvsdvOOjGVj8MkQryyEBypH+cZztdNc//63AshY+5dU1+fiw6u6vg3sVYLgQ0m/3CxK c78gqH+2EQ5jimedE9Q== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 spamscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 phishscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110182 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. Reviewed-by: Peter Chen Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio --- 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 Tue Sep 29 05:34:25 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 4CD9C47F76A for ; Tue, 11 Aug 2026 21:36:22 +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=1786484184; cv=none; b=onhK5UKQjKspZGXJHahq9GtqsKOgj2MMP1pGTZTLMcM5weiiQZ0u9Yu2wLFt5ziLm9uSS9s87vSAix2ib7PH5yAe+eJWQqRb9x5puxqb4vfLBOWdFHV4EZ1GYNhdPcwoExLV5iXhC7Etixs34IU9SsvTsTVbLamSz2xsdi6kGso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484184; c=relaxed/simple; bh=602uqRnr/4geKPALzdHhfMzddrO/DsC20JeySJdmI44=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=avLD8yumK0q9UeGiHWlyDFmrYerE2E3NL9yfVOopQEKfHFw+YCzgartwXiT72Mdycd7T00eQraF4uMvibhb+/JOsxkUPSWxRMFqRPKbRUyN95mQwMiTtCtKWVzVrVNdT75ClsHa25sG01crsf59ib/hZYoDHFuQ2gLejOEShfa0= 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=RA+UN3Ej; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Vetsi/w/; 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="RA+UN3Ej"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Vetsi/w/" 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 67BLQL751826424 for ; Tue, 11 Aug 2026 21:36:21 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=hXwC10xhOMC 8RxzLAba8g0Ty+WY10fUP2dLzQKOuAJA=; b=RA+UN3Ejp4g0utR6+Sot670Glyo NQ2LXFol+LExIGf9P6yoniExXEPMEyPmzgHEsh6BqL2Wl2JTKeQ9wSkgOI/0TGAG YPAKKo8WE+96bLNbCDT7kDd6Ye3wdnlIVh89NT9nihMuPhz4/DUveInZMYqNGGRF 6IZyR2/cZ6m5RFFF3cm0qyKFBWy+pEqdbwryOrO05femLhPFUUeyAITqdj7yHvOd y/MJWd2db5dZ7rLn79Ao4eCBj6G8QYuZPljHhVLEvwLx4jLV+o3c0rdExBkLtqxt OLW4orUvgeMDuj6Jrq0tSyISbo5bfsurh3d9wUUJwEwqDUcf85+yrZtQmTw== 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 4g01q12ryh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:21 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cbedf6e8a42so254926a12.1 for ; Tue, 11 Aug 2026 14:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484180; x=1787088980; 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=hXwC10xhOMC8RxzLAba8g0Ty+WY10fUP2dLzQKOuAJA=; b=Vetsi/w/tg9wMQbRfHkLwrQEJ1t0fM8/xCEq+/5e4NpSUvINVI5lOFwnahLaHXM5Th 9tctHcAf1tV1IfBV44Kjnz8izG3vB3woGnLwHlezwJZTOQC6rhu7nfSdIs3d/cUb2lWO cBIXicBODczUCvgqJtRCEe7PFKZFuzwZ9393ZVmU3S0d03DW38AcXrqVQlD7/BYBOWpn Ft5CVPiljqyJ7ylHyhiATRpVfPNZVkPLF1C1BMCX1KiDI82rD22YeHX9+NC5bgIAKWGz PhlMID+0L3piFmp2icWahcQjwUK6Jb5Na0a+iUBJsZTYYOevb+i3IsNmMVsS50J0Wo+X VSDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484180; x=1787088980; 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=hXwC10xhOMC8RxzLAba8g0Ty+WY10fUP2dLzQKOuAJA=; b=KD1jM6wPNEM1H0GJ8HUxXM8A80gc8Oo4NijB2xTUEmO//aBKnjPtjeiBQhYqW2dZYB xBnoGdyFHTKjtdZEpyCRxOzWoB/rH3uG1nKeJdtj49KCaO0ZHzcyLANu7MY0lB2YBe8J UoR0kY/YIH9nmDz2q1QrMQaasFw9MGqfTBw8YN2ooUevR3JLttD3Q0c699LQPNXBYG4P 9YAxj4Nt4DGrkFsAoOfK2xAi8spHhoAfYCXt+O5hHsVxJehaeYCfq3/Wn145Y9zbDrdx vMWNyrvJCXbU6bc8iSluvsRDZiIJ0QdFrFa8Uh19rdTG260KaPi0oYvka3ClN5yXbiA2 chwg== X-Forwarded-Encrypted: i=1; AHgh+Rp+qDved2aBoswkyuZRu5C/+kaGPdI1f9O96678gvk+FEv3wD7cW6BW6wh1rH/hcTvvTA0i3zdq9Oy6uC8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4teOlalnhNwZHLT5Zgtg1GlbSyBzCfmFFf1OO1MOxBeE8Au6V L7Cc+2dhnT02l/MtIKLLmLPEvc/WiS8VnQuxkTbNGqP80oeXhxW+1XA5m2gi2pRncFhb4cmBsNu kgqeLRBGTapZb0pdUgPW3F9eUfN1wooOCRk5irkKScI6OM3bOWYheRK9MZC790MF5saQ= X-Gm-Gg: AR+sD10KjAQGtgx1pcMHVS1djDbeJXJ/c7qZndShqbYCWiR92Ortme8y/XuKdInIqTH EXHpKGsHZPiU/xzKJZ7b2B8cxubiYASmCK22+zzzlLF6V3YPSlEMJqU1lRmdUFdNbsQ3CsSfBo4 zxK05fxKR2X2o7aVNbhm55/01vKGp3gFggJ7da8CLZc+ZW89I4iwt3T7iOOSsZOZjQZQY/Eef5Y 9n/I8jzvJJVViyJRmMv+CYMbH3m9SO8Lu6Q1c/qIqv6zSbDR4fTL9Eo2HO0hfAex5+TYdDGJu+k NQqlNUtWYdtSEYnm2dG8b3oCMe/yt4OFsFtwj6YImWbsrHDAdddXIp/9HMc+5YrT2er9bIvjuiC XH+nZCzMkFBCORY5EooIIXIITcB6Ccd/M1DTVwE2gt7wRSqo8/WshjA== X-Received: by 2002:a05:6a20:9c13:b0:3cb:b3fc:510f with SMTP id adf61e73a8af0-3cc2ba66ab4mr8750739637.24.1786484180035; Tue, 11 Aug 2026 14:36:20 -0700 (PDT) X-Received: by 2002:a05:6a20:9c13:b0:3cb:b3fc:510f with SMTP id adf61e73a8af0-3cc2ba66ab4mr8750694637.24.1786484179586; Tue, 11 Aug 2026 14:36:19 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:19 -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 v6 7/9] usb: misc: qcom_eud: fix virtual attach/detach event handling Date: Tue, 11 Aug 2026 14:36:08 -0700 Message-Id: <20260811213610.2956147-8-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: 2AnBL5JrYNSuGEhHchDyVpU2ZBwhwWJh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX6Zr7Lq+5OGfg bc1bMz8SDfwFx61HcehhhdyRd47JJy8ekYoxYHkvp3FlSnfqq3daCeIdMxq5UsBXEcJPOOjo1EO QY+z8kRaL3aazvBBa3XLLFYQcv6HSQf4wMzMFlYX4zsHuYevEtAEOCXDdkYp7K8ScDcUhOYAgSB HXBlRH3d4fPKIF8DX3tQ9yhBW++n2cpM2mKJSiQiTgbZPlNQudqyWoH55MT5+Zc9B6HVlOfnlLa h1nFwyPpVnUdyTaJo2/cYVUK4ixEaf8parsnEFvQsEeTerzs0A4e8SVnlaWFra9k0UNF9i7iJBG Rl57TZwlwAXTuNiftl1Evx8O7kQrbWduKpCba3BBxkUMS6qNZZPYW5h/e7k7WG/F9LHHPERxh4t unqF+0MS6Zj4ISunOYk+qxUsXCDttYGVNwZtX8ApYLvAMhqMZZyL2rOKGNgOHSGNUXqF3L/vMwC hQ8zTbRe00jSQxP9OpA== X-Proofpoint-Spam-Info: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX/v1LkyeyqfCA uSz33gCCg+rdaM3TfUqn6JDz8BqSgB5mQ/FQ22MlAdGbSgM6fT0I/1Uj/tsbOtaby4ekLZwRh2H +ZPdNgp6tatYgy/sD2N15togrrfzsYA= X-Proofpoint-ORIG-GUID: 2AnBL5JrYNSuGEhHchDyVpU2ZBwhwWJh X-Authority-Analysis: v=2.4 cv=brt8wkai c=1 sm=1 tr=0 ts=6a7b95d5 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=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=oDIJ3hVRoRHbvujwG_AA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 adultscore=0 clxscore=1015 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110182 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. Reviewed-by: Konrad Dybcio Reviewed-by: Peter Chen Signed-off-by: Elson Serrao --- 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 Tue Sep 29 05:34:25 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 709F947FAE3 for ; Tue, 11 Aug 2026 21:36:23 +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=1786484185; cv=none; b=j1GlOLVBqHmF8eeDvnuOIQtQfJ6kmmB/r3959ol4JV5fHtodlIVT2T0nvdrfZ1z7Zpc2ZfYD+iq9aO7jmIVtdO14PUghasEZXkqE6XACeQKWXfy7pKUouDlHDM3iOQtgaJ/QtWgav+39i86lrenZSRk1JkGNPN3C1iV77hdH6EY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484185; c=relaxed/simple; bh=OsqGFuhhnJac4LgELHu81FXuRF9QOc+DaaigaKXvUu4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=i2oVvzMud3qj3ERj2jy8iipmmQ2Qs7o2aGhfisEhZjBd4t5Al8BouEVfuC3acHDu3MZkwsmZTfnde8gVdwRroYK1eesdBdt9xwzUECFq5blbt5WDFnzwPR/gy0pZHEhm3Qv6nZTmFII91ArjQ+gEbbDy9Ir1W3gb1iiHtXj010M= 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=WZ5Pw//a; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FCw9N03q; 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="WZ5Pw//a"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FCw9N03q" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQMPT1835748 for ; Tue, 11 Aug 2026 21:36:22 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=iRVA6jIwRIm p5fdXm+zZGGs6C3xmYNbUcGmFLl6rhtE=; b=WZ5Pw//aKBrmiKcYXFx0vpDtrtb qLBx7HSy+z5YRaEMdHSXRER5772hIZZaKRhEffkeeTaXGApRGHB5tKqnvFTlcUwS EO0Hd0nftKgydCzPXj7UYSaXKcBHNrX2XszYqmIQVV3kqkT3s13TQFNwI1J8FmoV kxa2kWnCAF9JSxHDnLQvi4B4D32gfiOqXAkHEGTzWLrk5RLd9ya+X36+l5Ztqci1 MXNQ4fN/VE6bFE68Vu86cg1gdAf50ytwIIJtiey01vd1sU/IZ0FUGiNYLgXXZIBo dtxVV20PF2TRZjnrGa/Ad+GFlRhQTp4VgRp9uexVwxvoBo7y5Z97btIjFpw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g01nc2rnj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:22 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbedbd182f5so203591a12.1 for ; Tue, 11 Aug 2026 14:36:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484181; x=1787088981; 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=iRVA6jIwRImp5fdXm+zZGGs6C3xmYNbUcGmFLl6rhtE=; b=FCw9N03qgl8VvdylvmFVwNShxsZBF2IiJ4I18lmePVHCyJQqS3UJ/p8ZNdbqZXgkrQ uQ6S2OeYNsslsATOl42QlfWjIIPZiAlM7eaAZjI9Yz4g4UKQY9Oht0awBQ4Y6CXcWf3U xcc4zOC1D7s518hL7MFmHX6u45dUKjJBw+qy2pRWzTwONIY5hKG/H/HEJNe8Y9B/Aufj 4SmzdVARZ8bMBQeuc9IvBp1g/l3bNHuQ52nNyrHXjqAnRyi+e+aq9LbkpuxlZg4Qi6BR 1CObOtia8UoYwjR9Ws5FoXt4ZlxAYbEKo5MKqS2gBznYVqr1+Ts08bkZpduVt0sbVbKT 7VRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484181; x=1787088981; 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=iRVA6jIwRImp5fdXm+zZGGs6C3xmYNbUcGmFLl6rhtE=; b=ct+1BOdfikOIp0YmArIX+WjAyiwuuDgUrPs3HAqYI9hS4+XeW3tEdOHqgUFPVyqMhT MHq951xI9rD9K9s1iQELpJRfufnTE5sofqA3iBDEfktQ2oxiPFyjpstAuiZ9WfnkCg3Y qHiI0CN33gaxWfwdkHPY41w1oaaHG8eKfJjxtXLsA2N5ARA/9dEDwVMIjQ789ULcTE2G tD4nEE7+lZVg+hAlhefw4DcRsolOo1K9/T2DsRVYjIPenR6X919UpkQr7AkEeNgQMvke PWKeaUM99FXPVLdtLJlW1Kun6fW114gieJlwjTMKPV6HPIG8Q4IKSfSvff1d8hW2uv/2 iRgg== X-Forwarded-Encrypted: i=1; AHgh+RpDHayC3BiNuvf1JuRbXYPkVsQubXJ2iehkaV1dAAjG2YQ2QLtV1Cc1FNZbb4bAcZVKuyCBU6KpJuOAZm0=@vger.kernel.org X-Gm-Message-State: AOJu0YzjKxIh4XJDLUICqdeLBdg84gmjap5JDQgl/0J+MLjcoHjJ6pNH ObEDGodP1XmoxeDcvllfBoLGWypC5eJNSZjMc+QzUL+ay20UkFV1w5BLpADtJlvh7DBrVjFpB0T k0ZDW9aOrtxeoYcC5Sn+ZNQqDURon9L0DCrTeCRD8/81s8PBxtNoNvG/hfzYRKc5wC8M= X-Gm-Gg: AR+sD11VC/IvbStwJ4Kbt3SlT/JiQ5h+7L8Qy6l79VMHr7C++1WhxA6FQfagu/68LfW 8VmfTrhVhpoq3ptSeuCNbWill4s1srdhCbrfyw6qFGiufrfQTc8a3m1HIUG7VBq0Y0mBntOGO0e 1Ubu2otBYrBLTzGDUkTBdHDtIKcBpyogo2JmAJnPnszLYrVU+B5jAiN7v8K2Rvbck8KzxGCa5nl J5vamyt2pIEgX26h+rHRtNIEHVsAr/5VSsmOnsvY7uzOKrMYZwrRI8SgzaxZRYTGwARcdXipeAj SHsgRS/md5cK05DyakOFcUeIKxT+V9AYhPBacviH/1YfISXh9YOR7eWCW8hk+vlpmvOr79LikG4 a8bmwZJTNuuahN4AZACiM8JVJjsavV6UOQmE7VN9gJRTAJ5575I8MnA== X-Received: by 2002:a05:6a20:43a2:b0:3bf:9bd9:cf60 with SMTP id adf61e73a8af0-3cc37846dc1mr4351394637.6.1786484181294; Tue, 11 Aug 2026 14:36:21 -0700 (PDT) X-Received: by 2002:a05:6a20:43a2:b0:3bf:9bd9:cf60 with SMTP id adf61e73a8af0-3cc37846dc1mr4351321637.6.1786484180853; Tue, 11 Aug 2026 14:36:20 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:20 -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 v6 8/9] arm64: dts: qcom: kodiak: Describe EUD UTMI path using child node Date: Tue, 11 Aug 2026 14:36:09 -0700 Message-Id: <20260811213610.2956147-9-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX7LGZd/AioKPc Ydu3jIW24kcMn1b9Tdtc/ECgsMAQnf/33BhaRy3RGtsIWyb+vZVaF+Aeh5qqCIYg3sMA5B5Boq2 C50khoPIIxala6cbFn6oJH168jok0Yc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfXw70CYRyro5/V 3qGsAgK8e+tfbE7ODrVonfi/oiQCOXp+unXiQzJ0Ji40K0XYVvWaGF/JCgi86RoEWXsQch0qMsU iHundYH88/tnnA6ueL2naeuzU+l/NDJSwMUpK4TQDp6G+EMvowM4vOXKr4fW+bee/O3qexUktNH k3btQL2gWMreYrq8xw5KxjV3PrO2UuJvk7rSzMxiRV8joee5lmzFM/gc5MjDe4km8IFy9Y8LEo/ uUCCaXC2B4giFXkWDo1F02Cb/6INNoxx5KBJZZGwHlDQqIxruqyhjScezQ8FivM2YDrn9hLcKMe OE1yyx+jsF6mLvV0TcoMfnxHlKrxPqq/e/2hKlquqlqck0clgKVro7sEftxZry+Ac2TzLQhCdXc QSQ3iXo8Srfgm1s98b4mcol/8aX9lw+YxQTmFlajWLjCDzXLOKYo/u/eHSMmJ9i7IBtTUyHYTBs hwq+1Sdqy0qOoGQJs9g== X-Authority-Analysis: v=2.4 cv=RY6gzVtv c=1 sm=1 tr=0 ts=6a7b95d6 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=-Y8wEhFFMILef-Bpc8oA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: S75z9S5goh1W0lgF_NV3lzXx_pftMcQo X-Proofpoint-GUID: S75z9S5goh1W0lgF_NV3lzXx_pftMcQo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 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-2608110182 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 f2da3706d5c8..30b62b406906 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -4421,12 +4421,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 { @@ -4753,16 +4747,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 { + }; }; }; }; @@ -4989,6 +4995,7 @@ port@0 { reg =3D <0>; =20 usb_1_dwc3_hs: endpoint { + remote-endpoint =3D <&eud_usb>; }; }; =20 --=20 2.34.1 From nobody Tue Sep 29 05:34:25 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 D9E34480976 for ; Tue, 11 Aug 2026 21:36:24 +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=1786484187; cv=none; b=IrvZ/QXiNAar47JQ3/HYivgfMJ3Recvqk1Qt+NkVJ+z0Vkwl7Bk+977+2rLkhfgR6/GMKneFjUOKDJlrCqUDopI0/jd+Sp3YDo1BgreYgeQaUG5tjlMjEkzT1J86U1RZd3UFE4xRDK7xR7/GMkEPfuIwT9wz9LMLEsel1eZweUM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786484187; c=relaxed/simple; bh=r6xGhbQu1ovH5oYLfzS9gsVXYRsCehhXravK0x831Us=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ynft4RUhrgCVXUGutCIQ3QjF/QzZbAdRwYl97Onzs/VE9NPMcVuE2xE6RmLhyeDXiiRB/eQXnHqBjVEbvdOUd7OaAPOX3XAVR1FnvmhjFrZ5ACx7cQPyN8sdOadzHxELh8aKehHLN6Xs4nzXg7oMdRX8nZmW6Ve5YNvJiLtSn1U= 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=Ib0cCCTv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=E/HfYSjF; 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="Ib0cCCTv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="E/HfYSjF" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67BLQLW91755739 for ; Tue, 11 Aug 2026 21:36:23 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=VR59FV1dLHf FHqsR5yjQUbRalpRs77+LuixHpzH6zTw=; b=Ib0cCCTvc6ibAW6upBNiwNgNWDD 7o29+KJE6rWARFtBTDPh100wij11QDpqnAUaXPQoiqj0Y+6EtgqXX6398UDx0JsU RuU3fbIzlJlYmUB1GKpZguFa5xldma8Tea4aekkWy11zUCBFlkbB9qt07LvhLazn bqoqM9RQOFEECpmslLHuUhFf6qr2I8Vt7HpgI6WsB9cq5mWLv0uzcU2LAnqhq/I/ lHh3SG3HYyP2vublx90ojBCyPdSQKC1paiyUVMylJFweCr+F2tPpt7if4rGeE0qO ydwYVGwJCXcdy3cAeepiHy37QWPHXvtRZnUgqX80u2v0leY862VKIqsGt/g== 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 4g049gt7au-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 11 Aug 2026 21:36:23 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cbb6433e9d4so291388a12.3 for ; Tue, 11 Aug 2026 14:36:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786484182; x=1787088982; 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=VR59FV1dLHfFHqsR5yjQUbRalpRs77+LuixHpzH6zTw=; b=E/HfYSjF7xEW3eaRuDvv+daLD440hxAAaZ5zBD3Lt3Yw4uLI8slqwebyib1Yg1KNDi xW/ax3RHlNoOm1JM8D1dfT6KzmOxWgGH0ZYQCOTCtIh6i7E5SMpkthWVqHQzyB16H3gv bEgDHFysVOD88lNiKLjdZ7EhkhInVWWFggpyA/R9djJM57DUJvS3clzEbBLWx1o44ilS I22uz5ATbecPM1mYWxDxzakDhZ+1l/USw4uPVquXnXPoa4qH7WxplK5G5ep612TYIA/Y 1Y5zKrEbGRc5c2XMbNeCziGU9ChxWhccY01JLaeJF4+MXIS/DaoV1/XnC1lEtJHB1f1H cNOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786484182; x=1787088982; 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=VR59FV1dLHfFHqsR5yjQUbRalpRs77+LuixHpzH6zTw=; b=QZuK5yohiuzb9VCapFewA+l2bevvgRyXrjAu3zpXe9KhL8KODj1DwgZXdDsx8NIeuk FCfzu+wS0s4Za4lkmcjvxZ8P175/OBJPigGK33e2tK+rpddqhwRNBBarRh++VC+/mMST jAj4bh+7jk3sD48pspti2nqZ0b2C7S5SNQdkb2pBc+3xsFy7pC5VrSk3WhRvXBDJZTIC KeUb+qyjDsREfhudUpNzy6hZiJJ+VeNL1HUeMTEW/QbO1+0xGL6DmT53+sbvSOzg7r4c GmqVEICPp03U7WxsbPTOjA2U1Hooy6/lkwaL5mpSOBYuBOjWgg9jlD3BiaDaoRnRUn3f Ex+g== X-Forwarded-Encrypted: i=1; AHgh+RqVepUkBYXrDcTY8+ZKxxQbiEH3rgS5kEHP0pqRMGY4KIX0vsuVdoXhj3litMBlp0zCU/9imudA8wR63Nw=@vger.kernel.org X-Gm-Message-State: AOJu0YzVMUMH9cDmCnBo931szbBIkKSWpAOjam5ryiDEdMZIszWhd3TM YmLnfzB8kd5dQtGxwUl9s6urvHmvSprAwzTprnSYQUZzUfMYXpCFKWzE/mcaZVgM0f6Nnxf6O+L wTtmea+Lag3opbqKNFBaHrLOTFqIaFvC4kiEF0HY1CS1aR+fYoOfh//vYkeVP8+OrYbo= X-Gm-Gg: AR+sD12QiNIT9ROvUUM1B1H6kvNyZ04/ZCn8wg1P3vzSdSwIBiX/c6uS3NCy2OP1s7u ouDhgdkOUcLbY47+yHdxQur5gzCWcXyrMVB2QaDje5rzjlNdW7yAYX2D8t1CvbU8SjowvT73vPv u+j9S2/bfl7RXo+HBS37bZUUlVyztZeVwBF8HwQHgQT9WV/lsXcwemSD9fcgKlt0kzp+gR1d1QE EVGFhv6k2M3kUGOjq6d+q6wA4wAWxH3cz1S6iVGod9lMljQRv1XOI2RzoxHhrQlbLH75xfvcmFT P2k70/XW+8ROXvCN5baXLxVv8EBWU4H90qbpgL1OPOww0Ol6QhK/yMwErIJvKz0ytfpmIHgx6Xj cHrmQPkPy6sr+8ihfEWFjzCTMzgrU2qJQxXBJMViidDHKONPBPXauAw== X-Received: by 2002:a05:6a21:7703:b0:3c4:de3:816c with SMTP id adf61e73a8af0-3cc2bb92df4mr8520565637.37.1786484182336; Tue, 11 Aug 2026 14:36:22 -0700 (PDT) X-Received: by 2002:a05:6a21:7703:b0:3c4:de3:816c with SMTP id adf61e73a8af0-3cc2bb92df4mr8520512637.37.1786484181872; Tue, 11 Aug 2026 14:36:21 -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-31cf3c08163sm2713563eec.7.2026.08.11.14.36.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 14:36:21 -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 v6 9/9] arm64: dts: qcom: Map USB connector to EUD on Kodiak boards Date: Tue, 11 Aug 2026 14:36:10 -0700 Message-Id: <20260811213610.2956147-10-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260811213610.2956147-1-elson.serrao@oss.qualcomm.com> References: <20260811213610.2956147-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: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX6upRJkDKE5rk sqUjFzsDNLhTQe09DqHhruUqyFxZy+DKBGTKbDtN0ymEuDRSZohWjvQE+BMpeZkA/hn8vjfdH6h fwi8CpRIMtBv+gZVZflnurEavKZLrL0= X-Proofpoint-ORIG-GUID: wwD64aZ62tES-52l-7yP65SD2rGi-mC0 X-Proofpoint-GUID: wwD64aZ62tES-52l-7yP65SD2rGi-mC0 X-Authority-Analysis: v=2.4 cv=cvarVV4i c=1 sm=1 tr=0 ts=6a7b95d7 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=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=eWSs2RPQfR8YH2_DaTAA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDE4MiBTYWx0ZWRfX8UJyWB4s6kns DVBR7/7a0m2GA8jo7BvgvHjYRgf0r5YeiwJ9wDGEv7RbwZJQ1SXdDeWBB3sh+j0xQzZRSp8ttlB Rb2ADHcSemEe6tc0ICHz+BEbW/qyoLW/LO8CfYriByjIBJPlNkeKAeAqQu8b1dMq5XOQFBAznes 9fVOjInFzlm1FHWAXhkWO5+Pg9Sm3+7PNyyFfXhi7g6HbmHcKzF8ce5/QrYOLiV3BBh0daNy5qC Lik3I/OCyyzAFgvYmyDtVRZ4XBPnE23IlDABde03xXp14jNJUKr1Bz3m3wXar5JWUHIs7exZanX sv0ak6ioyJQqZW6cg+zk1IjGv3VpiAQIKgcIsN8y1oPVKV8U+t+8Te+rerrEAy+etGt5YriKHoC KBkExroAE353gGndwsz9quVHrvZrxtIfou2+58wU/Om3eZXZeeh786m/y+z3p+IF7fIQsLbJazi l7ZCO9cNzQDUDGuziFg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-11_05,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608110182 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 +++++----- .../boot/dts/qcom/sm7325-motorola-dubai-common.dtsi | 4 ++-- arch/arm64/boot/dts/qcom/sm7325-motorola-dubai.dts | 4 ++-- arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts | 10 +++++----- arch/arm64/boot/dts/qcom/sm7325-xiaomi-taoyao.dts | 4 ++-- 10 files changed, 38 insertions(+), 38 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 f41ad446a39e..b1f1ff6b99e6 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 @@ -1530,10 +1530,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>; @@ -1573,3 +1569,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 5bb33a8a9830..41836afd3acd 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 @@ -828,10 +828,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>; @@ -864,3 +860,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 cf74b3664cf5..45b9318ab54e 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 @@ -951,10 +951,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>; @@ -985,6 +981,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 a13315bf0fb0..6520e920a844 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 31bafa2cf51d..4c4afe691d64 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 @@ -1052,7 +1052,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 13e8e62f6205..b9f92bcf84ab 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 @@ -1098,10 +1098,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>; @@ -1135,6 +1131,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-common.dtsi b/a= rch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi index 3860ab8508a0..2a90de989dad 100644 --- a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi +++ b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi @@ -96,7 +96,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 @@ -1429,7 +1429,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-motorola-dubai.dts b/arch/arm6= 4/boot/dts/qcom/sm7325-motorola-dubai.dts index d94571c05a59..7a97a3eedd5f 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 @@ -1428,7 +1428,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 7db9ae1c3cef..4729779d50a0 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 @@ -1438,10 +1438,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>; @@ -1457,3 +1453,7 @@ &venus { &wifi { status =3D "okay"; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; diff --git a/arch/arm64/boot/dts/qcom/sm7325-xiaomi-taoyao.dts b/arch/arm64= /boot/dts/qcom/sm7325-xiaomi-taoyao.dts index 87f267aaeec0..b0bdbcd47503 100644 --- a/arch/arm64/boot/dts/qcom/sm7325-xiaomi-taoyao.dts +++ b/arch/arm64/boot/dts/qcom/sm7325-xiaomi-taoyao.dts @@ -94,7 +94,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 @@ -882,7 +882,7 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { +&eud_con { remote-endpoint =3D <&pmic_glink_hs_in>; }; =20 --=20 2.34.1