From nobody Wed Jun 10 16:25:35 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 53CC43D6CDE for ; Fri, 1 May 2026 17:06:40 +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=1777655201; cv=none; b=hN8o9RurU04dT4WRAj35hSa4e3ufhlXHAcZ0FncNz0SzCjNqbrGwA9E641iydKvNLBSsclmuLzLxvAThMyruGdMUv+QyiS/DwvPxLxuPygJttP/41GczdqnEsZw09JSAt0Ohf8JAOLHk6urM9yhlCE5YzovtmqpIxscOPI49c10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655201; c=relaxed/simple; bh=KvqAs5R+iIDwc5i3JUTq2hNLbPWJGmhxQ+Wfjhe5QAY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SBwlDwD913Matz2D8j5liYMZaHvnfQI/ryaup6RU2Ad/IvPlaTJAFfopCpFmCxAvzfKXTigUuut0BKIOwe8X9Hs356FGR+gANTd1Ea+NRjN0HEnEhIW1A93bZFGGlPjt7vgUdBXXv44kymhw2JGGJ6/DXWcGHSUuygb/IAOFv9Q= 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=W/2Waab9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=KOBNlF+P; 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="W/2Waab9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="KOBNlF+P" 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 641GLR0s4047618 for ; Fri, 1 May 2026 17:06:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=l02V6N4JgrN OPuusUfSdP43C6TvNDkrqHvXRRW/M3Cg=; b=W/2Waab9WSzoVY2eDwwqwhFcGXc YeIT9D4M8HxpFrMU3OAR8jD//ajACCC3l0AxeIEFYaHY+lL+Sgq4lYyFJvGTVisy bOiPsex4upb8koTSLW54K3NRP4IWpW6Dlg9qk0YFDxGxxjY8s5P1tYtCDsxvnddU JNr8BT4gMnGxTd/SsjGKNa4R5mlM/T920EAQDPjsVeRy1Pgl3KzlX58AeVHgExvH U/asnMKTiXZh94Av0p4Ha7+Xhv1mrO+pOw1uZhciL0wZCLyOcP9wDZzlL1n/Gzgn 99LNQtxlFUYBTAdHPb2rFUFB+00JWBH7byyLqeoGB9jzbi40nPZgdN1njhw== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dv7wuvxgj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:39 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2c0f6593ef5so3236597eec.1 for ; Fri, 01 May 2026 10:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655198; x=1778259998; 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; bh=l02V6N4JgrNOPuusUfSdP43C6TvNDkrqHvXRRW/M3Cg=; b=KOBNlF+PocSEEkRuuzkhNRETuYwWKxLZC86KhsqdvdAd5EyqOYDrSoBz25+ua6lDHh MDQxCYjpHHWIxeR+umc03tR3ZMJ15R9E60lJjTzPSMC8rXzo/26F3R33XkVWo+4XPvow qNYy9yWXiWreNPh5klTNDcjALdPOU/F3RxpVq2ncu9kRy4gjfhOMK5I8ehOmlHbtySzA TUqp/Hg849FJJqzpSNJqGkSSFpdEEB5jbDBxtXqAVDXJlIsZKGM5vjT8MleVRaaIooH8 EI6ph/c65h/eG/y73Yk4RbmVTooLDzshD3qJJRoy7ofWM/tAQxI7jE8ERwp6RGi44/iL 2JXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655198; x=1778259998; 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; bh=l02V6N4JgrNOPuusUfSdP43C6TvNDkrqHvXRRW/M3Cg=; b=s/HPaSDWbkei387GPcYCwLB7WI+yFLIcd0V0uiMlsqObEZr3JGz4N3ms68h25U0Pow Z/+CAFplpFCvMBV1kBcvznNIeQtoYMLl6QGi6OPtJJRNBkJUfpPAehqfoJ6bjXAHN+UD QM0dYVAlaqGBtIB6nMBTcCHA4uGWbkII7gSTQYWbvpNgjuODxZLg8ewk/wAQEB1Lhen7 CJ2h8gGmH7++4ff8k6bJ5QgFaevLZypO50x9twHMiUDQ08NRV79XU1rWU7vK2E6JZnVK ykg8DN/SNzfPCqPMugSq1I4nc4Z6O/RkECeFlWK1O6iZwXrqCruNxk+pAoowEf8EBSXx kUUA== X-Forwarded-Encrypted: i=1; AFNElJ+cz5YUaOYV+r5nCMpVWqIvPNVZFz+5Qub7bHNG8FnafIbrPzZSycrJLwxJyHTJZlMsFycILblWXe9jjlM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3p4DsShRVEU+tt6QaAfv1XIon05DMNnjRQNkLhLJJ5chkDRRO jsG+gELOHCKl+2dSDRIsv9BCvPNNcfSGw2SLrwE2yB5R2VPKc6pBQsdSbnJySkhEoAqNahgySwg pvEw/c+tNIFGuGcK85BhdLHTzbOJ8QGbMjriWgM5MEKNfiRJRiy79SZz752/me9G+2sw= X-Gm-Gg: AeBDiesUHUcKURkfd0CyfNp2c60IpcSugo9zLOMC+BSB/XxM/hm/x6fa6zgdEVL1eoT PtbHV9OhagHB+W2bPsB1Au43xP1CK6muTsSuBbauNW7zyY4GhtbidJ0dMMHqZyHSiNg1hdWeFDa RHUSBsVsEdHCH6dfSeMh9hm3b27hIUJbZ4VLapuLTmmRSuu9lhVfCTR66IxEmNTQ5O7C1WDrOUo tkcvUt03n/g1I/laiCwcQ1LzIALjq+VnzRCwN7D7GKR+eg+TRXkaQn4cz1kNxQwE6ixbwqHuxU5 CUVgBh/2TobAwGNnBPgdI6tiu04184xXLJ6wXEUdxvHqVl97mK9KWsKZ1H3C6cxTQNpXcSHumev 1FEFddnlY2L7UBfxAMJlZI+k62UjxTd8TpkMPafHcCijRY7Y1s67g5US/EirTd0U9z3XAozlLfE s/NcZC0jPxog== X-Received: by 2002:a05:7300:2322:b0:2c0:bfe3:b95c with SMTP id 5a478bee46e88-2efb8aa1f8bmr96512eec.4.1777655198044; Fri, 01 May 2026 10:06:38 -0700 (PDT) X-Received: by 2002:a05:7300:2322:b0:2c0:bfe3:b95c with SMTP id 5a478bee46e88-2efb8aa1f8bmr96494eec.4.1777655197477; Fri, 01 May 2026 10:06:37 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:37 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/9] dt-bindings: soc: qcom: eud: Add per-path child nodes for UTMI routing Date: Fri, 1 May 2026 10:06:27 -0700 Message-Id: <20260501170635.2641748-2-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX7PhFaFWLQprx rbwM82OhBDDdxG9J/0k7ZAKth1v/iwD3/qIgs/uun/WiXp51C8Ke35LGqSFpb3Q27vShJ6m8pnd uJ+YQQ6gRGwbziItGktwxq6HuNcyaHKGdk0rZh68nDvVOWTez4tyQttR3/F5SwbIRQr93a0D3eP geipKUKnKlqgcHYKcCQTFCDtTuTW3kuDN6ahko8eYI8I1ylcTRDeUOnsYZLwQv9k1DELubae3++ NOqcVJnlWEeYBRnYFRIXlVBjNBkMamQ2kJ7GjTBhlSKo4Dw1KaUW3U7blHS6C7xARPqaJ+7hFpz UCUEF+TqcxUP/j0fUgZKnTNX0v1UqWrLQ75d9+iayEFMbHo5WvbLkjJ34LBpfbwiZ4q4FaMT03s Eh44K9eSkyDrAsvDThgqVfcw0eCT3UU86CBSxIeEuJm74dJstcKLE/7lu2NUDzQQwOciPMlVuYH x0bMq9WAd8ILxFLmAOg== X-Proofpoint-ORIG-GUID: opjTGqvbu_83qF1ogfvVIXi01jw1n3z- X-Proofpoint-GUID: opjTGqvbu_83qF1ogfvVIXi01jw1n3z- X-Authority-Analysis: v=2.4 cv=GMk41ONK c=1 sm=1 tr=0 ts=69f4dd9f cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=S5Gqkj48huS8qG7z_KgA:9 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" The Qualcomm Embedded USB Debugger (EUD) can intercept one or two independent High-Speed UTMI paths, depending on the SoC configuration. Each path is distinct, with its own connector/controller connection and role-dependent UTMI routing. Because the EUD sits between the USB connector and the USB controller, it must relay role changes across the UTMI path. In device role, the EUD inserts its internal hub into the path to enable debug functionality. In host role, the path remains directly connected between the PHY and the USB controller, bypassing the EUD hub. These hardware constraints require per-path role awareness, as UTMI path roles may differ. The existing binding models only a single UTMI path and assumes a uniform routing model. While sufficient for simple device-role-only configurations, this representation does not accurately describe EUD hardware when role switching and/or multiple UTMI paths are involved. To address this limitation, per-path child nodes are introduced to describe individual UTMI paths through the EUD. Each path includes its own ports description, allowing controller and connector associations, as well as role-aware routing. Signed-off-by: Elson Serrao --- .../bindings/soc/qcom/qcom,eud.yaml | 55 ++++++++++++++++++- 1 file changed, 54 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..21f75038a81c 100644 --- a/Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,eud.yaml @@ -45,10 +45,63 @@ 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 should act as a role switch for this path. + In device role, debug mode inserts the EUD hub into the UTMI pat= h. In + host role, the EUD hub is bypassed and UTMI traffic flows direct= ly + 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 + - required: + - eud-path@0 =20 additionalProperties: false =20 --=20 2.34.1 From nobody Wed Jun 10 16:25:35 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 75D763F20F0 for ; Fri, 1 May 2026 17:06:41 +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=1777655202; cv=none; b=IMjs1uWEHSkvBtJtBcHUOHz3krk0v3/cYLoP8O3NPx6B+b7RiN7p+d5VE7MKvgtoyFxO0ETeR5F1Rz+96nHxBw+zqloDvHcsKobs7l8GXx0InODkZZJvj0KbAQj0RlmeeaRbk1NdsNh5zIf20MBTA4cMHqLCay1Qxq+WWDDzV5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655202; c=relaxed/simple; bh=c6foQKuTgVKrAa7/qWnQsUPiVjjh86lQqk5HwVNHkho=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EW+aVCJmIhbdrjvXNdYb3JJJ41pe4L1/6mfoFk7VYa97yjE5b04ePO7gcQMRtoAb6Ch3Ss7LgX6ad1NcOwpZl5X0Zd/lwTtWWF1099sgdxBIt8gqYwhU2e8baw74L1JHlIOZh92lFwFG5TZmwZWmyC6ErXP7Faazz+KDqIrarto= 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=bQFqB5y+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=It/v5CtY; 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="bQFqB5y+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="It/v5CtY" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 641GLeSq625433 for ; Fri, 1 May 2026 17:06:40 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=Y1/jMMLEpI7 VYXMfh+IoS/d8e62Xd13hJ5rETM+Ka3M=; b=bQFqB5y+bBkp7GUE+8iQQVOAO2i LdfaILBKWvwvxzeNvjlNWeFfpYgR4k7FlwmryUYky67UpHxFludX3iV9pRFzmXjv LFdBeB+wcJgGgWbFxn2fgyIxNyZK1m0wfozCDk3ksRFprbi062mwAjen0yKa74w+ ANcYj3rr6l01t7djqDYmfvuv4UKyz0JR+2rBjMXAhNbOyzFzN5W5z8G+XPyeIkEM BO1WYylnRhOrld6m/v2L8YLsl7DgAl8scQhj33n8kX7++Qyyx1z+j+FQzX0sSrKJ q9WTVDo4swdJ8beXP1kDRKe8lEWC1eBZL76YuxOPZ4p1xp+hzYNVdf4lBwg== Received: from mail-dy1-f200.google.com (mail-dy1-f200.google.com [74.125.82.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvc45bey0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:40 +0000 (GMT) Received: by mail-dy1-f200.google.com with SMTP id 5a478bee46e88-2ef37c3f773so483760eec.1 for ; Fri, 01 May 2026 10:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655199; x=1778259999; 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; bh=Y1/jMMLEpI7VYXMfh+IoS/d8e62Xd13hJ5rETM+Ka3M=; b=It/v5CtY6gmyxEZhZDv4kuJ2RuSVl/46DrWg7Htt/lNaP4vLTDI/xCxhp8gZn8OShf rD0k5eA8lA5uAbH/4wiCNHjfiSs3wouUNbVrsI3uzGl3MD2+bBUFVZMZoNmUSsi0v8LL a0fxmqlQju5t5JVEqf3l9ZxMVNcrlDHcLPkClImIxopPMK24Mlh/VP11rOg3E+Uv84PM MDXUcFsllV3G3PvybxTaGOV+r+G9UUyxEqo7kw9T+cPmqd5hCJ/NNY7a3OPfViDEsGzj 2Sd3WV86ZvuGybSXvbpm2zVNJptlYjsmGOPK2eXGu6huWbG0EceACcCXvlxgz7jAFhXX XDOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655199; x=1778259999; 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; bh=Y1/jMMLEpI7VYXMfh+IoS/d8e62Xd13hJ5rETM+Ka3M=; b=Of40EDqhqLhxnus3ntm2jyMumCsfNBSTFPppMbVY+gPMFvGgpPeG549aTL85gkd5W1 +AxPElHuQX0XkJeZvWYUwkgI9krz34hqiKtda1uwVERVL4ay4QFvIb+l9d8hiX95KoJ1 5rGh6DUKTaKQ81gigyabdL/kG6y+kParTp+Pg9l6D1xHqN4IIXrTRTvbahB8jPJaIQrZ +k6A2XFdNVFzfKFc9NRc09n4KWj/EpLW36and2yHGY1vDBQ6kbrNjtnB66VOChSH4EbO JVqZEFZskZCizLOdhJuYLm7nhnXsQlQQzKnK6XUjZJqWatwCywFJQn3F8eF/hev8AiXe d1WA== X-Forwarded-Encrypted: i=1; AFNElJ+Mg1tjOg5++s6sWCGO5ifRWjju1LfaUyioAgDGvWr6sNYTb3o+UyuPCuM0/NXLNyblshZxrUSoZE7zYz8=@vger.kernel.org X-Gm-Message-State: AOJu0YyckMKGqtyUBtQkOT86GIjdHcEXKBmik3g6xv+Dd223VYLycAoY alEQnJ1XOuIP087CGvmaDt+IBlHeT5U0EsHLukcRnktwYwAthGBTi4oKpIWD7uRcN3AJ9R472OD NLLZOJPQ50yHnr9kGBccKeiH2mLuXSkDV6Z2nmecWLokgpn1pwPF3AzPI8DJOgvdiKs8= X-Gm-Gg: AeBDievSS0rLE2TF0ZrIBbrcfSo3D4Mbawsm587VEdlRYngYrWnW05+X7YzDoOp1T9j Uv3//BqIzELM3T3Y9urZe54++93ueLHrYU9Vk75xJ0XMbUN4Q8lZXK0YVSjUZffF0E6bsayYcTJ XWRflw9oHYLg0i2XM7NqL5246PeCDxoORT9DCOy8dqE7O2VZqVG4SXBicOhPcT8LrqTRke7s3kh xdd8RppWNmHfpbnZOEGykKX5ZldFy/DBQFLc/n6IPMZOTp02HjyKBw8OKA8A6Pdu4FHu+xGqz5B jDvxgZY/GEmgtlZWYLy8GpuXBel8ce73am/YVQl0SxIJ1hH2hixrJOPwF3BHwr59weFLOHl4Y1P GEmkuU2yN4UcZd3WIbiI+K1uuTZ2bLle2Wxg9OO0LsNNiP3qyVPI/stdh7HCfyO17zhpHxTcGtu GAjnKugLeu+A== X-Received: by 2002:a05:7300:7490:b0:2c4:4363:3742 with SMTP id 5a478bee46e88-2efb80c0bc1mr118111eec.9.1777655199119; Fri, 01 May 2026 10:06:39 -0700 (PDT) X-Received: by 2002:a05:7300:7490:b0:2c4:4363:3742 with SMTP id 5a478bee46e88-2efb80c0bc1mr118098eec.9.1777655198566; Fri, 01 May 2026 10:06:38 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:37 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/9] usb: misc: qcom_eud: add sysfs attribute for port selection Date: Fri, 1 May 2026 10:06:28 -0700 Message-Id: <20260501170635.2641748-3-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX288FyjmKJmQj EnHBV7YDyIKNc0l02huI4v//r9nn/2rYR9kbCAAakO1X6eNe9fShxrgpTuMK3FGo0d0MMmyc2Oq bne4lstWQQ/Kzuc6jmyh6FO0YrBabGKbosSVLRvEd/s/fQ8jXI4tWC0IT2mrx7uGoHA1Af/p9qh B8MJmaqEzjuJikgY/49spkp9+BBORH8O4LB43NsX/lkvlML4Whhe0mwCpeNbpnjxxjydE41X7su W4RtpPMZ9ug0HL4LUXd7zMQIV7bsrnlRijzsrRqYAsBA3QasiQ4gT+F4zO+TepL+LNxVokGjJqR 4y2s+lgRLRwkQngYZA4uDmPtpEIi8QAU/2wY8wN5JIFmCVuEXxfECrPv3a/2ZMhIEFFUmuNkGdy mRaXM8xyHz7uTRIGk/d0YWDfznoKxTmesxY1PF/z5JQa8GkCrdPwXwdQCC2OdhZs6uKlV7JbNw1 9SvA40yUkMklMqJWmuQ== X-Authority-Analysis: v=2.4 cv=DP+/JSNb c=1 sm=1 tr=0 ts=69f4dda0 cx=c_pps a=PfFC4Oe2JQzmKTvty2cRDw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=un400R04Xmhap_XYEvQA:9 a=6Ab_bkdmUrQuMsNx7PHu:22 X-Proofpoint-ORIG-GUID: LkFn9JphZhgz_6KLW1wkZFKmdYVFHatj X-Proofpoint-GUID: LkFn9JphZhgz_6KLW1wkZFKmdYVFHatj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" EUD can be mapped to either the primary USB port or the secondary USB port depending on the value of the EUD_PORT_SEL register. Add a 'port' sysfs attribute to allow userspace to select which port EUD should operate on and update the ABI documentation. This is needed for systems with dual USB ports where EUD needs to be accessible on either port depending on the system configuration and use case. Signed-off-by: Elson Serrao --- Documentation/ABI/testing/sysfs-driver-eud | 16 +++++++++ drivers/usb/misc/qcom_eud.c | 41 ++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-driver-eud b/Documentation/ABI= /testing/sysfs-driver-eud index 2bab0db2d2f0..a2a4fc5a9915 100644 --- a/Documentation/ABI/testing/sysfs-driver-eud +++ b/Documentation/ABI/testing/sysfs-driver-eud @@ -7,3 +7,19 @@ 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 + + The attribute is writable only while EUD is disabled. + 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..4aa49f0f58c0 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,40 @@ 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) { + dev_err(chip->dev, "Cannot change port while EUD is enabled\n"); + 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 Wed Jun 10 16:25:35 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 3940E3DEAE0 for ; Fri, 1 May 2026 17:06:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655205; cv=none; b=F4JTlKkhTyAPdWflcLjBIUZuodd8rSXP5IJHDcpO8TxFyG+H1y+hwjCoHkKIESeIBwnhyo0g5C9Omuv0K0m5eRQf2IZDhphiRxodDt8G1JnK9vZiz5+1X/7RksjICSgYSgVfuzQZMZ46xDfWPfmo3QBEbtfwEOvCOMDZDI+ZO+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655205; c=relaxed/simple; bh=WwTmtoZwWYjvV3fuEhiHznZlqQyxogCBBzzvthHXm2Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YRDoO4KU0/ojT9xxZZxNHMZATfsx0nyx06tVaixbD6+3mc606fH/mNYhpUNs5Lmu5eNWKUsHwSWHER+GgqNjC9i+GE53j2GFGmFMrbi/W7oDVlgL1+aRfjA5mG7uJqjD11X2FZZ7DDtCVMFkin5CRtJg0qIIW7ggqUOjRb2wnNM= 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=FHoUOpBd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DreqT4zR; 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="FHoUOpBd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DreqT4zR" 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 641GLlhg4048027 for ; Fri, 1 May 2026 17:06:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=40HQheDALEN WlUv8TyHttMZOpFAwcKS0002ZxXoLW+o=; b=FHoUOpBd/3i8mE0n9mB3qqIsSN2 yoMlDwqJUI2ZeU53P+o3paChauYIsmsX/Pk+V+sVuzKVrD27Lg1XoKeJmJw92URF ueOljx7YrDLbUjCxkCq4BtnyCv7R+VxoMTKloeUK1uM0xQ+SKzOxv6hyMsdvhTVN cCSJF4ee6EWflXDtFk/Pfa3wZS4ATbLP/tKiJzCKUW+jPjvAwcybZ27AGCrRaZVf f3z8C8i4DOOdJZX6YabqRlB4ZyzTmLCl4U3unbEEJj4MUHO4ZzXpCy+4SeeVl3u5 oZcE3G6bfxdMlwqkqD+F0dYAYM2FYE+beF8GaOABzSKxDggzT3DYOMUJj2Q== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dv7wuvxgt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:41 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2bdd327d970so1423122eec.1 for ; Fri, 01 May 2026 10:06:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655200; x=1778260000; 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; bh=40HQheDALENWlUv8TyHttMZOpFAwcKS0002ZxXoLW+o=; b=DreqT4zRzTllI8HlykN8xQbq/u6wBBnhN9INbQS09xjSdK3gXJzWuO7rTeEwKIm7Cs 0Lso9rt0cyzOUqeDveoi/ae0pi5OiXadD7R22ib6r8rueIkVcgkeXVNkleEq4J2Vi1i7 vJa6fly/ZO0vcojTfbU//CZoSA+2cPCCw2g1HtuvJA6ca4thJR3LDo82pVxmMEFa/noH QLN7KTbZLUGArKOLviMVggw+D9nnS3w//Fz2xqeCDIwpfmLIMr7rmRllYScyJROVEffU QEmOWBNp1xo3tN7FyCPZiCtEvY4afck9Qa3+Vk8bAfw3FbLH1OQBH3sfIOZOPg5IVAXV 6kug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655200; x=1778260000; 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; bh=40HQheDALENWlUv8TyHttMZOpFAwcKS0002ZxXoLW+o=; b=JkTAJJ9Sx+kVSxzmD/Fx5ZlqyX7fCXlBihrP7x/0l80es3CmexsAqRqmgqtFEERZxO 1uSSRUTPiOLK1FLRCKQkBEDz9Z9UrZ452kxZiV3OzwI8hqSunKhy3YklbTVIg1rilZ8L oobwp90HMXZp/K2YuJQp7Fz/hM22w0JEo+0HfGgTPw9lse033XMZZAuu2N2Yk8OB0Nda mhOf6OuRDvdPlat6q+o6lA9/ODpO3nNSGd/7PUs1RkCtkG8TwH/wXyKUUb1+Z2yRnQp4 7ZfSWYUKbkM2S1TKfwRUMro1aCZCFUwgxCyy3CaXYuVKYPlQ+wUUoxfBoBk+vVNS+x0/ 4OhA== X-Forwarded-Encrypted: i=1; AFNElJ/1IwzFvTnnW+PYlbt7bdMrGOWLae4LR+4HAiDMnXRmni+dZlWxPGZrIJ+5ahOZPtc9P+PEjS9kAOc9Vt0=@vger.kernel.org X-Gm-Message-State: AOJu0YyRS0QUyylQbzMwVtLXBrY2rcyAZsGAxO5SyXs3zHCzcSQWLMMx FywX6qJLqN1Tg4uNqj+rpobOHuJnGbdYmNcfHLtdQKL6CQz9nBYZuBgIHoC9/SmZvdYrVdQfVCv Purx+k5Go8B7igXatcfXAoDLQ7nNOacPw0zeAAC3doSVsMiROonJsifEUkwS/mhdwMhs= X-Gm-Gg: AeBDiet4KQ2cwatairjRzsgKD11A2LyiGWEe3vqbDhNxtuIKo/LzXCxtI06/Mz57Ns9 zRJhbw+lMBZ3IF3e865/Nhs7H4ldLnqu3HrXOxtcpcHwEdRGQU7QAf19AxgISxxi/6DqCNtOGBk /i32AseWuevcMExyDEkjiqsdu8/ZZqS19gdoIHDVQtvzt4AGtlkf+7+zK0W74jegczRfvkNq6fv gJFML2jRerUUGeXT79NPaNLmZEC7oUXZ3nFtR0U1yUqbyKTX2b0UjG86JeUDGKvAvfO+/f8sv9g rfjg9o4cO2zGK6q8fxs1RIPNnZK7uTrtKLLWqrTEEiOlfXHYhmSNVVeKeUZ5MLeUL0Efs4bQlKM fFE/nYwYJZpXagblVCdEd68E/kFazZz2sLX6DJG+RmBdHgLkVyRWTYDE3mVNWC+FlLjw8l6v3bV Z5Ufjzseuo1A== X-Received: by 2002:a05:7300:7244:b0:2c0:df3b:ec1e with SMTP id 5a478bee46e88-2ed4f1ba5f4mr2969867eec.11.1777655200225; Fri, 01 May 2026 10:06:40 -0700 (PDT) X-Received: by 2002:a05:7300:7244:b0:2c0:df3b:ec1e with SMTP id 5a478bee46e88-2ed4f1ba5f4mr2969845eec.11.1777655199616; Fri, 01 May 2026 10:06:39 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:38 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/9] usb: misc: qcom_eud: add per-path High-Speed PHY control Date: Fri, 1 May 2026 10:06:29 -0700 Message-Id: <20260501170635.2641748-4-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX9QawOiDRhTRC dyeAQFLLf6WSWyljmlmO7xPmNFgfx2OoUaHDP06/IrClyypexW3rar5UxS/hogh0oRAbyOgS7X7 AdbpaehYjM3HWF6gWH3O8CAek2yFyr7vHDMnWy2l9ErnTHdShp+mwypLmSVFpqvGkOxofcFOWEP UoNemq9inoPXju/bC38JTDD2evab4zHqOxhm4zyhP67Vuv25zO0F5+dwdZ81qP0IKJ7H3eNOv7q LCnvfCQPa/8A77eOcFiQE+j2ED7A5Z5kSqzIzp6ta37lqIDmeXBeWBzqo1HXb4CqCoNn2WDHC+4 0VLN+O2aRxMbYhLE5AHEmn9w6lVi4i3KA/ZmaNRKdOhuk4wqDCDda6B5GFN1+8f8R5yYSVSn1HA i4nLA/KirNfeCUMEp73KLis+0zu2Sjs4xqWnfcoLBvvGD9q8cEpzBNNMjhztsXhGKk6ieeLRqXQ xthZr1yswx50nooyp+g== X-Proofpoint-ORIG-GUID: 4fNj0LtnnU5I5KiTvSummFDnfHHp5zqY X-Proofpoint-GUID: 4fNj0LtnnU5I5KiTvSummFDnfHHp5zqY X-Authority-Analysis: v=2.4 cv=GMk41ONK c=1 sm=1 tr=0 ts=69f4dda1 cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=qlyGqpo9vQmvKKGVavcA:9 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" EUD hardware can support multiple High-Speed USB paths, each routed through its own PHY. The active path is selected in hardware via the EUD_PORT_SEL register. As a High-Speed hub, EUD requires access to the High-Speed PHY associated with the active path. To support this multi-path capability, the driver must manage PHY resources on a per-path basis, ensuring that the PHY for the currently selected path is properly initialized and powered. This patch restructures the driver to implement per-path PHY management. The driver now powers the appropriate PHY based on the selected and enabled UTMI path, ensuring correct operation when EUD is enabled. Historically, EUD appeared to work on single-path systems because the USB controller kept the PHY initialized. However, EUD is designed to operate independently of the USB controller and therefore requires explicit PHY control for proper operation. Signed-off-by: Elson Serrao --- drivers/usb/misc/qcom_eud.c | 126 +++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 1 deletion(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index 4aa49f0f58c0..a624c44d5d59 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,12 @@ 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]) { + dev_err(chip->dev, "EUD not supported on selected port\n"); + return -EOPNOTSUPP; + } + /* Port selection must be done before enabling EUD */ if (chip->enabled) { dev_err(chip->dev, "Cannot change port while EUD is enabled\n"); @@ -229,8 +297,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; @@ -241,6 +355,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 Wed Jun 10 16:25:35 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 68925421895 for ; Fri, 1 May 2026 17:06:43 +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=1777655205; cv=none; b=DnIV+WU9XEfa12kNxa1SnHO1cNja6IuPtD6sNV0vJwuRILAWitaByTXn2bIeh+EcZdbYQ8TY3suIH75bXrnLzneHk7r7LopiOSbhX3NNnN3GCbsNu7U7k3kchaYXoFQTarCavUMzjUl6tb7Gn6GDOR/hytAIaZ0OjxcAFX1M5BU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655205; c=relaxed/simple; bh=2vWMBTTCgHzaxP8XjeM/vaujyh3P+bvBSvyTQjbeOZY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jYW46LoWQeWLuROfSDAqc8gPv/QjVR2NZIRAnFIwkraNr6ji7hBrzTGD0RcSXwclBK7G3pY6WiA7nbBonexRBnx/fKqSo37C99YULKEEDf2D7hpBGvcR0wI9vMgsA93qgxCBTbYEm4OslhC76n+IE5bZtQsk7Sef/AtBRtMVImA= 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=ikgjItW0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b2krYwRt; 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="ikgjItW0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b2krYwRt" 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 641GLTFx3938660 for ; Fri, 1 May 2026 17:06:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=3CNdC0e3Md8 bYeWXZIY6PP7X3JYtt0X4YEwWO24BnJQ=; b=ikgjItW07aAOUm0mwXkWQX+hQC1 1h93JWUsEstk64rsmGIQgeffkxTYByDpa4hDgkCgWyvTZJHbc+JdQpH7U/f3p1jw OF3iHpM6nD6cD6Bzt3cQlwBWXF1Ck0FbUFWaHCUNb/sVYa5N49gGo2nN93JxCTxe 9C3jfBuNp4655Yf0RrmFV1gHCooWTZ9xHaC5UK8wHXqL1inwpmh+5vRbX1kv9ykL Rog4Ywnqd1vdhwpg+2RbbbzXweEAYZq9HVG5MwE1Bsfmc/M83YMovulcSdacL7Lb S+c9RLNya8XMg2Bd4yAcJDxH1PzFEtYXxjKfi76rafe6JfYj26R+FNIERcQ== Received: from mail-dl1-f69.google.com (mail-dl1-f69.google.com [74.125.82.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvtrn12n2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:42 +0000 (GMT) Received: by mail-dl1-f69.google.com with SMTP id a92af1059eb24-12c726f4019so3019552c88.1 for ; Fri, 01 May 2026 10:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655201; x=1778260001; 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; bh=3CNdC0e3Md8bYeWXZIY6PP7X3JYtt0X4YEwWO24BnJQ=; b=b2krYwRteki3UnSlDXo/Z4Xmd4KFtIN/a/tYM7oAfOD1/ZIHSFA4mpAd3Iadf1chVI g2hGZW32NJt60+3n4IpxyLp0Lw8LiN7ZgUvVYFeo3F0DWUGvIyH6X15EROJF0u7Tyw3q Q24FywsQ0F7DlcFiyZwjNGnDoilNwnN2+KqyuKv5YC1h5x9opRDjV7aky+zRJbk7syxu gZmC1H6Osdvs9uwkOZv+TOIOVP2CIsL6r3BdpBtEv1PUvQf53UjNTqDqAswYXUh97Z5R Kpmg9bLqXZG9YDPGKXnlnQ78S5WmjuBdfCvmCGdrpfPA8sEjTfqo+HoKZNz2B7L9HkhR h2nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655201; x=1778260001; 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; bh=3CNdC0e3Md8bYeWXZIY6PP7X3JYtt0X4YEwWO24BnJQ=; b=YXbQxB9q7drvOo103jCSSvHIOd/bb51XjE+sS7DEHPtkAwHr4o2OuCleFZJPiSDmQy VUKYIZDaM/QKtWAkKzL4Vb6VKh97p42n3zlV2ApsNgNtFkuskuSjIl9WD3g561liWFDd TwOMnz76knhr/iD+j8q317/z5pOVv+5BZqpRxHM1zNrey4VCQ/bBRdirSmX0R+VCzyeR 2eaqrSw5ZHAiWblNMdi4gcUSmzq9ta8nS2E4eOv8aN1cwbBcfR/DzaRYR+eSEl/M3w9m JJHjRm0GhuWkHbPejdH3hejtD/PLrdV/YqD0exoQ8DX6FB9RKNhIRqpPGdHwcb5LswA6 gBjQ== X-Forwarded-Encrypted: i=1; AFNElJ9s0qHnou0+SIxd1vOliE58eDpViGFF7APH34wJ+XKL6KBT7UNS3+giiHn7/zHga7tMUegvSbCRspmK6v4=@vger.kernel.org X-Gm-Message-State: AOJu0YzppW13QAfjtiZhZ7qyC2JL40HZlfmWVj9v8hDExvZcY+AFrxEi 9bppoS2399w1UaO/t1xH2tB2nX93eBoh5EIkUhbpNKkyscDqtaVltEk47UpkkoA6VnTmPXHAycQ fTbiH5SLZwbjwy/T2vp14zSJpHTXtXkHfskldoGTtel7V3W5I0cvZhejTQFGXb52wcAB2q3Jqpw I= X-Gm-Gg: AeBDieuHoWHXtF02sjx7IcqXBy3q7jvHwmAabOlgNMyGtSCU4OWsg4JMLYHDU/bP72p ZQgTfI6ax47+usFAR3bQPajSssUol1POp8IwiiTE7EB6z14hWfEeJDb4syofMLpIdgzSDYdK7e0 0PLHNHjJ1sZDOysMvbCwjQW60WFyRM96bqR/j6xwShLMPvQxAF7HouwYD5WuoEN2gF6FHY0raCx x8AhCZ7jbdqXhXb6y63uIxXvhZeEp2ei/eEzZLsbDFIF8zVE/LyjN7HroAYt3MgfPBhJNF7IG1z G9aUGNLuLAeqjKnxMLVwF5HzPD55qyXnVhsNG6BtR/pYfj3Q6BMS7qyqJM+pcP0ZiJhYYSWitn7 7P47y9EmZEQ/sMiwywWT+zcDTdnn70C/wvspN1nNgIh37ldN1wQCD4qW+ga5UN8AIb7i429HXi8 8TLnL+jSQAuw== X-Received: by 2002:a05:7022:eac3:b0:12d:b654:8176 with SMTP id a92af1059eb24-12dfd7ae517mr78330c88.1.1777655201321; Fri, 01 May 2026 10:06:41 -0700 (PDT) X-Received: by 2002:a05:7022:eac3:b0:12d:b654:8176 with SMTP id a92af1059eb24-12dfd7ae517mr78298c88.1.1777655200583; Fri, 01 May 2026 10:06:40 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:40 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/9] usb: misc: qcom_eud: add per-path role switch support Date: Fri, 1 May 2026 10:06:30 -0700 Message-Id: <20260501170635.2641748-5-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: rXFG2eJC3U7OMoAr0Am9l7r5uaNtNeTd X-Proofpoint-GUID: rXFG2eJC3U7OMoAr0Am9l7r5uaNtNeTd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfXw/WLF9FPUprc Zl4z62Z3oUYczu/67H7kcHuRI6Tz0P2AdCdX1CMjc9dVNIs+b5+A7TXpSwoz0xoe3ixlauJBYrt Fd4P7nprd0nCNqDTZlDYDB/REIA+vM9rWO/HlkNMFm2PMKvDjb/WFTXLQmGSjVA1/th+uAm1I5D PbF0smjOCm8wdAzLKOk6HwZmL/bDKm2143kzDApBXw1wpobViz6lERUzcFa3lsUjsJqoRJUxR3C rAj+CzNbYLG7lkc/MtvlRz+za2d01rIIIFKDibJA0vLGxgTq9r2YthwQM8WRoULeMoTxf8FsXbJ yRs4RYFkK8vvDn91r8rraJ8tYMtteXlYDUfUz9oHk81hHVATTL+59h7o8MOb/PUmPm123IpaGPP /h096EQo3rbOhRohVulm2+n2+ea9+4zHXK/0MiXhN4kP8yPCcQWRrMTkuC29WjME/iibznPxP7z wmgXeeIVEzz66lKaJwQ== X-Authority-Analysis: v=2.4 cv=KrZ9H2WN c=1 sm=1 tr=0 ts=69f4dda2 cx=c_pps a=kVLUcbK0zfr7ocalXnG1qA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=3maAJ9QWEdykmXBQECEA:9 a=vr4QvYf-bLy2KjpDp97w:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" The EUD hardware can support multiple High-Speed USB paths, each connected to different USB controllers. The current implementation uses a single chip-level role switch, which cannot properly handle multi-path configurations where each path needs independent role management. Since EUD is physically present between the USB connector and the controller, it should also relay the role change requests from the connector. Restructure the driver to support per-path role switches and remove the chip-level role switch. Additionally, as EUD need not modify the USB role upon enabling, remove the unnecessary role switch call from enable_eud(). Signed-off-by: Elson Serrao --- drivers/usb/misc/qcom_eud.c | 89 +++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 19 deletions(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index a624c44d5d59..7fbb74bf1599 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) @@ -274,12 +277,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 @@ -290,15 +296,36 @@ 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; + } =20 - usb_role_switch_put(chip->role_sw); + path->curr_role =3D role; + + 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; + struct usb_role_switch *sw; struct device_node *controller_node; struct eud_path *path; u32 path_num; @@ -331,11 +358,44 @@ 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); + } + + path->curr_role =3D USB_ROLE_NONE; + + /* Fetch controller role switch if it is role switch capable */ + if (of_property_read_bool(controller_node, "usb-role-switch")) { + 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; =20 chip->paths[path_num] =3D path; =20 @@ -365,15 +425,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 Wed Jun 10 16:25:35 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 AAC84421EF3 for ; Fri, 1 May 2026 17:06:44 +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=1777655206; cv=none; b=h4EDPifpNBbYQJIT2oQOUQDdBuCdNzKeu5Q05Js0T7OQK+gUIlZQh5NMNwNYRZFN7QXngurv/nFKQG9HOWt/ZuuWl1Fu9nm/7ezmiJbEwoPMEemmbytnSkij4+6vFTpEXMf8egWmkgY8Jveb0BGkQldsLDftwk4tcaTD0mQfi9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655206; c=relaxed/simple; bh=doFJzNLDHQmlXc2pfwFDlVaTkV7lTXB8yqsy53flfY4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Q168UkjvmRaT167xE/nlsktcL1PLnxatijurRE+uW2Q+YfPNUqkx30dAQNa3b3ekBTsC17vO2nVX0xjWrAta2PxwoEWS0YriY3G/PXSXnzAGgbQLrTx04XsZN3upNbXxDmvqo8pbTG12vkGuFQL1+sNeuJBX33q0Gq6C0GSk9zM= 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=bHWvmU+j; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WBJIreje; 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="bHWvmU+j"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WBJIreje" 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 641GLk6D987850 for ; Fri, 1 May 2026 17:06:43 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=j0RJQKr0tEf FrH8IEW2efNQFcXBtQIOQlSiYqCKVrXw=; b=bHWvmU+jo6wB4u2LZnytLFvHm85 6RSn3bSkaFiQZrJL8EUpQKSOYW0nP/+za3Xyh1OjrX0GZ2+/3NWT1CBcgRiyaW3H IgksOJ9c7TU1Ej4fbxdlxHUbjPLA0jCi2eXX68DHOfsGpZ+WXwp9nGQK6DOZFlkB UxQEByIq+MiUl6H7Hc/4Kdia9rFzRleTXlAoz5OcUIVFo+MIHC0E5dUKjdkhBvdw hgRqCoG0GccDnab17rlWuf8ckfyY/93iDN/CWDdyzoPe0YcvodSkVrwzWZqJNPvk 4F0Vvj1j+m6WgoeLIl1pufG7drOnxQpNbb5+vlTeorOiKCKEl2H05LPRhRw== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvjhst3mb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:43 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2c0f6593ef5so3236667eec.1 for ; Fri, 01 May 2026 10:06:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655202; x=1778260002; 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; bh=j0RJQKr0tEfFrH8IEW2efNQFcXBtQIOQlSiYqCKVrXw=; b=WBJIrejealST25MRBMzniO6s7UXF5KfDfAEHF64EmXijJV37WawNlm6ac5xGIwegVH gYRRS1xk5hJV/TazjCT8T+wndvpn+byE27QSUMN/CzFL9zOS0W0awEndUkfoxPCrlrUn FwDVNCWU8Juyd7Sn/HNBT+MMFZcQfZ6wXbXBmFGC9nC05LlAEG0/5w9RE+ZDiYYXm4Rg YnGJgzFCl/i75v4HF7E2AIYHa8zzbEiqRb10yWbDyfPQK4N3fmkxjzF5vYBUrotkW4vL 0ndZxGci6UU/yjJne8+MzM4iBopcWq2sum4yk7IqhXV820MbviIXWXA8YAM4bVZkIaBt qT5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655202; x=1778260002; 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; bh=j0RJQKr0tEfFrH8IEW2efNQFcXBtQIOQlSiYqCKVrXw=; b=amQTtn6e6EL8sDUxI7lhtUQW6UpQqRgswb5MIm21MqB+POxYAij6ym3u9sXVDz6/F1 IeXxDRCM+lLZrsaL6h6zEWsJzhmrHXZzCwD9Sh91LJskQfznHfjwMxnPR7inS3h2wuIi dyHhNzso/tPCqY9KR0gHYValAzX+OGFRgx12RnaMwWxtZB6UHe4DYJfEmveMEmx+VI+z 1iS288HcU8H67W0k1gdtZ7qjEn5hAM//9W2homEO+3Hnz6SgHFhxuUt3uZjKI+ZEZf9a cGiUBDc+UtH/I4Vw9UCjEd2W/q39mRoCWVEa/qtaieetPP5M6AFDoZQCXfirPN+ptCVi 9Zpw== X-Forwarded-Encrypted: i=1; AFNElJ97YYgquUPvtWz6yMlHlONg+lamtEOAtcR5NPusy2ZZ/8DmEjcgU5vrUJQng2t5A8IKc2a9TY1G6wbXMvY=@vger.kernel.org X-Gm-Message-State: AOJu0YwLMtDdUonJ2OBE4XPTz9dYcbM+SdBd4INPbFASkZD/Gbomtb/k a3kwYcdpxmFou8rL43SBaZ/hVl8EecrcQZpkbN0YGmb8C+Noy4/xP1V0K8MHt5fTBbe+4WQLL83 mj1BKy3VPh7schYyn/BdfSVF2MoNxUMNot211SunJfG4tqZ7kHW1b7Ti6QYTAHoBELBZXF9ki9C s= X-Gm-Gg: AeBDies7hhiNd/hCn0fGKCdpskBDo2U1eonnnAT3e7XQXvhxvApIgXGqm9SWqhRLcAx Yi1NwTM3+Qrs8C+2vODFVhCK21wUJojTPek6M6AhL0IBQA3kekMmJQcJf7s38m+ZoMcUtMKLbUV u7SMh19bisEH6lp4E5NvkyUu1AxvzsB0FpN2o15Fn8q6udpfk0kU1iOQ1ZhUwnSMRjMjLDNmwjT +tw/swZKOiAthqeWzU37OJBpu68VQ5vevEfOdVbV/SM0MQgb72+Do0Ow1JMluXWatgbFbOgn/UE eABlJMJp6lGeE7ASLoLlJk3kxU//IQdXOk63YYaUdRWGtQkmw9PMlNMaTx/hjFrhN5siag6THVE Y3Gf8yMxAOH1HoTuF8qfEtGxP/LfSeyDKt56PxUvKv7v6WRTCTZWePqOvOd5a8DUPI/Qqbfce2x MGSeRDfdCJDA== X-Received: by 2002:a05:7300:a14b:b0:2dd:c066:c02 with SMTP id 5a478bee46e88-2efbaca2796mr85842eec.22.1777655202304; Fri, 01 May 2026 10:06:42 -0700 (PDT) X-Received: by 2002:a05:7300:a14b:b0:2dd:c066:c02 with SMTP id 5a478bee46e88-2efbaca2796mr85821eec.22.1777655201800; Fri, 01 May 2026 10:06:41 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:41 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury 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 v4 5/9] usb: misc: qcom_eud: improve enable_store API Date: Fri, 1 May 2026 10:06:31 -0700 Message-Id: <20260501170635.2641748-6-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=Br6tB4X5 c=1 sm=1 tr=0 ts=69f4dda3 cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=iEam2xx7WbKG8qDqzoQA:9 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-ORIG-GUID: Z5b-X8angncAZrW7IZL6JfZ4yAor8jsO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfXxLDJB3hqtxQG pSUwNoEW1D00DeNu0fFQQxzdSYJvLqrb2fCitud+Psbhj2kIyC7Ht6/M+hbhlKEgNDwkVf3Z9bt CGKBZ9yOip4gAM+j+VaS+1gEH3d7CmF/dYelX/q+c02wLFBazoeDu3bGqOxBZvr0xuUHkauvyMo bRql442tG94mxZzkU852EuWIRfUj/whPqOB7Wke7x3bukW37ZWodtoHGW3me96ERO0686iSyu5+ YGoubWjOfgRfoh7s/jC8j1/vws4eWAhhzfmQWzW7/imfXQMbL2mZPBN3iRDwbfDs9Z/DA6JW24e CgO8DtV3RPjQwIJcIkXpCGQz59BT40VP1Ectpnbrn0MOPIIDuspQ6DZHCenmOixz1f9KSlyxKP6 xy+B3+X37Ld7CNeb04ZLOAx64bQNA6qEx1e3oznM2yk3j7pN6jkOG+QMztoyzg3WVoe5F9vA2g2 wpUWmfjomUd9dPQk7mA== X-Proofpoint-GUID: Z5b-X8angncAZrW7IZL6JfZ4yAor8jsO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 bulkscore=0 phishscore=0 clxscore=1015 adultscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" Currently enable_store() allows operations irrespective of the EUD state, which can result in redundant operations. Avoid this by adding duplicate state checks to skip requests when EUD is already in the desired state. Additionally, improve error handling with explicit logging to provide better feedback. Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio --- 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 7fbb74bf1599..f656ffc8818a 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 Wed Jun 10 16:25:35 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 85B36421F18 for ; Fri, 1 May 2026 17:06:45 +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=1777655207; cv=none; b=rK+/NUVJDYluHstRbNRdkTzBIiEC9SXwlSPOd38KAsOThv2AFcOSX4dOlwe5ASq1xpwsafuKC3X5c1AHO8F4Iu8hZhQyHyrHnPT8wS8pyzn1MWEQAWxkygno95RCx7Hpq7WqPkljrMvhoaRFzmr2OiwSjPi4+3v2wtz9UHd6KNI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655207; c=relaxed/simple; bh=tPwt2zibhZ1iKm71VtuAD4bNx+7+5u8go0KRtNEVjuo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G1kQbnEHnelp02gA8GggCceuAQVwlWQi3zuJNN7cwTar7uN00rGFg5k/lrEzJjz+D9cysvJmXuTgmAb0mMlEYe3Db7ouPtgq5t3lgACoOEVHFFyHc09RUaWT9e1mhvrUlpQOeqgPqcqqZNzdKeAwCaTEkaB2+iUmm9hb804CnyU= 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=OPNOK3Ci; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=G1fKA0Yh; 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="OPNOK3Ci"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="G1fKA0Yh" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 641GLf1r625440 for ; Fri, 1 May 2026 17:06:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=cq08UG3/aul dFdZC7DVUavdx4NaeoilYtVujt5rmGXQ=; b=OPNOK3CimXiEbGEZjUOKpAOSdWw Mfb/ombr1q1M7DxTQuXVkSOBkmULCglacE3icLJ8wfo1bpO68dnvgwMI3whFTiIj Yjm5jEYS3nI3JcGrGckWjkn1l/XEn4acUaxvEmWTGvl9s/i50l+de7fNo6RApcEU 8hgQJ4SIYC3SjikDLcVJxFx0zAaFhtTib1ttYlTQIMQlQ/t2qO1K3senn57qFwnX 62EM0f3qcoQsJ2rcSYVFX2Rh86QaEHdpefXYTAbb4RpGWUJHM/eWuaTHRraNEsKl hB1W+58/SOSBl6vgoKj+Lwy75//5ItZBpgJcAcPRLtt+RoVvpyEbnTtOLGA== Received: from mail-dy1-f200.google.com (mail-dy1-f200.google.com [74.125.82.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvc45beyd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:44 +0000 (GMT) Received: by mail-dy1-f200.google.com with SMTP id 5a478bee46e88-2ee34588671so1565466eec.0 for ; Fri, 01 May 2026 10:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655203; x=1778260003; 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; bh=cq08UG3/auldFdZC7DVUavdx4NaeoilYtVujt5rmGXQ=; b=G1fKA0YhElkNN3qpOkWodjvr72JTM2JZNckk+NJW5Fq1XO3NxVNe8aNkqW4q8+dWMz GY1jzJzH50eoWfYO1MI5l4iERjejWmw1/8NxGliGzpi+kedy++En7zeCEEC2Fk4LU5Fl YV/KGrbwZgCC0oBV0iifWpXb7zULzqEnC0bVs6/PQ0LnkFvE8SrSwTcnk1CUGuMJHQB+ 9+g2JUDI3Lr/CCkN7nps+aIdeuYnN6e9RwQzfcnrrNOoqGSXW3Nv7HK8sxVLER5oxmlY EOeHmmpSeYAb4pobvjldhnyLNE9WfNaPBbrCb+QJQ6QAI4MvDEbP3cfn32JW4SHwEwAM s3Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655203; x=1778260003; 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; bh=cq08UG3/auldFdZC7DVUavdx4NaeoilYtVujt5rmGXQ=; b=LJWYMC/hRJ12L6e8ncUygY8FIYqftMOYExlnetaCBNBcbncWdkUUI3eCfYKCVAJHX8 afKBGIdaCBBh8H7JGltwnNOar0qPsS+ysdwE/xZHV9Tm78F0T4MRiR+VEe4+byo0M1dy IdkDRlPZ5PkcP1c/FIqfjj8+74m8IzKA10AIR/7r8na51Ms/tzoLuWUqTzp2cOyimgIB HSBdtpSGmabfOFDZFyZ66vCVrc4L0knvhs/hyCEBtdB53o5lDhFd2ice7z/3dGr+Pi4A NE79VuTQ+8Vh0swHyeYB40Mw6plZYemb1dP5uC8nT7yEbNIV3NkviD4jx6lO535ZNwTn NcZA== X-Forwarded-Encrypted: i=1; AFNElJ9J6KpQ0ar7NYCzybnkvRCp/tprKtmCqusluKr7mKTma/BsV7xUhwmQszy7VCYW1hFERuGMyvli6n8hTik=@vger.kernel.org X-Gm-Message-State: AOJu0YzjN7tNwu2Gc09o0gwvE6hs+dFjBEH+ajtz0RIhGglRcxev/uUP 3filKyTrVeQF1RyNeXDAbHX4MINX97fkU2qEvZvvgDWVmwHfcFq3U73EZcqSLNVQ2xnPHKVqj5h DMca7Z8V2BUu2lQmvmE1WyRmsfHwHJZwT08iv4W4fdg0lUOvVIcRSoSLdXBQD4IMoLo0= X-Gm-Gg: AeBDieuPjaMSf9cNLUCYRWGX4IPp1zfQsO8en192CX5uWeuIgExWcUACYv1nByYVWYq oYZsPeP5to7jqzvjgNT/GbpbyQne87FrIGVUqmKfTD6Isg0E0dFC/YXMd+GDcIw9nuZOTof7yFm ndDe1tl1KQmyqY41U95SZuHNe1ckjmiHPjLHRuwSnAEZCUBVX6JgFPWzFqybxwwrndElaxwNi/I TndkKF30E9j6asJNLhQhFkpC3gdQHRoUDrfY4grthLvQYiXJDlJQNGDmQBnoPikKdtHOc7ZzzEY 8TrH8IfvWoxSly/nbrfuV8Csx9TuwhNhtmI31+xOvDzzVrue8cP/3yMeATzSEvsC8gNz10g0ybu r0Ykvu2w6vmpaHNjjwZTSQiM/CnRWHmM/mrqNOC7Z6X71pt8pKi0hb2E4SYQzsShPv4erlny7bm K3uRfyHIcwrQ== X-Received: by 2002:a05:7300:cd95:b0:2ea:cd38:f921 with SMTP id 5a478bee46e88-2efba28ad96mr83653eec.26.1777655203222; Fri, 01 May 2026 10:06:43 -0700 (PDT) X-Received: by 2002:a05:7300:cd95:b0:2ea:cd38:f921 with SMTP id 5a478bee46e88-2efba28ad96mr83638eec.26.1777655202650; Fri, 01 May 2026 10:06:42 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:42 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/9] usb: misc: qcom_eud: add host mode coordination Date: Fri, 1 May 2026 10:06:32 -0700 Message-Id: <20260501170635.2641748-7-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX4bSnmaDJ8he6 VkU6MqLb+pYYa41dVd8tR+WsSAz2H0t1GRYWaY2jnGggEEUNd0sS9AsXn6IYtGpGI8iCjRmRlhY 99YsDhsJ+ubjmrr9retdiW1grmrhA6Wfp3T8KIrgOWvGwEclybC6dN5Nzu5ySW+TJ+4lzU5K6Ue ppjcUuK8/ga24q2CPRD9Qt+v3K3F6BBv6gcHwDUCaAwekDVxCvY3HAmFURBleXbkKh4PsdxuSSN PZd2PAgLZieUlqNvrCZSX+w3b6Xp0Tfq9Bo0xoQjYEYSs37N51shfQBH6jBLVLqeCVOBcRyUnOV 5S3S6fk7TWDbjAFGnk7o48Y0nZhuR0LNOwanitu9rGpYr5Brj/WoCrtEYcoyiiV2xycqmslEzH7 dHfAD0c/I3dBnPBEL86wLdHfrcTwCEC2OcBlEnDfvMxGOWQrcde1Q1JZoSvq2It0Uiqi2tjeetg 62xkWR0iz1PvG6ZtESQ== X-Authority-Analysis: v=2.4 cv=DP+/JSNb c=1 sm=1 tr=0 ts=69f4dda4 cx=c_pps a=PfFC4Oe2JQzmKTvty2cRDw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=opDcP0t3FEC8bhoQoCgA:9 a=6Ab_bkdmUrQuMsNx7PHu:22 X-Proofpoint-ORIG-GUID: Nc7h4LNJWZV71MiyyU8qsGYZD-Y6iABL X-Proofpoint-GUID: Nc7h4LNJWZV71MiyyU8qsGYZD-Y6iABL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" EUD functions by presenting itself as a USB device to the host PC for debugging, making it incompatible with USB host mode configurations. Enabling EUD while in host mode can also cause the USB controller to misbehave, as the EUD hub supports only a single upstream-facing port. Handle the following scenarios to prevent these conflicts: 1. Prevent the user from enabling EUD via sysfs when the USB port is in host mode. 2. Automatically disable EUD when the USB port switches to host mode, and re-enable it when exiting host mode. This ensures consistent state management without creating conflicts between the EUD debug hub and the USB controller. Signed-off-by: Elson Serrao --- drivers/usb/misc/qcom_eud.c | 65 ++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c index f656ffc8818a..4734b6307a85 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -55,12 +55,15 @@ 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; bool enabled; bool usb_attached; bool phy_enabled; + bool eud_disabled_for_host; u8 port_idx; }; =20 @@ -156,17 +159,43 @@ 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 + /* + * Handle double-disable scenario: User is disabling EUD that was already + * disabled due to host mode. Since the hardware is already disabled, we + * only need to clear the host-disabled flag to prevent unwanted re-enabl= ing + * when exiting host mode. This respects the user's explicit disable requ= est. + */ + if (!enable && chip->eud_disabled_for_host) { + chip->eud_disabled_for_host =3D false; + chip->enabled =3D false; + return count; + } + if (enable) { + /* + * EUD functions by presenting itself as a USB device to the host PC for + * debugging, making it incompatible with USB host mode configuration. + * Prevent enabling EUD in this configuration to avoid hardware conflict= s. + */ + path =3D chip->paths[chip->port_idx]; + if (path->curr_role =3D=3D USB_ROLE_HOST) { + dev_err(chip->dev, "cannot enable EUD: USB port is in host mode\n"); + return -EBUSY; + } + ret =3D enable_eud(chip); if (ret) { dev_err(chip->dev, "failed to enable eud\n"); @@ -308,9 +337,41 @@ 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); + struct eud_chip *chip =3D path->chip; int ret; =20 - /* Forward the role request to the USB controller */ + guard(mutex)(&chip->state_lock); + + /* + * EUD must be disabled when USB operates in host mode. EUD functions by + * presenting itself as a USB device to the host PC for debugging, making + * it incompatible with host mode configuration. + * + * chip->enabled preserves user's sysfs configuration and is not modified + * during host mode transitions to maintain user intent. + */ + + /* Only act if EUD is enabled and this is the active path */ + if (chip->enabled && path->num =3D=3D chip->port_idx) { + if (role =3D=3D USB_ROLE_HOST && !chip->eud_disabled_for_host) { + ret =3D disable_eud(chip); + if (ret) { + dev_err(chip->dev, "failed to disable EUD for host mode: %d\n", + ret); + return ret; + } + chip->eud_disabled_for_host =3D true; + } else if (role !=3D USB_ROLE_HOST && chip->eud_disabled_for_host) { + ret =3D enable_eud(chip); + if (ret) { + dev_err(chip->dev, "failed to re-enable EUD after host mode: %d\n", + ret); + return ret; + } + chip->eud_disabled_for_host =3D false; + } + } + 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", @@ -424,6 +485,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 Wed Jun 10 16:25:35 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 789EC42317A for ; Fri, 1 May 2026 17:06:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655208; cv=none; b=ZHQlkHuiy7ibhF01ZPcfY19HjG3G176ZfrgGSZhfs2j9Zomhfk+EL+RNIrjXpiR3MW1A8rilL7emhXCrnijHMwig3WOJ+dtuk1To9pQZvT/NNFKVrkTC4VAvxhiiRxNJLqg1qYV5sLoAi8id9HiZpJzXgO+3ewv6XJFwt24anAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655208; c=relaxed/simple; bh=qsMJyaTk8HgUMp6PIBAKLauYZ+N5Wx0Hlr64l+0gPH0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LvV0eJ/P67dmVuOJVXka6HzkhqEJ4ernqq/gFG9jCiFubyIgKCl0aQWSeHRZ6O5sGyg5IBKlKEUFAnrCmI0eCT71PxaiS7tSS/WSY9/fDCWhUlUMZ/4/qp5AY0l63d6BFjw2C1AFCyP1VeSKE3DwEOMYytr+cluNJykZPoj5QBU= 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=loU/v0O0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B72mQwcw; 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="loU/v0O0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B72mQwcw" 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 641GLVhO3938835 for ; Fri, 1 May 2026 17:06:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=WE94TFXH4kX yNBV49l2OPveZ6QXNRWCGY2DVlIlO5xg=; b=loU/v0O02Jz2CQtsLmIvsqPRIAm T08qeNlO2HCXUW3iTN+T/lmvauIKyhxerZV0GM3rjRSURMsE298VzLMW1ZBi/Wmg 6aJM4KwT598cyaHKgE9K+kUvbrDz4lDRiZzSxoSpXVLYHjnwxqjcHDcKwf9DK5vJ WFUUgqLkGzWL7BsZ/yFWnbz2Vs9DUR2BTHC2gE6HczSzd3z4EWQebZqdnMcm0GcB hd2o6eDnipsywQ1pDXUCqbNhD+dBj6z0sLVFHQLihZpyVIGSZ5qdryznD7ksSoda j5l+h2GGw6dwMRDOqxt9RqgJbquQmZSwGt/QqZaiP8ThJmB1dEcMZAgbp2g== Received: from mail-dy1-f198.google.com (mail-dy1-f198.google.com [74.125.82.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvtrn12nj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:45 +0000 (GMT) Received: by mail-dy1-f198.google.com with SMTP id 5a478bee46e88-2bdf75bc88fso3665876eec.0 for ; Fri, 01 May 2026 10:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655204; x=1778260004; 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; bh=WE94TFXH4kXyNBV49l2OPveZ6QXNRWCGY2DVlIlO5xg=; b=B72mQwcw1rGqD3kVpnDBjVrV7gigwwchtZPJfh/unDblLHcyassvAkEh3DmnKAlxVk 48sD8ua/qtIrxNkj3XdUmA1IVK2/XXShL4cVh5rZDEkXQ9gLyxZHXPgrxQU/uVNIFVxk gnAbuJyABriTp8PiogrCXKEE1LeCpzSgzLEmsq04kTE5SNVnU4/wJ+dwtPT2eCcRuPVI M5UQOnWIjVWgrFc/5WfZzvCL9x9aDBZesHSGI+zI7/PHamHyxgbJegyChcjRTfRC/4Tt ezgFVRLR8fcb/BuQZNXl5s//MS86h+p4QTZbiKHFwbi5ptzCRg8TDt0j7Qlk5oLM2oWJ 1iTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655205; x=1778260005; 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; bh=WE94TFXH4kXyNBV49l2OPveZ6QXNRWCGY2DVlIlO5xg=; b=i2xbMIDfkqQ5842a70WUVQJWd3vTMaX10x1xERpwGH+sjQ4mC5WrgcLyUGP1zwCVkl dpiZzJEl/TevZXlie2UCEQ0bKhB3eYB63iA5a3pzL4/p6gZnj8lPTCDgE2jJ/rCQdogH BMip5X9rCiIvlbPwmXFMpzzI7csIFlCO5wCE3MtEXybKTiCbnyccTACHnKQkZxqF8CSw eWlqBhMOwEnGUnDCnrwxJbYCDcoNhKlALJRMCLrnZLs4TGGPK5Lvc+jsRht1W9awaysJ QanceL8CIPxij7FaDd+FucMDQQUP+306ieZQTnl91t9roM6IJxJf0LLrPY1DlRyLsfnP dwjQ== X-Forwarded-Encrypted: i=1; AFNElJ+inVUW6trBdQAOYh+hSsv53FJ8gMS8lLe/vIDLr1boIMdzRM4a8FwpWbBz06AhgTunURPgIuUBag1wNH0=@vger.kernel.org X-Gm-Message-State: AOJu0YxrO9btecsiRZjwZnFyjnfuY7DBYHVgIPmr5X/c3KZPh7NX4vbT 8Wjqs5EN1C8X0xWcI6QRX2uX5ue8sbqQ7468JKYadnn5Xx1aEu3ru5T4fxR9bTWjIkBoEobDBLn RK/C6q4oITK12hM7RR69gtEhZrD1AEKB4c29neDsGOv+g6QqZZVIqM3AyhM6qrxabHvo= X-Gm-Gg: AeBDievx1DftfCaGl317YkKV++M7wZyd2nCed7UEiH4YVkmT2AP4rSOv573FSDikL0Q tLXH1kRe3aPay/hiCk2jx2Icbm9IhxfamLW1VY8eh92EGGAIH/QcdbwUL68qQi2n+Ku20+dfV7F M7HCaXqDwg/VciD89DaafkHZz9Lp+t/diGJNxbk5drtl1m67vwO6ziyIcNoncO4ctgsAafWeUT+ HEVPQMGSbRTIAlkmqu8Pzba9j6Ud+kKeaEiU6I/wkg3RhGHLA9NjgHUyuTsSFTZYxdfebm1X4m1 f2nGOnlmsj+dwdRcRgCEUb9pdat1VF79UpTumS7T/ynrkw9tvt5NbhSuRDNjdEu1qZ3nohKcpcD jlrLEuLhw1UpokuTbMn4np+FEgvvGM41JfbmmGMe8C/krQ6lSf8RSRWeHGDX0jyaWekxZxJpL0K MkO1bZGdZxIA== X-Received: by 2002:a05:7301:5795:b0:2ea:d965:a4b9 with SMTP id 5a478bee46e88-2efb7cd0f64mr98230eec.7.1777655204362; Fri, 01 May 2026 10:06:44 -0700 (PDT) X-Received: by 2002:a05:7301:5795:b0:2ea:d965:a4b9 with SMTP id 5a478bee46e88-2efb7cd0f64mr98206eec.7.1777655203669; Fri, 01 May 2026 10:06:43 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:43 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury 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 v4 7/9] usb: misc: qcom_eud: fix virtual attach/detach event handling Date: Fri, 1 May 2026 10:06:33 -0700 Message-Id: <20260501170635.2641748-8-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: Yc6hueGlvfHt3uldweNmuyDKmaBMMiqu X-Proofpoint-GUID: Yc6hueGlvfHt3uldweNmuyDKmaBMMiqu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX3k3Q55uI8LeQ H8V1FOUJesuhV6Gg8pv7fWXc9t2BJ25MMXooZIxp+oHEIuKYh9WQCVst6bbxs5+GhtBZXffzf8S q5Hg64KbLhA4Iq2Lkw9GmRHOaXB+QfgY4+JPZ1fIwMXmJlhnrLsoLP9IJz52Ae/yRZWO4sod9zh G0FuyTi/hI8iftRwh1TJe2McRt68rs8KEzRfcWNJ6DNUtFmC5azLg7GZZwvcS1putci7octpZ4R yac0+DMORRPdhAN2LfXFQIzPboGx4WERoZZ+OlvF0vhwxSHIcrxd65WNM0S35BLwf6Sq5YcyPNn EYvjNlQizDhdjtrSrYUJfNmSykM+d275+RE/czKtVrOgX3lhosF7qONTMVGhyw65yO9vpNr7wY5 j0UpWBKHL/BFUyqUcKGhFrNnJ6ntjFYM6LIuJlniYT8FzelnOsEc3jVdTcyoSVSSMc4PpLsR5xE 6sBdxCNl6picdlr4hiw== X-Authority-Analysis: v=2.4 cv=KrZ9H2WN c=1 sm=1 tr=0 ts=69f4dda5 cx=c_pps a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=oDIJ3hVRoRHbvujwG_AA:9 a=bBxd6f-gb0O0v-kibOvt:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 Content-Type: text/plain; charset="utf-8" EUD provides virtual USB attach/detach events to simulate cable plug/unplug while maintaining the physical debug connection. However, the current implementation incorrectly sets the USB role to HOST on virtual detach, which doesn't represent the disconnected state. Fix the virtual detach handling by setting the USB role to NONE instead of HOST, correctly representing the disconnected state. Signed-off-by: Elson Serrao Reviewed-by: Konrad Dybcio --- 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 4734b6307a85..187cbffbab13 100644 --- a/drivers/usb/misc/qcom_eud.c +++ b/drivers/usb/misc/qcom_eud.c @@ -320,10 +320,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 Wed Jun 10 16:25:35 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 86EC73FAE1D for ; Fri, 1 May 2026 17:06:47 +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=1777655209; cv=none; b=Yw4SSLMfyNouvFHanKCcxba/ycb2IhFALcLgptlS/NxQmKjGzRxcMGFfVGhaxSIlDuWPvssUZTLq7knG3DP7YkFAg8w2RK99xXOsV+iB6g1hHRLIseYreoJBaXHJuKpfdNH/OZcoiK6BRUN+0HiaYfNX04Rnws+iUayGqCyic8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655209; c=relaxed/simple; bh=Y1WK4FOxLS2Z8JGTPQKxCLLaX1hY2Z4D8mCYOE3lAX4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C936cE4MGFcihhRCAva8/7I1cCkW37j4Fnw3pAdMv4jajtcvvx2kw9mFrso9V04CW6TDljgufuXufO86bWCFBcKkEX1ggX1QiyrAZyLiODcvRQZ6ZGzX/P+Vhn+2NU1TUv8kcr3bgxl5YqFCOFVBHkJqwe655KQ2jn1cC2rI2+U= 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=JJ68d7ec; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JHxT3As9; 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="JJ68d7ec"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JHxT3As9" 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 641GLZke4047812 for ; Fri, 1 May 2026 17:06:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=X8L41HTjzwq EAHHTicu9WDnxJN0Uofe905/Soc4E8Ak=; b=JJ68d7ecr92fhgl/HWK/jDP+OHC 6Db4pkn+9aHdJUYi84pIFOP2QZMtTpoxPPAhjmA8Ge36aVkWLPDDDQQAxUSjt9O4 KCqtRStv173QG0nQ58qswXJ7lkkuooAKI26g5XZIdGL7T6LAMZ1PfnHnrm3TmScK x1abk81zRyPZ18SiFn/mg/w6MYm7r5OnU4KQuHYafXaqiGlcH1JHsSkTVNK67+xg TVYYcEXU3VqwZMf2pEAuv8aocNs8LXaTPCpfBnR4G6aBTfsTRiMcWrmUoum8yhqP O80aYu9/AE89+D6Ipr9F5eLvyqltCAofhbiXkxuaze8amuXBKacpobUcP8A== Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dv7wuvxh6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:46 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-12c726f4019so3019668c88.1 for ; Fri, 01 May 2026 10:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655205; x=1778260005; 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; bh=X8L41HTjzwqEAHHTicu9WDnxJN0Uofe905/Soc4E8Ak=; b=JHxT3As94VHYIqFCzxd889OfCbA47FVKKm0mA1IHm5fj3/WqqpJXjJhep6/hAklsBx Rlog9zcQGIHaEHi75XfAyGzKQJ6iPxynhXCBsjigpA8Svm+dxU1tuzjpa7mh3hkHU3Qe FsKBF1l8wm/8ytTQt/+uEBTmORJcZ1a7INQmaUrgLuwL7HYLfWYZSqMl5x++opoEXUt5 oAKpQrV/Xu3DkLrGoHfZoXh/jBg1cHgbJmfAlu6mkfxehVp1ale+yLPD2wxyQYoqBXBe 149kpRrUcSnbJa2fJkyG3F/c2uyTeltFVfWI1h0eW+i+J9D2U6t4RUyM/5gVMcAHx2a6 iTMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655205; x=1778260005; 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; bh=X8L41HTjzwqEAHHTicu9WDnxJN0Uofe905/Soc4E8Ak=; b=pmb6zsScO2qswtE0bLCGjP48hbcU+vuFRqHh05lxQyZJygFO+6aU+3vbalTLvoBygl yK8qy2OIie/JOT6JkbISvso4ffrSJm97H4p3YnlID9wVP2rNoira1KgGgjEYKYiRmiBJ xkVRTfqCrMeggp9jwgFKGwsoixVapNJ4PWvKsVXwlki2CIVeAz4UbwZE59eetb4c1+e2 jsgChfsDWvYLRNIcVzmD3Rc0j4Zi1ElNlhYNFqCznLldRLf3Vz3siCgr/vUltGRTWa2r fjoqA4th/L4cjzF/My8Zb+2XWkvHxwvFL+5K7OTNWP+Nm7iN3NxB83Z9vpxQYGWE0QfE /6Jw== X-Forwarded-Encrypted: i=1; AFNElJ+axAIuFtQQwcVnx1JAoiKEDx1aKV9/FjIYG5ZKkNRHe3gNPnSVUIkh7e0XaYBXIm+h2gZm/64SeU+LGyI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8jih9I48KEATlrNi+/3zMsIL6PM16dpLW3T2e9uGviTmRgUVR YBJS+ROXs9o3nzJjRYUAr6D7zu/JEPAdl4i5O6/GfblHiFJaB24sxnDWCyzHY3VWVCOuDPV0wfA JOxmF0nyS4AOCV/0IuLTN0Djfw/6JzDNGxDz8fi96ehw3ylbnrf3vNYvvdtXvswWV7XI= X-Gm-Gg: AeBDiet/G1lhEYJ6o+5hU9CF+5puO3tA83KCFcd1oHLyLKqYFljVOTzgdv9eiVR71WH iAcIe1emewpBpzgmEM1AqgeyVlZ/Uc6aSInFV35zWmueThXbLyvssLxPkHlGeTtfF753T7/oYud XJtO7PPRdzwAuwt/xSQ9N+6vCtXFV7nlHeVJcHYSXC6rm65RUUvzg2oODnYLkfvh1miv7ux2xuR EZYrXCk+NvjnMI0I2n6hbRS7n2+yibQcvZuy92as73KnN6pc1bshOsXQWB5JHE0VLrM8wCcB06c qA52ZXu3XfeIGviGN6YQwtqJf9wP721cOB+fXCqiD5nK/lHATPUfF8gZU2oQLSRWDgPTQFp/3pZ 2pA5hBdj9E1x8+LzDsxPm/OaRQqMxy984Uo/oqalnE+LQeOjr84xn8fsRhEBE8MK4g3DxTO/fB1 CSaoGfXKxH6Q== X-Received: by 2002:a05:7022:6187:b0:12d:b2e9:b20f with SMTP id a92af1059eb24-12dfd821474mr50087c88.21.1777655205169; Fri, 01 May 2026 10:06:45 -0700 (PDT) X-Received: by 2002:a05:7022:6187:b0:12d:b2e9:b20f with SMTP id a92af1059eb24-12dfd821474mr50073c88.21.1777655204606; Fri, 01 May 2026 10:06:44 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:44 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 8/9] arm64: dts: qcom: kodiak: Describe EUD UTMI path using child node Date: Fri, 1 May 2026 10:06:34 -0700 Message-Id: <20260501170635.2641748-9-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfXzFg6YZuE0N23 26I3gE4Yga/Nbz8bDxuY6NixRC8iPlrXU1p1sTszvHM/zWVXR6a3Uafx3PwCAkXZ2Pa2upt+Utd 7PWiZMyN8QwS+e6ooRcF4VLt803C4aC9uyB1xrL23SeuR0YnHgNZQZso6FIrg12428a6z48hBBZ lVYXd/r0KhEe3gTs5mk4nshqBZW49GI2LiJQrL0tX6vPj9aaTp6gBCH5rjNIfvd5ioBaLr5inm6 BXOFFcn350dDpf9HMqd1qPtVOkLcMxwPiIcz5ZKs8WRPJk2kptT6ywf8mPk8rXBYAM75em4WQ7k kgdU0cHGWGnCjd+2dUlrRLxvrh4joQN66GdEZ8rcoeyRP5jEd1oDhx3U+0JJ03R5dNPBbhDtO/u vD/CXY277WMeiruYFKKH8YrY/Yxac7hL+bSpKM3E5YmURo4Ivmgx2+7J+KIxhHPq3souPUjdfqe Q+NHTA3ue8oFv/C4G1Q== X-Proofpoint-ORIG-GUID: S8SN1iiXReJwkagjS5sce4zb3GGoZIjI X-Proofpoint-GUID: S8SN1iiXReJwkagjS5sce4zb3GGoZIjI X-Authority-Analysis: v=2.4 cv=GMk41ONK c=1 sm=1 tr=0 ts=69f4dda6 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=-Y8wEhFFMILef-Bpc8oA:9 a=Kq8ClHjjuc5pcCNDwlU0:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 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 988ca5f7c8a0..cad1d78f9e62 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -4400,12 +4400,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 { @@ -4729,16 +4723,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 { + }; }; }; }; @@ -4965,6 +4971,7 @@ port@0 { reg =3D <0>; =20 usb_1_dwc3_hs: endpoint { + remote-endpoint =3D <&eud_usb>; }; }; =20 --=20 2.34.1 From nobody Wed Jun 10 16:25:35 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 8F2B742668A for ; Fri, 1 May 2026 17:06:48 +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=1777655210; cv=none; b=dpzNk7AJ+pndsgl0LMZGzxCQG5HC0UnmvaKoRb7VSU10iVGySlSV+A9E5I4ngrja+rFIkZiOjKFOxAZGC4SGFsRkeFMD8d8eDLQfobHnuN40r11sea2T+AsSBts+fuolXUtjLv4IWr2ewvSHJsUvg89xqd/vx4n/EKDQOUjwJKQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777655210; c=relaxed/simple; bh=6JM6P67fIL3JFqTkarnSr/o3rEQMX0AqvoNb7WENFzs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gd62TwQtynwpmdkMyreW/gY/GTmB3vv6K1s1Je4jRvlxulvKCbcANOgWNHk9K/NPwqbQlVfFjznjQoMNm0q9+6qhpkj+vc+wUvTH7OdKBl6AHWa5NcO1zMK2A32dXSD6Bgm06/lar3FCb4MYY1tHQZedeaKMs/3BDWv/0KNtaFs= 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=gjKSu3Zs; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jxq7EVA8; 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="gjKSu3Zs"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jxq7EVA8" 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 641GLVFC4047705 for ; Fri, 1 May 2026 17:06:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=15rwOOVjpjC 8zHr4qmTaFvFtfoo5O5r3leDyOlmAhrc=; b=gjKSu3ZsOtVq2NV2cNIQxJQtv9p 6casmzGBVBIsmy+ch+AjdfliJ+cXWkHlewx1ybOWlweR13QgOFLyigZjIW28OgOi Fn+2Zzo6CUbCFbneF9PS7+RVKXQZOeHnD+0/TpH30Yp9T5W6tlxUdP2fnSyuDe6f ADZ3//vXABU4siW8eMzDEbcM6/mXhLl3TI/21GDx0+PM61BcyWueIr8eAb0npyw1 6Zgv9HSQfGqbbAwMfpqMLCXCWv4b3bTakJ5TT7UIHMknQOZWtm3XTNgUFg0GmHij 2TSY3L7EdhId9Y/Vr/t14sjoyjaeLzHSRJorxL4dK5O4PvZJ9uoXk8RPmQg== Received: from mail-dy1-f199.google.com (mail-dy1-f199.google.com [74.125.82.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dv7wuvxhb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 01 May 2026 17:06:47 +0000 (GMT) Received: by mail-dy1-f199.google.com with SMTP id 5a478bee46e88-2cc75e79b97so2650589eec.1 for ; Fri, 01 May 2026 10:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777655206; x=1778260006; 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; bh=15rwOOVjpjC8zHr4qmTaFvFtfoo5O5r3leDyOlmAhrc=; b=Jxq7EVA81vR9z6cH0IkodKNEcP7S3YEVXF1xuA0P3ETMmX9Lyb3H2NOhoBtsWACrLU 2IFX6yq59H66DaFnjr/szE6V++hGH1MxV21SMgs9oNwgX/sjChSsUl2X41qpB5o5cSSd FL63BfNGF5SpUNYJqGYxi66pEsHwJH1peBQs4Rv+XwdIMIHRrY66W3wl+a5ukiW1z9Zq mUsPXy8qEYtG2KFgpdHX2V7SZ4TXTKLsvH3MHZ0hV5gyjTz45jTkWWNEsP20D04gDOYz vj+a7dCnLoYyFZSMYlgDs4uo2sLCQ3mEM5ibWuO1Y0K0zaaYDXUhjAVC2+lK4cHkcLYc a+TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777655206; x=1778260006; 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; bh=15rwOOVjpjC8zHr4qmTaFvFtfoo5O5r3leDyOlmAhrc=; b=hOg4E/uHnlbEIkHYEOaC6m07k5tMUuzKutdtzVU1PoCd9do+f0SU4urVWemdMf9mXV nets5RW/BgpOJKYpfNOq36DUnyN33XgLy8WujKKxkmMm/BWfeQcZWTIcdaZitPyTw63K pMVzyBA1n53buXzpmLJIiHa022qACyfvNxYi+EU5RREjQUXT0CshUbDwUGpt113L5LJY oLyGj1SKUhPz6QAPEITZdIvTtNv5X/7sPjbGqj0MY2k0dl24fjXkLD30kh9LTkZPuKCi 4f39yW2gBfJa0qhIq+DCZnNiCcD0rhwrAHWHmVi6qCZqrEL5ZFSx6dVT1cwPN3OoTj3J 9BwQ== X-Forwarded-Encrypted: i=1; AFNElJ8E9TYuL/ZGgmZh6NhqhhAF1KXz7YrFkX+jYrbsWCDB7zxS2tMplCpHT0i/EFR/k7xJK++FAVu8Jlmyti0=@vger.kernel.org X-Gm-Message-State: AOJu0YzNVP/MXVClmqRWrMWA6Eb+YhzvpLfSOtV8dh4ATGKoxIssrOSN MK2L+YmPXel/P7faYbltCYt5J39L8OsL3DR9u194SyQf+qgYlgSG049bSFL/ahQHxDJUBOjh2J8 ZcYvY9mHgJciP1zwi5FZB+fXRJ3QSjV0WOko6bfE4ti4mKEkGhsbuQLpppec4nU2SNKU= X-Gm-Gg: AeBDietlfJ3fbcfLjcIsidvK6SqDBG4CH/Xvy9sKXKWVeiTi44GSSIABVYhaXZEvP7p NsoOxwsrNC3v6YsxC4zwLRq1eXv7Yn5PHXluCrx4szHnyeU+V6iPTbiPE4w4KeaDx/CV9ZRo7iz 7bxJDQBKSFMCsOk80OWdwe0GVf7q0/Lmr5huBIykjZ4qqJngK5bjqVRLx10scJ4Y6TYVeFQOVZ3 jxpFPW5jBByuk1aTLVwugDbpOe+C/TpvUvdkqd55YYN3TSqgpmeQjGmaOUbLpYy3uNQouWCvuKn R7xCATk/36cdVn2n7eyNKeoDWw/4LkmTqwj1tkDf1oSswsdOrSO3pdzlsKgDMReeqPU56OpPkcs Ytj7cQxC1g/F5Yf03m5HGY7hxBXRz31YYJZ6vcJGxVIm58CavFOYMq+8Y6p55Tmo6ctK/8EMr3Q HpdJ75O4/qEA== X-Received: by 2002:a05:7300:5b9e:b0:2e5:5bf4:8869 with SMTP id 5a478bee46e88-2efb9a97fbdmr113832eec.21.1777655206214; Fri, 01 May 2026 10:06:46 -0700 (PDT) X-Received: by 2002:a05:7300:5b9e:b0:2e5:5bf4:8869 with SMTP id 5a478bee46e88-2efb9a97fbdmr113808eec.21.1777655205595; Fri, 01 May 2026 10:06:45 -0700 (PDT) Received: from hu-eserrao-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm6655978eec.0.2026.05.01.10.06.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 10:06:45 -0700 (PDT) From: Elson Serrao To: Bjorn Andersson , Dmitry Baryshkov , Greg Kroah-Hartman , Konrad Dybcio , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Souradeep Chowdhury Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 9/9] arm64: dts: qcom: Map USB connector to EUD on Kodiak boards Date: Fri, 1 May 2026 10:06:35 -0700 Message-Id: <20260501170635.2641748-10-elson.serrao@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> References: <20260501170635.2641748-1-elson.serrao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAxMDE2OCBTYWx0ZWRfX0veZEFivZN5S 4w/6l4OWPJzj9rB3GtIMsNFVHakEe4IFQ70nQXI5S6km9ohSwvzwJpdUmvmi/uZV2+z1s7ULdr9 mc6XJ4p0UYuLMjRuwvk7CZWSQD8gGiiwiB252/8RuHYHed3VCmJ3Wr0HQOD6W+5XuJO2bvKXAUb ghA4S2OZJDwSg+Ov/DdyI14gb2sivXtHyQ0lx45u9z8c+ECnP0Mhghcff35C75uvObCWB9E/Tom sKAoEVtd3woDaxLiZxs+RWmRSyw3A9Ul3geT4Hwmci5Caza+B5jXcwRzf8Yg26sj+6UPXOEwVl5 htFbfeBH34GEAT5u7H8oy6Z9JfzHSTubkjW2f/4/3mFERUXny164DQoLsMc81whMcQmK91uHei8 a0d6bhf/raiPhIxCBS3Rvh/o9y1cy2g2nRbPo5fFiJNxxToZwunOWvK/a4YcEiamV1OKkhpUpJL enVvmq8hUtARklI4RIQ== X-Proofpoint-ORIG-GUID: 3nobJhuyceCS_XEeJRLaN4Hz0AhWF2FN X-Proofpoint-GUID: 3nobJhuyceCS_XEeJRLaN4Hz0AhWF2FN X-Authority-Analysis: v=2.4 cv=GMk41ONK c=1 sm=1 tr=0 ts=69f4dda7 cx=c_pps a=cFYjgdjTJScbgFmBucgdfQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=ZGDwSQe-amPQ6EBapEMA:9 a=scEy_gLbYbu1JhEsrz4S:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-01_04,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605010168 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-rubikpi3.dts | 10 +++++----- arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts | 10 +++++----- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts b/arch/arm6= 4/boot/dts/qcom/qcm6490-fairphone-fp5.dts index 04cb9230d29f..c213e06a4428 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts @@ -98,7 +98,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1478,10 +1478,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c>; vdda18-supply =3D <&vreg_l1c>; @@ -1521,3 +1517,7 @@ &wifi { qcom,calibration-variant =3D "Fairphone_5"; status =3D "okay"; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; diff --git a/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts b/arch/a= rm64/boot/dts/qcom/qcm6490-particle-tachyon.dts index bf18c4852081..e9c0463daa53 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-particle-tachyon.dts @@ -74,7 +74,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -826,10 +826,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c_0p88>; vdda33-supply =3D <&vreg_l2b_3p072>; @@ -862,3 +858,7 @@ &usb_2_hsphy { &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; diff --git a/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts b/arch/arm64/= boot/dts/qcom/qcm6490-shift-otter.dts index 797f37596bf1..650c4fbc1606 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts @@ -84,7 +84,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -952,10 +952,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c>; vdda18-supply =3D <&vreg_l1c>; @@ -986,6 +982,10 @@ &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; =20 +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + &venus { firmware-name =3D "qcom/qcm6490/SHIFT/otter/venus.mbn"; =20 diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot= /dts/qcom/qcs6490-rb3gen2.dts index e393ccf1884a..a0db2a2745d2 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -194,7 +194,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 @@ -1371,14 +1371,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-rubikpi3.dts b/ar= ch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts index f47efca42d48..387c38aa87d2 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts @@ -93,7 +93,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1090,10 +1090,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vreg_l10c_0p88>; vdda33-supply =3D <&vreg_l2b_3p072>; @@ -1127,6 +1123,10 @@ &usb_dp_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss_in>; }; =20 +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + &ufs_mem_hc { reset-gpios =3D <&tlmm 175 GPIO_ACTIVE_LOW>; vcc-supply =3D <&vreg_l7b_2p952>; diff --git a/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts b/arch/ar= m64/boot/dts/qcom/sm7325-nothing-spacewar.dts index cb59c122f6f6..a2e160f3f46e 100644 --- a/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts +++ b/arch/arm64/boot/dts/qcom/sm7325-nothing-spacewar.dts @@ -99,7 +99,7 @@ port@0 { reg =3D <0>; =20 pmic_glink_hs_in: endpoint { - remote-endpoint =3D <&usb_1_dwc3_hs>; + remote-endpoint =3D <&eud_con>; }; }; =20 @@ -1440,10 +1440,6 @@ &usb_1 { status =3D "okay"; }; =20 -&usb_1_dwc3_hs { - remote-endpoint =3D <&pmic_glink_hs_in>; -}; - &usb_1_hsphy { vdda-pll-supply =3D <&vdd_a_usbhs_core>; vdda18-supply =3D <&vdd_a_usbhs_1p8>; @@ -1459,3 +1455,7 @@ &venus { &wifi { status =3D "okay"; }; + +&eud_con { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; --=20 2.34.1