From nobody Fri Sep 5 18:14:01 2025 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 EC7BF1885A5 for ; Sat, 19 Apr 2025 05:43:29 +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=1745041411; cv=none; b=gt/LD49AdyVnUCcF6Q9cjaP1fn1jQOMI/5VADRAUT2wH2NkavBX7BhNAZOd/3cC9LL1KVJniTcpyI/nxi1ArDVZ9IADR+ADoxFIRY5e/bLM1tijIItHWJC+8DQYSe3xP9y4IMnPD+vT6ABlyy2wMNWS4p7b4Gm2Ib8Pk8Zk0my4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745041411; c=relaxed/simple; bh=2UXuX1AMMSWXufAarokzPiIVXoyWp7dxY3qIHpMjNV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dibXC0ngfFu0B9Pbja8StLgXzd6yQ+ep+fhrFpEKv7Q2rlZSGQD4f3vzIAUjUSZhIgSy6MCIG11QZHwX3aJ2rYUqYWgbQzZLWHmO0qdfCJ7wqjsNLHeT9hVb2cFp4hokal7VjnT2Q1/pef9mqElS2j+dQVel7iINjlMCnz4hbiU= 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=iUv6Au/h; 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="iUv6Au/h" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53J3Okg3013587 for ; Sat, 19 Apr 2025 05:43:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= JVIxJwxtqh/xBODLl5IXRK6VBOMqf0w0YODMOA6QzRM=; b=iUv6Au/hp5Ur9SSo aZs7mUE3/N/V6mOYu02aAjOo7RCInTIstPJ8zKbelYumyP3kP7Bp7hwftN42drCZ k7NsNLYUP8gAh5GZfDT9o3b1xHuiAamMPO0+FTokfweK1GWNWvkb3OgSBDpmcFb+ q8/yrgRAS01ap45DRR/6T+0M/WFN8GaeotP+WM4DGF1dUPRbHHFvaV8lS7TBSBwk ZIjb0fJmZwusujLx23694jVWwNAfHWgNm8MRf89/9YpfSM6rZrrseWYUfclQ5+H+ 2qSILOV1FgSHhhCPGSvA9xVL6Fw2kTdUWnoSwVOZuKJju/K56ntt8nyrWTrF0WP4 cK77LA== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46435j85rp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 19 Apr 2025 05:43:28 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2240a96112fso36434995ad.2 for ; Fri, 18 Apr 2025 22:43:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745041407; x=1745646207; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JVIxJwxtqh/xBODLl5IXRK6VBOMqf0w0YODMOA6QzRM=; b=bJCPJZXnMp4cf15uMCA/bi+9cihI31hhrYuCjwH+QIloSgZvNsG3eNsLOlzcjYktax GpJ9+C1puCI7cli7+lOW/Cf7qrL/I9jCmNwo/NvzD4hddfPgZ1o3cxSkCLWaG3dw0DIz ifg8kO8u6IJTGAhiWPdXJSvJqd1oc6JPTQGLpv3QRnGcLKvuE3opyL42rgkbhG68g5cX iv2vpvPX7S07LbGbdSBnHONe044F/8UWCPI5YwDFGAcfdvc4ht8qT72abWnvuI+GT4a0 EQL3jrbFE2fCRwndJXDrahPLPbYyEHW2RpKtlfDY/SoXsA6OsPyM74XmsvidQUcZfbui tZlA== X-Forwarded-Encrypted: i=1; AJvYcCVh60jLefLYHpd6P6YG1qDgPrgfONfI/rkIGHKy6fgBfmjAUNXg15JsU4+BhjlvFFerrmJBH57txAnNicQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyvbI9F3D3HH3FJO1P9+etV2s4FntAJ/b3CAy1n36A1xQkh7zAH OvYjdP5yk2p2quDBAvkARQSsjuAuZI26CortscbbSh0kVO6uSMBCwdN3dJLcrc+mwv1b1awzpcP cNXitLbf+gvQnUcH716TiVLwxBDRrkpR5X8kS6iGI8jayWBoJBKECkgxofpt6nPI= X-Gm-Gg: ASbGncvTUbF+sx4niFrBpy/WqIWmHeb0wsLgAQNqx+1ckiN21mgzyk68QZMHR+ugvuS r1voF2Xby7ErAPC5qrBp4NXrSYWhgCv26gLDxUALjP9FpXPYIQgtMH/7NjNyZheH/NZJ6QHTm0K mVnZL69bZXxSGmVmiR5WESegL0/U3toQglDnQEFoG9DM1Paufnvwr+7ngSZt6jTCMOoQihgVSTY TEjV7xjlV2T6jg21E1DW2XFXKa6jd7wVKU6VbMwms39OdG6V/FtM0Rq1rZIq2yfZjYrs9VGuo2V AMhME3tw9mpszOXP/GATy0TDXbILvUa6EA5eKY19DgqkYCk= X-Received: by 2002:a17:902:db0f:b0:215:7421:262 with SMTP id d9443c01a7336-22c5357f020mr78332915ad.12.1745041407554; Fri, 18 Apr 2025 22:43:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHHSsbahsMRfG/4z86xbXbowPG0/DP1oZBDFE0qvKHdxA0AzCGEdY+IPLHyi4u+NrnSKX3G6Q== X-Received: by 2002:a17:902:db0f:b0:215:7421:262 with SMTP id d9443c01a7336-22c5357f020mr78332775ad.12.1745041407188; Fri, 18 Apr 2025 22:43:27 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eceb37sm26014945ad.179.2025.04.18.22.43.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Apr 2025 22:43:26 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sat, 19 Apr 2025 11:13:03 +0530 Subject: [PATCH v2 1/2] arm64: dts: qcom: sc7280: Add wake GPIO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250419-wake_irq_support-v2-1-06baed9a87a1@oss.qualcomm.com> References: <20250419-wake_irq_support-v2-0-06baed9a87a1@oss.qualcomm.com> In-Reply-To: <20250419-wake_irq_support-v2-0-06baed9a87a1@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , cros-qcom-dts-watchers@chromium.org, Bjorn Helgaas Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_vbadigan@quicinc.com, quic_mrana@quicinc.com, Krishna Chaitanya Chundru X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745041398; l=1775; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=2UXuX1AMMSWXufAarokzPiIVXoyWp7dxY3qIHpMjNV0=; b=gBL4vztZXZCAn2qIluS5f2KOeeR0s5jscWXDczQOYDel5KYk/jOcN3a0coRdAikCk61Td8IA2 Mtj5jm/Kc3QD4lhd9EqUizsREyq4rZXVBD9jdMushdibIeTQRHnMDVH X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Authority-Analysis: v=2.4 cv=EOYG00ZC c=1 sm=1 tr=0 ts=68033800 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=EUspDBNiAAAA:8 a=_k9ig2nQFDp-gxZIyLcA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-GUID: CcTeoybZQuAuzmEUzKzQqqHWholWXhFq X-Proofpoint-ORIG-GUID: CcTeoybZQuAuzmEUzKzQqqHWholWXhFq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-19_02,2025-04-17_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 mlxlogscore=936 mlxscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 priorityscore=1501 phishscore=0 spamscore=0 adultscore=0 impostorscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504190043 Add wake gpio which is needed to bring PCIe device state from D3cold to D0. Signed-off-by: Krishna Chaitanya Chundru Reviewed-by: Manivannan Sadhasivam --- arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 1 + arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 1 + arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 1 + 3 files changed, 3 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot= /dts/qcom/qcs6490-rb3gen2.dts index f54db6345b7af6f77bde496d4a07b857bf9d5f6e..ebfe2c5347be02ea730039e6140= 1633fa49479d2 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -711,6 +711,7 @@ &mdss_edp_phy { =20 &pcieport1 { reset-gpios =3D <&tlmm 2 GPIO_ACTIVE_LOW>; + wake-gpios =3D <&tlmm 3 GPIO_ACTIVE_LOW>; }; =20 &pcie1 { diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi b/arch/arm64/bo= ot/dts/qcom/sc7280-herobrine.dtsi index 60b3cf50ea1d61dd5e8b573b5f1c6faa1c291eee..d435db860625d52842bf8e92d62= 23f67343121db 100644 --- a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi @@ -477,6 +477,7 @@ &pcie1 { =20 &pcieport1 { reset-gpios =3D <&tlmm 2 GPIO_ACTIVE_LOW>; + wake-gpios =3D <&tlmm 3 GPIO_ACTIVE_LOW>; }; =20 &pm8350c_pwm { diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi b/arch/arm64/boot/dts= /qcom/sc7280-idp.dtsi index 19910670fc3a74628e6def6b8faf2fa17991d576..e107ae0d62460d0d0909c7351c1= 7b0b15f99a235 100644 --- a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi @@ -416,6 +416,7 @@ &lpass_va_macro { =20 &pcieport1 { reset-gpios =3D <&tlmm 2 GPIO_ACTIVE_LOW>; + wake-gpios =3D <&tlmm 3 GPIO_ACTIVE_LOW>; }; =20 &pcie1 { --=20 2.34.1 From nobody Fri Sep 5 18:14:01 2025 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 8565619007D for ; Sat, 19 Apr 2025 05:43:33 +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=1745041416; cv=none; b=KS1nfRqmXtyCbTRtmpK96y2Otkg5V2qcYZB/7cEPHbIwTsqtiDUifhNaVsY+U5PmwGYrb0UQ+hjtZDMO1L0/Vu02QxfFy54Edm9YPdmLvAq47LZJoLnyTOKxCdEES/ByaSY0KDZr4oXoDUPZ3kEeR8Hp1VL29ygJemlgFJVSc/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745041416; c=relaxed/simple; bh=l+iLQRs3Sd9q7CUv85IAG9PJ5au9ED/F26dF58ymUtk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mvr1BFXj4aHH4sI1KhUklh0o1OZDp6bmNc3JQf4wd69BdhfpO8vjmM5FAFbIDzbtVccsN4XbKisahM+jqhUdIz79TWZqgJwafh3HrcYLt8HE/P4vRq2aRGkQpUH5ssmlPZH28LV+gXKJSVDkRSamXrEUijdH3EpTESW8XpQRmnU= 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=B3tfcXbF; 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="B3tfcXbF" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53J4TpgX007219 for ; Sat, 19 Apr 2025 05:43:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= HBnyWza8rS1v7HrmjjSzQ1pFiEcjxC/rJnoS7wzUeqY=; b=B3tfcXbF88TMtoNU OyzIzxLDCHBGM/Kc9nQOwItkQ6M/XoT2DGsLx6TmsLZzevrG4LHEN7HDVJYiMi2+ Ld0jCnpyf3yLbfGVrpavWUCVs0QVxvf6XTyumJXgJ/SvyBcMT7GluJa9llc7qSuY agvY65shLDtBkKM4s60FZg+NO1eQSqJLI1dcyv+NRNxZtjfeFVyRaH+WSljjH5Tq 1jn4gvtQA3XuL42w3Nqyzw+hJXrL03N/wDGdS0I8CDe4UwaDaaBChX01DHgKkWTz fayzgJB6fsnkTfIBWhtFzLdH/2rgqImvwj4ASmP3ERi6rRhJwW2pwfTQl1YJMB1s sht2bQ== 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 4642sv86gr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 19 Apr 2025 05:43:32 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2ff58318acaso3234375a91.0 for ; Fri, 18 Apr 2025 22:43:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745041412; x=1745646212; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HBnyWza8rS1v7HrmjjSzQ1pFiEcjxC/rJnoS7wzUeqY=; b=hlYJkS0dOde7MYZQ8yJIH6lkDnqvuc4iSQ6P0cdxS+amVrESZgxa/ppjyFm+Mp2L+K FK+cX6QQ4gTrtOUYMFV5Lu0uQ29NljaiXmMbaK4mCt0wGYN+x71+yhWxXMNZ6/VqtqLw O/yLCPpAY3UvQ/t7tQ1VBEbCQi8nU/qlDBS6yY0NE062qtOO4ZeS5JL7pRVZj/YIcJzX 15wYVJrxdhCildg0sb9dzIR2P9TdOQp0ku7bEeO8hoO+khZUGpvDe/pkDH6wMhxcb05h xxwD4lvNGQMd6pWFyyGvYtXtOgBM0bJxbZsKZzoqoRQlcv/pEpwph/vV63piXDRW6W0a x6yg== X-Forwarded-Encrypted: i=1; AJvYcCUuG8PSldfMT/it5U8KNYTgHB//KbuGTCYLrD6VoCqLGoe2nnocueVEN54Kzo/epeVGlaGRBm+Y5UPD794=@vger.kernel.org X-Gm-Message-State: AOJu0YxELVXkA2XQNKt6uKW2jOAmRbhpJoM2pJpJx39xQ1/5aIZqFLUG 1sgzzGNZKbIAZ9gIpsct9WA7cKxtw5cyWUTOxXcvvZoMh6dyeippTnFSQ6BHjhJvs6690SOKxVY nDFUwh0UWYDhN0sullRcx80QHJr0SEHUtC+Ql2mocJJuBWPKwIX03TmB1YCr6W7U= X-Gm-Gg: ASbGncskc2niLpbIWrwlNXTwVVloDslMHNPwS/xGMFO6Nr5v+L056xOTEHFjP2U7QOE Uxar6I5ajtU5Mm0Xpe+OdF4iZSkTdVOtNwkU2kdoJ343m85Y0BeKjObrGMSquOJHz62lGc3VPGg mA0/wia7aaJRDlr/kmt8Devj2MA9l0AGreUvqX/gVYMFTWVTmxpjgwvaXziHt8Ry1enoUkUilNi ENAstoHcs4Z5wMr6AyF417aKDsqSFgqTNmd6XAXqPS/lNjuIqYajPPwlU5lvPi1oOYPX13V+2um zrFBtGZq9r/tnAKKTOJWJCjrYhrxNg+ekb/SUSZHa2ZB+OA= X-Received: by 2002:a17:903:32d1:b0:224:fa0:36da with SMTP id d9443c01a7336-22c5358321dmr58141475ad.18.1745041411766; Fri, 18 Apr 2025 22:43:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGzWEAMRvo6PUazfjfHTnWx8uUrubDqpzpgGItMl2BoJHPEaH7gA3csflj14Pu/DY/NJrWd/w== X-Received: by 2002:a17:903:32d1:b0:224:fa0:36da with SMTP id d9443c01a7336-22c5358321dmr58141215ad.18.1745041411390; Fri, 18 Apr 2025 22:43:31 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eceb37sm26014945ad.179.2025.04.18.22.43.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Apr 2025 22:43:31 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sat, 19 Apr 2025 11:13:04 +0530 Subject: [PATCH v2 2/2] PCI: Add support for PCIe wake interrupt Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250419-wake_irq_support-v2-2-06baed9a87a1@oss.qualcomm.com> References: <20250419-wake_irq_support-v2-0-06baed9a87a1@oss.qualcomm.com> In-Reply-To: <20250419-wake_irq_support-v2-0-06baed9a87a1@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , cros-qcom-dts-watchers@chromium.org, Bjorn Helgaas Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_vbadigan@quicinc.com, quic_mrana@quicinc.com, Krishna Chaitanya Chundru X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745041398; l=5149; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=l+iLQRs3Sd9q7CUv85IAG9PJ5au9ED/F26dF58ymUtk=; b=Y3KF+GIIZYUGLI6u3qqIz8HUKIe4N/LUFLwc4f/nbvf/ewo8/wiGDrihcavfWs4SaYd9VSleO s+isiQTAOLfDcGjNQPpie72yhaQFIUqCPiiKgGS72yxjAIgT6hoHMeH X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-GUID: ZKLRz4xurMAJWnj7njX3yjkwPgNAd14x X-Proofpoint-ORIG-GUID: ZKLRz4xurMAJWnj7njX3yjkwPgNAd14x X-Authority-Analysis: v=2.4 cv=QLJoRhLL c=1 sm=1 tr=0 ts=68033804 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=EUspDBNiAAAA:8 a=iljMX2kAvVRlE-iODa4A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-19_02,2025-04-17_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 adultscore=0 phishscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504190043 PCIe wake interrupt is needed for bringing back PCIe device state from D3cold to D0. Implement new functions, of_pci_setup_wake_irq() and of_pci_teardown_wake_irq(), to manage wake interrupts for PCI devices using the Device Tree. From the port bus driver call these functions to enable wake support for bridges. Signed-off-by: Krishna Chaitanya Chundru --- drivers/pci/of.c | 60 ++++++++++++++++++++++++++++++++++++++++++= ++++ drivers/pci/pci.h | 6 +++++ drivers/pci/pcie/portdrv.c | 12 +++++++++- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/drivers/pci/of.c b/drivers/pci/of.c index ab7a8252bf4137a17971c3eb8ab70ce78ca70969..13623797c88a03dfb9d9079518d= 87a5e1e68df38 100644 --- a/drivers/pci/of.c +++ b/drivers/pci/of.c @@ -7,6 +7,7 @@ #define pr_fmt(fmt) "PCI: OF: " fmt =20 #include +#include #include #include #include @@ -15,6 +16,7 @@ #include #include #include +#include #include "pci.h" =20 #ifdef CONFIG_PCI @@ -966,3 +968,61 @@ u32 of_pci_get_slot_power_limit(struct device_node *no= de, return slot_power_limit_mw; } EXPORT_SYMBOL_GPL(of_pci_get_slot_power_limit); + +/** + * of_pci_setup_wake_irq - Set up wake interrupt for PCI device + * @pdev: The PCI device structure + * + * This function sets up the wake interrupt for a PCI device by getting the + * corresponding GPIO pin from the device tree, and configuring it as a + * dedicated wake interrupt. + * + * Return: 0 if the wake gpio is not available or successfully parsed else + * errno otherwise. + */ +int of_pci_setup_wake_irq(struct pci_dev *pdev) +{ + struct gpio_desc *wake; + struct device_node *dn; + int ret, wake_irq; + + dn =3D pci_device_to_OF_node(pdev); + if (!dn) + return 0; + + wake =3D devm_fwnode_gpiod_get(&pdev->dev, of_fwnode_handle(dn), + "wake", GPIOD_IN, NULL); + if (IS_ERR(wake)) { + dev_warn(&pdev->dev, "Cannot get wake GPIO\n"); + return 0; + } + + wake_irq =3D gpiod_to_irq(wake); + device_init_wakeup(&pdev->dev, true); + + ret =3D dev_pm_set_dedicated_wake_irq(&pdev->dev, wake_irq); + if (ret < 0) { + dev_err(&pdev->dev, "Failed to set wake IRQ: %d\n", ret); + device_init_wakeup(&pdev->dev, false); + return ret; + } + irq_set_irq_type(wake_irq, IRQ_TYPE_EDGE_FALLING); + + return 0; +} +EXPORT_SYMBOL_GPL(of_pci_setup_wake_irq); + +/** + * of_pci_teardown_wake_irq - Teardown wake interrupt setup for PCI device + * + * @pdev: The PCI device structure + * + * This function tears down the wake interrupt setup for a PCI device, + * clearing the dedicated wake interrupt and disabling device wake-up. + */ +void of_pci_teardown_wake_irq(struct pci_dev *pdev) +{ + dev_pm_clear_wake_irq(&pdev->dev); + device_init_wakeup(&pdev->dev, false); +} +EXPORT_SYMBOL_GPL(of_pci_teardown_wake_irq); diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index b81e99cd4b62a3022c8b07a09f212f6888674487..b2f65289f4156fa1851c2d2f20c= 4ca948f36258f 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -888,6 +888,9 @@ void pci_release_of_node(struct pci_dev *dev); void pci_set_bus_of_node(struct pci_bus *bus); void pci_release_bus_of_node(struct pci_bus *bus); =20 +int of_pci_setup_wake_irq(struct pci_dev *pdev); +void of_pci_teardown_wake_irq(struct pci_dev *pdev); + int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *br= idge); bool of_pci_supply_present(struct device_node *np); =20 @@ -931,6 +934,9 @@ static inline int devm_of_pci_bridge_init(struct device= *dev, struct pci_host_br return 0; } =20 +static int of_pci_setup_wake_irq(struct pci_dev *pdev) { return 0; } +static void of_pci_teardown_wake_irq(struct pci_dev *pdev) { } + static inline bool of_pci_supply_present(struct device_node *np) { return false; diff --git a/drivers/pci/pcie/portdrv.c b/drivers/pci/pcie/portdrv.c index e8318fd5f6ed537a1b236a3a0f054161d5710abd..33220ecf821c348d49782855eb5= aa3f2fe5c335e 100644 --- a/drivers/pci/pcie/portdrv.c +++ b/drivers/pci/pcie/portdrv.c @@ -694,12 +694,18 @@ static int pcie_portdrv_probe(struct pci_dev *dev, (type !=3D PCI_EXP_TYPE_RC_EC))) return -ENODEV; =20 + status =3D of_pci_setup_wake_irq(dev); + if (status) + return status; + if (type =3D=3D PCI_EXP_TYPE_RC_EC) pcie_link_rcec(dev); =20 status =3D pcie_port_device_register(dev); - if (status) + if (status) { + of_pci_teardown_wake_irq(dev); return status; + } =20 pci_save_state(dev); =20 @@ -732,6 +738,8 @@ static void pcie_portdrv_remove(struct pci_dev *dev) =20 pcie_port_device_remove(dev); =20 + of_pci_teardown_wake_irq(dev); + pci_disable_device(dev); } =20 @@ -744,6 +752,8 @@ static void pcie_portdrv_shutdown(struct pci_dev *dev) } =20 pcie_port_device_remove(dev); + + of_pci_teardown_wake_irq(dev); } =20 static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev, --=20 2.34.1