From nobody Sun Jun 14 06:09:07 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D134230C366 for ; Sat, 2 May 2026 09:56:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777715786; cv=none; b=Yo3nfy/UEnxq4gf4ZScwDa/Gmg7D7kzzGH7YWSkBlR9xJf3iI1rDcNmHWMj0jLHHbkZBGl2FUqjw9r2iqBWbDgdqMA6Wyf/1ExKH7V4R9bMXNGjmLsJTqKIXlmdagmFmQXDD5j63CmiLBSSdYm2VUhrPq5VlYAFJ2fFfoyOpLIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777715786; c=relaxed/simple; bh=Cx+joeBc+rdcVoqFpJms6AZ1GOMKvcbhmc/Ksf/0Zug=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=XEmWW34M7dHzI3vLefd5+WBJ5vEO/OOJbXarEFqvlQQxTpStLEdvXy3nQdMx8D6G9/HxgY5HN0ulFttQPghmSmGAUdazVb9iyB4ASfW7hmeD1Jjq8BYX9bKxS4x83iIjH78xo7AMU3c8qbHlv5dbJbpT2HKeBAY71m1Uj52AmjY= 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=buot97HA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SeGRG9cz; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="buot97HA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SeGRG9cz" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6423YB8h2746048 for ; Sat, 2 May 2026 09:56:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=17E1Cq1J3JMEZ4+HCKxcenEnYbEZ7i1+KzW P4uYC3j4=; b=buot97HAKC3hozGmR+Zs5eFM+zBC39ZbBPB+Aeq6GxNRIAZ/lsx GCj1Z2bE9/Z1AkE5W/aswlRKXEXNe31tGeRNlX9IxCa9l+ztn7km85zGIcoE0rWm AXnO/tR8Z4Z1UeQPrq4NNk5TFvbm2pkqruNeOkJLwktqYPonXPhpUgHB+cFnD7+V /3oFRXxIaHfTlQ2fiTezyHt/AQETRKtZ9zWZ/DBKfdKsQEjR+uFGRKs3nB3CSsap Br5fYloMip4PtSNZbwBbQpZxiUaQ65KbexN6qbs3IWhtkulHfGeNZDh+qJX3G29T /Wv7aY3IG1Jsd3cim5Z4oawon+Zh5+/StIg== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dw87s8qyc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 02 May 2026 09:56:24 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-35daf3d3030so3245734a91.1 for ; Sat, 02 May 2026 02:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777715783; x=1778320583; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=17E1Cq1J3JMEZ4+HCKxcenEnYbEZ7i1+KzWP4uYC3j4=; b=SeGRG9czCa4Fm+yVrI1NgP0OP45kGpyjbJWkc6KyHCEr71YvtBYigNO0VJ0Qh+TcG7 dl3QcFj/ctxQpmBRhah/7WHugrhaiuSPQpbdCRpU33x40ub4wV/mW6ybc60FepvOKENw cif5+x0gLXECW5HAphlgwBw6uzsf9qkZ+OvlH1EiYkXFyK9hIoP2638kbKxRfgyb8iR7 wxrbocjbpIenoKEHDqHO+ae/KokqkAcS8c/6uqRL/YV1AInIA2meU0imvYofCveS0tTL mH7ZgWcZBHyKTtMyiMLkmDxU0pKs2sG37hQKeTids3UqMBXsikFieks5b01d4md5aCS3 muyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777715783; x=1778320583; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=17E1Cq1J3JMEZ4+HCKxcenEnYbEZ7i1+KzWP4uYC3j4=; b=Jl/RYDVolfBd6oAdfUVjkI1zT6/0xNhd2WkD8zNMT+L7lloi6MhxCXAhLAstoAbmY0 LiOTheuANrPPGRq4xrGj/WJog1aR8quVmoA9fcuVCmDUBmbqtrFblOVITH5x1Vwc3jPX Xm4QnbV5n8DNK2iG367GqOPAaqH/ZSUw98ZScCV3uxQwgr8ISEZst3kKdT6VBu07mBbp 1v3W5zd8HPQk5E+hBrq0BQzh3zSOkcjAkUMsfGvsIyjXA0Oq2i6JeWGycN16DvI7EFND YCX5BaIVcoi/y2BXBh2RUKzpg8GWA55NXV2obD9Y739eODtQX7QV4aWRz8wFP35P1t5z 0k+A== X-Forwarded-Encrypted: i=1; AFNElJ9pMICXC2aOzUYKVCqHnO++oeZcartKGlqIOyLyt5txUieZ4TinWPkCz8k2CRtD4yae+ReoNTdXtGNZ2/c=@vger.kernel.org X-Gm-Message-State: AOJu0YxkL8wSvIimDdvlmhMbQWD++6Gh0OaKhLOu7v2TfE/fmbyDn33p yC0I+i08O0/Dsix7CoEBaJHJ9U2+xwmqQEUu8xXqrBuNm26Bk8sDtO2Kfm19/4dJHvjaZ8OyjWH XdMAFboCP23UkMaCYGyUdhstb8buAAazDUveyMLTa2ZffA8y4eOFxhBjQxyNxCcbIklo= X-Gm-Gg: AeBDietAeyHJiLx+a1XLnWphL/N6QpBkZ+ckJd0BoCGk/mZn+prAVzpzGIlbVjw13TK DT61DItONs3y8j3wnz6VDOP/OTp0lRCQjRytXgBKNSQRPNZYy/MLj6iyadSwVOI45UZWNlA3pPQ MZPXVXaVCOv7OYFKIBs+clzSoq4l/fpjKkYTgRwo+PYEclW54Of9vb67LfM5Tp4bzHkzBNqfCzI 80CKEWw7fjJk5S4McLi3sZBxr+KgI5KAHOx9/nUwSZJwwpQO62tGwCtoX1fjRbHHqxVa+xe/1I/ OhuonQ8znRsxm8UGVFLed36I+nfYAOymUc/sdB6xULn0CoRG5s6LlX8NBTzBCYKdv9LbXBT/xAi zhmuH0uC2rQKXLx/hZMyaexLsStmG3vZpBhdCeK6ZkPNpUs2WLfAPv58sscIyWmmzOkLLXKsXlk glvR0sGF7JD+Lu4qT4dO9ww7vJyw== X-Received: by 2002:a05:6300:218d:b0:398:4bf2:4285 with SMTP id adf61e73a8af0-3a7f1a955b8mr2520309637.16.1777715783366; Sat, 02 May 2026 02:56:23 -0700 (PDT) X-Received: by 2002:a05:6300:218d:b0:398:4bf2:4285 with SMTP id adf61e73a8af0-3a7f1a955b8mr2520287637.16.1777715782870; Sat, 02 May 2026 02:56:22 -0700 (PDT) Received: from hu-kriskura-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c801bccee15sm170506a12.9.2026.05.02.02.56.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 May 2026 02:56:22 -0700 (PDT) From: Krishna Kurapati To: Thinh Nguyen , Greg Kroah-Hartman Cc: linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Krishna Kurapati Subject: [PATCH] usb: dwc3: qcom: Modify interrupt handling for EUSB2 Phy targets Date: Sat, 2 May 2026 15:26:16 +0530 Message-Id: <20260502095616.666938-1-krishna.kurapati@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 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: win_30GywF1mxtYEdcMyMPgLYMyn8T3X X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTAyMDA5OCBTYWx0ZWRfX+Ns0WszMLnaQ mu/ynLIpSPgzK7e7Kx73UMngszXn0sQg7DMLwN7lO2/Uaa1bs8x1WLse5alqJ7HzyJqy0nJ7Olw 9BPXq8JBm9TKlr7mAGTiIyn/SnmQDjKFCQbCznpg+w9kgtm3gEGktWrJx2WHw5bSaOGW5UYED1D DCacMwThBX+3FAVauLENcA7yg/8dRNbjXxxq355D4zi2i3Ek2yZ2xCbJldA3E1EnVQtpoCRpB15 iTXHi434SctC3kMTGT/2GcKR5WPvuokFu7hHz9/2z/ikpDaWOzMj/MQgowzNkdjuKY4a7awetU/ W8jxYqWTY1WW4W6qz03P4lqGJ0oSZFZcA6YuL2Oa3U1HnL+rWVh6EMcgluYBfhoKI0bWFDumRbH 0UAvUTGvuuG4uGRhsF4AwnI/LXy5bDnV8V3rFz4r92tqRuUYdpPtf2i1ALTL0keDPbhjP0BsyQr qjgwwFzyeEtw6VQ7sTw== X-Authority-Analysis: v=2.4 cv=O4IJeh9W c=1 sm=1 tr=0 ts=69f5ca48 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=wyrcdbDR-kVNaWTReRsA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-GUID: win_30GywF1mxtYEdcMyMPgLYMyn8T3X 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-02_02,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 malwarescore=0 spamscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605020098 Content-Type: text/plain; charset="utf-8" Modify interrupt handling for EUSB2 Phy targets. Enable DP Interrupt when an Low speed device is connnected and enable DM interrupt when a High Speed/ Full Speed device is connected. Signed-off-by: Krishna Kurapati --- Tested remote wakeupon Glymur device by button press from a headset connected to both Type-C and Type-A ports. drivers/usb/dwc3/dwc3-qcom.c | 63 ++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c index f43f73ac36ff..5956821eab45 100644 --- a/drivers/usb/dwc3/dwc3-qcom.c +++ b/drivers/usb/dwc3/dwc3-qcom.c @@ -60,6 +60,10 @@ static const u32 pwr_evnt_irq_stat_reg[DWC3_QCOM_MAX_POR= TS] =3D { 0x238, }; =20 +struct dwc3_qcom_platform_data { + bool uses_eusb2_phy; +}; + struct dwc3_qcom_port { int qusb2_phy_irq; int dp_hs_phy_irq; @@ -85,6 +89,7 @@ struct dwc3_qcom { struct icc_path *icc_path_apps; =20 enum usb_role current_role; + bool uses_eusb2_phy; }; =20 #define to_dwc3_qcom(d) container_of((d), struct dwc3_qcom, dwc) @@ -272,15 +277,21 @@ static void dwc3_qcom_disable_wakeup_irq(int irq) disable_irq_nosync(irq); } =20 -static void dwc3_qcom_disable_port_interrupts(struct dwc3_qcom_port *port) +static void dwc3_qcom_disable_port_interrupts(struct dwc3_qcom *qcom, int = i) { + struct dwc3_qcom_port *port =3D &qcom->ports[i]; + dwc3_qcom_disable_wakeup_irq(port->qusb2_phy_irq); =20 if (port->usb2_speed =3D=3D USB_SPEED_LOW) { - dwc3_qcom_disable_wakeup_irq(port->dm_hs_phy_irq); + dwc3_qcom_disable_wakeup_irq(qcom->uses_eusb2_phy ? + port->dp_hs_phy_irq : + port->dm_hs_phy_irq); } else if ((port->usb2_speed =3D=3D USB_SPEED_HIGH) || (port->usb2_speed =3D=3D USB_SPEED_FULL)) { - dwc3_qcom_disable_wakeup_irq(port->dp_hs_phy_irq); + dwc3_qcom_disable_wakeup_irq(qcom->uses_eusb2_phy ? + port->dm_hs_phy_irq : + port->dp_hs_phy_irq); } else { dwc3_qcom_disable_wakeup_irq(port->dp_hs_phy_irq); dwc3_qcom_disable_wakeup_irq(port->dm_hs_phy_irq); @@ -289,8 +300,10 @@ static void dwc3_qcom_disable_port_interrupts(struct d= wc3_qcom_port *port) dwc3_qcom_disable_wakeup_irq(port->ss_phy_irq); } =20 -static void dwc3_qcom_enable_port_interrupts(struct dwc3_qcom_port *port) +static void dwc3_qcom_enable_port_interrupts(struct dwc3_qcom *qcom, int i) { + struct dwc3_qcom_port *port =3D &qcom->ports[i]; + dwc3_qcom_enable_wakeup_irq(port->qusb2_phy_irq, 0); =20 /* @@ -303,11 +316,19 @@ static void dwc3_qcom_enable_port_interrupts(struct d= wc3_qcom_port *port) */ =20 if (port->usb2_speed =3D=3D USB_SPEED_LOW) { - dwc3_qcom_enable_wakeup_irq(port->dm_hs_phy_irq, + dwc3_qcom_enable_wakeup_irq(qcom->uses_eusb2_phy ? + port->dp_hs_phy_irq : + port->dm_hs_phy_irq, + qcom->uses_eusb2_phy ? + IRQ_TYPE_EDGE_RISING : IRQ_TYPE_EDGE_FALLING); } else if ((port->usb2_speed =3D=3D USB_SPEED_HIGH) || (port->usb2_speed =3D=3D USB_SPEED_FULL)) { - dwc3_qcom_enable_wakeup_irq(port->dp_hs_phy_irq, + dwc3_qcom_enable_wakeup_irq(qcom->uses_eusb2_phy ? + port->dm_hs_phy_irq : + port->dp_hs_phy_irq, + qcom->uses_eusb2_phy ? + IRQ_TYPE_EDGE_RISING : IRQ_TYPE_EDGE_FALLING); } else { dwc3_qcom_enable_wakeup_irq(port->dp_hs_phy_irq, @@ -324,7 +345,7 @@ static void dwc3_qcom_disable_interrupts(struct dwc3_qc= om *qcom) int i; =20 for (i =3D 0; i < qcom->num_ports; i++) - dwc3_qcom_disable_port_interrupts(&qcom->ports[i]); + dwc3_qcom_disable_port_interrupts(qcom, i); } =20 static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom) @@ -332,7 +353,7 @@ static void dwc3_qcom_enable_interrupts(struct dwc3_qco= m *qcom) int i; =20 for (i =3D 0; i < qcom->num_ports; i++) - dwc3_qcom_enable_port_interrupts(&qcom->ports[i]); + dwc3_qcom_enable_port_interrupts(qcom, i); } =20 static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup) @@ -609,6 +630,7 @@ struct dwc3_glue_ops dwc3_qcom_glue_ops =3D { =20 static int dwc3_qcom_probe(struct platform_device *pdev) { + const struct dwc3_qcom_platform_data *pdata; struct dwc3_probe_data probe_data =3D {}; struct device *dev =3D &pdev->dev; struct dwc3_qcom *qcom; @@ -624,6 +646,10 @@ static int dwc3_qcom_probe(struct platform_device *pde= v) =20 qcom->dev =3D &pdev->dev; =20 + pdata =3D device_get_match_data(dev); + if (pdata) + qcom->uses_eusb2_phy =3D pdata->uses_eusb2_phy; + qcom->resets =3D devm_reset_control_array_get_optional_exclusive(dev); if (IS_ERR(qcom->resets)) { return dev_err_probe(&pdev->dev, PTR_ERR(qcom->resets), @@ -838,8 +864,27 @@ static const struct dev_pm_ops dwc3_qcom_dev_pm_ops = =3D { .prepare =3D pm_sleep_ptr(dwc3_qcom_prepare), }; =20 +static const struct dwc3_qcom_platform_data dwc3_qcom_pdata =3D { + .uses_eusb2_phy =3D false, +}; + +static const struct dwc3_qcom_platform_data dwc3_qcom_glymur_pdata =3D { + .uses_eusb2_phy =3D true, +}; + static const struct of_device_id dwc3_qcom_of_match[] =3D { - { .compatible =3D "qcom,snps-dwc3" }, + { + .compatible =3D "qcom,snps-dwc3", + .data =3D &dwc3_qcom_pdata, + }, + { + .compatible =3D "qcom,glymur-dwc3", + .data =3D &dwc3_qcom_glymur_pdata, + }, + { + .compatible =3D "qcom,glymur-dwc3-mp", + .data =3D &dwc3_qcom_glymur_pdata, + }, { } }; MODULE_DEVICE_TABLE(of, dwc3_qcom_of_match); --=20 2.34.1