From nobody Mon Jun 8 22:01:57 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 4879D3D9DAB for ; Tue, 26 May 2026 10:19:10 +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=1779790752; cv=none; b=ae0LdKTlZmBaRmvK8ohHhKJodElnf/Ut6w7ket2JRWsIVurGF6kR4q7a1+Lsnv8LzP4+pbKBUzjf6awr7r5OSwdeoC5HBonANvsPjOQxoGVXr4xs3eLB0YAn3kcg23FI2LGQoAp/f0DItUx6I60wOxfBkZTnrb/kYmKbb3c2pj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779790752; c=relaxed/simple; bh=K3HaQ0i0f40jcm7saHW9ldaN18lyHoCTSnxxmp/1E1U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qpSMqzZ/Wi0VqpPtFHDd4sTc1p1m4OmDdJFSK3jQf9InxOnXXx88+HRWr2d/oCN1KAcaDIj1x9mt2KHwsxq8hnlDL0U9dKI1a8oLtaQpycx5okKXy3VzaN2FXJJtlv+zkhjpK6XrpFWQbpYzsU7QUdU0anP/l1YvSFKjieme7vM= 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=M7dlSOLj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YBK8ZstN; 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="M7dlSOLj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YBK8ZstN" 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 64Q60gQl1763368 for ; Tue, 26 May 2026 10:19:09 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= PpA20mQebJc+mgK4Uh3oHCMORChwQsgQhTdWjuHd7WM=; b=M7dlSOLjLzB62SuG iveiJYmwt0Hf6cWROAGGQy1AiG9fHuOAQDnO5wfbP9Uy4wqAnFhaxctudFjCwXn7 xOUWA1WQtopocsPtkS3Bg9N4Hnc8V3t2wkmmtxw6iJFcThsOPO02uYpXSsCAyerK Dn3tMQ3vrrtpwMNrlZLaRnG9iCAjOdKE+XI38lwos2JnpEzZLbNmMqmbuPrvTRgq z82p9VPM4WWvGpH2Y6ncTPWSe6ZJBfVW5mEFnyZdu6Igs1Xs9Iz+EDEOuA1yoWMI P33ukWRAaiaS77vLnzH/XAwpDB6ikSuVIObCtYKVzsqlB/LtA7jEtA8JwzOXdy4f xzDEWA== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ed5vgh19a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 26 May 2026 10:19:09 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2ba3245a43dso115959615ad.0 for ; Tue, 26 May 2026 03:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779790748; x=1780395548; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PpA20mQebJc+mgK4Uh3oHCMORChwQsgQhTdWjuHd7WM=; b=YBK8ZstNCXWMZtwiE3xAAgUZQUAhoQoJuhCKwaaceb5ClNYGJXwUSYiZReqKM9vFPg zwBtC8wgzO4LqbLJwbaWdX1+7oYpa9xXlqeuYJQwe3rGvNYz0CgSJNHrhgMZLRmcm13B NeIUJxlN4MoOEowmPtkDQSb1oz3YnvzmWGbcU92BTfHoD7nZNd8yWvDsLLEOm/4OhfW9 RD9H/3Qg2WI/6DCZCcWuP60z5HlqskgHBNwQR/oCaP4O0XLdbdV7Ie1qrQcyJ1UKiq6X GDoWZuSHLQmOiIzrRa1bHuFuWJ6T+qNJZ72DKcgP3hm1r39Ig5dqrw391wRtntnIC1Dw OElw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779790748; x=1780395548; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PpA20mQebJc+mgK4Uh3oHCMORChwQsgQhTdWjuHd7WM=; b=peXiLyj6W+83qltghlSBxWF++Fiw6tK3FGQ4ZhKhgtttdeszFubi9EDHzFr6j8hoIs CTVNAWLbsWTn/TyTEDmBShHm3kIjGS6g5g0JUuF3D42f157KcZcf4ENqgoPfKOPpBRoj /emlsfk1etzL3PQv2fngGIxrvy16G965IdU2CzWB/BGBvsmNK8G6xMoQ2cWci31GBWSr IP7GXLn5dBTPb+bNj3K4xdy5kUjbh/QHWtR3CPDa/8WZYvWSdgWGMF2GIwTJTHOcuv/6 xRSLtmd1xhejSYfnU4YpQ9Apks5qvSqPZy9uyPSMqDNQc6W4S1hGMh70ZcQ4JsOByRb+ Hhzw== X-Forwarded-Encrypted: i=1; AFNElJ8NRD9JhLh/HCohHi7wSV8ZSbE0miUZQSjpn7/8CWk4KmKeScntYIXoQ/qUcBhk/qF/vrAMS/RVRBPThr4=@vger.kernel.org X-Gm-Message-State: AOJu0YxcoC3Qiwa2p0XULD3T83l2Y4EHBFrGwS4ngf6zsb3YnE4Av6wi rK3ABlbqnF+hx6RcVzoawE+ePDyBBJMFZtow5PrX+y1SmnVBL7h5CrxeWnwR2Km3O/uqTQ5E91z qLnUhbpfBNc4ynimCIdEJTDqYBpO+SmeKSXrOC2S3juSb0HkTDvkSi6OmLimBiOwZBhk= X-Gm-Gg: Acq92OFavqa7mPA2B9Lc5bOfPs9+UcOBHjaGEmRsb2YXRrq0nyfaHUBnKL3wvL1BTO1 piNSbLG3XP5oB3+VMub7cEklQNnyAMecugTC63/YR+90Rs16aSmy9gNq7jgyQg7GcpnJa4sCmRd 5FIcZS7g+Q6tiBSstEayUYo1hZS7WMoexMn5njoPs2DiHD8H9Wo5MbV4ANOsNZnjdFFLKV0fo4o 5otJwGAz939F+6VzRF4/Q08QPS6duh8XAgutv5wEdEU3a0zQ/EMOE4Axfi9+yZtxNv6oeXu/wqB IRWzIduGUF3zNjlMq+TXODFEitJ+FSZJjB26u3YUzHi0zqQ+01MEEWTWiUpywzDkztm2dYYub0m titI2lY6k4SQTVRcLgSbXKttT8thlPOImlMJ9P9P7PBpsc3qEa/WQ9Kg= X-Received: by 2002:a17:903:2390:b0:2bc:b80f:6782 with SMTP id d9443c01a7336-2beb0356171mr202051805ad.11.1779790748160; Tue, 26 May 2026 03:19:08 -0700 (PDT) X-Received: by 2002:a17:903:2390:b0:2bc:b80f:6782 with SMTP id d9443c01a7336-2beb0356171mr202051525ad.11.1779790747641; Tue, 26 May 2026 03:19:07 -0700 (PDT) Received: from hu-priyjain-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb56f4343sm159941105ad.36.2026.05.26.03.19.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 May 2026 03:19:07 -0700 (PDT) From: Priyansh Jain Date: Tue, 26 May 2026 15:48:36 +0530 Subject: [PATCH 1/2] thermal: qcom: tsens: switch wake IRQ handling to PM callbacks 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: <20260526-tsens_interrupt_wake_control-v1-1-6adcd75555b9@oss.qualcomm.com> References: <20260526-tsens_interrupt_wake_control-v1-0-6adcd75555b9@oss.qualcomm.com> In-Reply-To: <20260526-tsens_interrupt_wake_control-v1-0-6adcd75555b9@oss.qualcomm.com> To: Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba Cc: linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Priyansh Jain X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779790740; l=6386; i=priyansh.jain@oss.qualcomm.com; s=20260515; h=from:subject:message-id; bh=K3HaQ0i0f40jcm7saHW9ldaN18lyHoCTSnxxmp/1E1U=; b=NB+6n4ck4oYi0niqhUeW+jXk6uZ67KTVAIxa18qHg1NQ0EFhEyAnvjGu28Qb71WY8CErZlarR YGe+c9/U5/6CH3Z3jujFdWPvXM8pIodbk6Y+CBiue9lyMveH/UkiLJm X-Developer-Key: i=priyansh.jain@oss.qualcomm.com; a=ed25519; pk=xe57jjgIoTuNHN/Dp00kZl1mAJjmROaH7JV9sRxEoEQ= X-Authority-Analysis: v=2.4 cv=IrYutr/g c=1 sm=1 tr=0 ts=6a15739d cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=Y1N8Ec-qMYIBCvTlKQUA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: 9_q4xqCUQqxXGq8M1R3eLGScVdMAmfJ_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI2MDA4OSBTYWx0ZWRfX4Zv59TrpyPxA PL87G0MWTaaFlj+rMB4bbjsZQZ3oISlat2k0OUnTqjITZnBqYIyr4GulqTTq6L9N/dpO5klhv0z 2BLzHQMRYdAVw8jH7K80I0O+84iLnBSiuLfUFddQUrse8S0q0DCzsx9b0IdsT5KrDhqSZJ4B5Uy 9iwJiX/gDkRsShFROaoeHDctEPImK4kwWofr48LXN83uzasrz3t61XXsXoi9SbreGIsoO3/SnG4 HqBlji64s2ersHXsUCSz/78huk/LJcXdtbwWR/JoWZE3blz9fhhtnSJs4GdLroaivrPxF/8del4 EwiPtTqyuJpOah21SfwSWW7CfB1f+CduNzBL5YVsP6u/Mhah6PDHFtFH50a5lZhV0aKiZqs6XTs YITmTMHToiDdSxvEeCHYIgVwHDOEsVsPcVI96MsRHLEdcJwknYKdUKbHYBgGye1MqzbSyuJz6VH j8dz+DxWhBJDMcSgoDg== X-Proofpoint-GUID: 9_q4xqCUQqxXGq8M1R3eLGScVdMAmfJ_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-26_02,2026-05-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605260089 This change improves power management by using the standardized PM framework for wake IRQ handling. Move wake IRQ control to the PM suspend/resume path: - store uplow/critical IRQ numbers in struct tsens_priv - enable wake IRQs in tsens_suspend_common() when wakeup is allowed - disable wake IRQs in tsens_resume_common() - mark the device wakeup-capable during probe This aligns TSENS wake behavior with suspend flow and avoids keeping wake IRQs permanently enabled during runtime. Signed-off-by: Priyansh Jain --- drivers/thermal/qcom/tsens-v2.c | 1 - drivers/thermal/qcom/tsens.c | 72 +++++++++++++++++++++++++++++++++----= ---- drivers/thermal/qcom/tsens.h | 18 ++++++++++- 3 files changed, 76 insertions(+), 15 deletions(-) diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v= 2.c index 8d9698ea3ec4..e06f8e5802e8 100644 --- a/drivers/thermal/qcom/tsens-v2.c +++ b/drivers/thermal/qcom/tsens-v2.c @@ -263,7 +263,6 @@ static int __init init_tsens_v2_no_rpm(struct tsens_pri= v *priv) static const struct tsens_ops ops_generic_v2 =3D { .init =3D init_common, .get_temp =3D get_temp_tsens_valid, - .resume =3D tsens_resume_common, }; =20 struct tsens_plat_data data_tsens_v2 =3D { diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c index a2422ebee816..d5d880a2aa08 100644 --- a/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c @@ -1086,22 +1086,30 @@ static int tsens_get_temp(struct thermal_zone_devic= e *tz, int *temp) =20 static int __maybe_unused tsens_suspend(struct device *dev) { + int ret =3D 0; struct tsens_priv *priv =3D dev_get_drvdata(dev); =20 - if (priv->ops && priv->ops->suspend) - return priv->ops->suspend(priv); + if (priv->ops && priv->ops->suspend) { + ret =3D priv->ops->suspend(priv); + if (ret) + return ret; + } =20 - return 0; + return tsens_suspend_common(priv); } =20 static int __maybe_unused tsens_resume(struct device *dev) { + int ret =3D 0; struct tsens_priv *priv =3D dev_get_drvdata(dev); =20 - if (priv->ops && priv->ops->resume) - return priv->ops->resume(priv); + if (priv->ops && priv->ops->resume) { + ret =3D priv->ops->resume(priv); + if (ret) + return ret; + } =20 - return 0; + return tsens_resume_common(priv); } =20 static SIMPLE_DEV_PM_OPS(tsens_pm_ops, tsens_suspend, tsens_resume); @@ -1172,7 +1180,7 @@ static const struct thermal_zone_device_ops tsens_of_= ops =3D { }; =20 static int tsens_register_irq(struct tsens_priv *priv, char *irqname, - irq_handler_t thread_fn) + irq_handler_t thread_fn, int *irq_num) { struct platform_device *pdev; int ret, irq; @@ -1204,8 +1212,8 @@ static int tsens_register_irq(struct tsens_priv *priv= , char *irqname, if (ret) dev_err(&pdev->dev, "%s: failed to get irq\n", __func__); - else - enable_irq_wake(irq); + else if (irq_num) + *irq_num =3D irq; } =20 put_device(&pdev->dev); @@ -1232,11 +1240,44 @@ static int tsens_reinit(struct tsens_priv *priv) return 0; } =20 +int tsens_suspend_common(struct tsens_priv *priv) +{ + if (!device_may_wakeup(priv->dev)) + return 0; + + if (priv->feat->combo_int) { + if (priv->combined_irq > 0) + enable_irq_wake(priv->combined_irq); + } else { + if (priv->uplow_irq > 0) + enable_irq_wake(priv->uplow_irq); + + if (priv->crit_irq > 0) + enable_irq_wake(priv->crit_irq); + } + + return 0; +} + int tsens_resume_common(struct tsens_priv *priv) { if (pm_suspend_target_state =3D=3D PM_SUSPEND_MEM) tsens_reinit(priv); =20 + if (!device_may_wakeup(priv->dev)) + return 0; + + if (priv->feat->combo_int) { + if (priv->combined_irq > 0) + disable_irq_wake(priv->combined_irq); + } else { + if (priv->uplow_irq > 0) + disable_irq_wake(priv->uplow_irq); + + if (priv->crit_irq > 0) + disable_irq_wake(priv->crit_irq); + } + return 0; } =20 @@ -1276,15 +1317,18 @@ static int tsens_register(struct tsens_priv *priv) =20 if (priv->feat->combo_int) { ret =3D tsens_register_irq(priv, "combined", - tsens_combined_irq_thread); + tsens_combined_irq_thread, &priv->combined_irq); } else { - ret =3D tsens_register_irq(priv, "uplow", tsens_irq_thread); + ret =3D tsens_register_irq(priv, "uplow", tsens_irq_thread, + &priv->uplow_irq); if (ret < 0) return ret; =20 - if (priv->feat->crit_int) + if (priv->feat->crit_int) { ret =3D tsens_register_irq(priv, "critical", - tsens_critical_irq_thread); + tsens_critical_irq_thread, + &priv->crit_irq); + } } =20 return ret; @@ -1343,6 +1387,8 @@ static int tsens_probe(struct platform_device *pdev) =20 platform_set_drvdata(pdev, priv); =20 + device_init_wakeup(dev, true); + if (!priv->ops || !priv->ops->init || !priv->ops->get_temp) return -EINVAL; =20 diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index 2a7afa4c899b..83a8f3580ed0 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -567,6 +567,9 @@ struct tsens_context { * @ops: pointer to list of callbacks supported by this device * @debug_root: pointer to debugfs dentry for all tsens * @debug: pointer to debugfs dentry for tsens controller + * @uplow_irq: IRQ number for uplow (upper/lower) threshold interrupts + * @crit_irq: IRQ number for critical threshold interrupts + * @combined_irq: IRQ number for combined threshold interrupts * @sensor: list of sensors attached to this device */ struct tsens_priv { @@ -588,6 +591,10 @@ struct tsens_priv { struct dentry *debug_root; struct dentry *debug; =20 + int uplow_irq; + int crit_irq; + int combined_irq; + struct tsens_sensor sensor[] __counted_by(num_sensors); }; =20 @@ -639,8 +646,17 @@ int get_temp_tsens_valid(const struct tsens_sensor *s,= int *temp); int get_temp_common(const struct tsens_sensor *s, int *temp); #ifdef CONFIG_SUSPEND int tsens_resume_common(struct tsens_priv *priv); +int tsens_suspend_common(struct tsens_priv *priv); #else -#define tsens_resume_common NULL +static inline int tsens_resume_common(struct tsens_priv *priv) +{ + return 0; +} + +static inline int tsens_suspend_common(struct tsens_priv *priv) +{ + return 0; +} #endif =20 /* TSENS target */ --=20 2.43.0 From nobody Mon Jun 8 22:01:57 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 1703A3DCDBD for ; Tue, 26 May 2026 10:19:13 +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=1779790755; cv=none; b=mdD3n3+wt3qu3Vdkxxuo5eBxqaOin6x+cyfvcOjRUj0Orszdr9cCRZGyT5TXBvpSS9/o0VEmrNXoo1TpXFgdc3tkTz3neFJOVEr00q1nBIwBJ1vtYBuD6frXK+JJcPc+LgMejrdXZw4ke0m9tYU1RcBXkYXCjb6+Zo3OQzEe9Zg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779790755; c=relaxed/simple; bh=KMog7D1zSTb8wnRR6eVYIq9bcVDVinAsuMOUfZaTXa4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j+N97O6uCYCr1H550zkbnlAZ7/hv9Y9lTeR6da8m939oqMJL7fbY1J4z2S5DTRNHHPqATZoFXLYp8ctidcyWwFtZi1M4d6dZMHlRJfd0ppkzqWw0kVcH+cBuGeOI+kEXi94AA2aVAcxdBH0RGAiFz60/WgQSN2e7gd0arI+uGzc= 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=pnmsWBJ4; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=C+tOicET; 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="pnmsWBJ4"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="C+tOicET" 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 64Q9BlnT3658079 for ; Tue, 26 May 2026 10:19:13 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= HK4haDG9Zw0Swz2Z7gX/R9iwSWL5VczHkBfklVCM2EE=; b=pnmsWBJ41qk5TWH8 jQVHcqAMDVispRExzQX0iHCAN7AoZFvSNhabcUnLIiznO3ENhMrxYxS01yvk+N4n TH2SKQdFvDbz8vYrCm1crDucbg6YURsCxOunJ0zJuXXW12sdcjKm7JvPn8zQoNmp /YtqBBQcsLd9k1G/Ub1+baSg7n+/dG2v/9uRe1g3IV09kq4sROx/fcGMjoQkx5bT 3QNlUvMRKesZ2U6BmC+FgAMLmjqvoqfUkRxATPqPafpNeI/qpYiHZ4r+XnL6mHzo Nys0Q2xQDgomwqBsnUwBPWmzxE6/WTEr1X8yeVZcZ0OZJMzgVHcjRzVH/4ENwTln Tmfxbw== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ecqynbb01-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 26 May 2026 10:19:12 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ba3245a43dso115960095ad.0 for ; Tue, 26 May 2026 03:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779790752; x=1780395552; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HK4haDG9Zw0Swz2Z7gX/R9iwSWL5VczHkBfklVCM2EE=; b=C+tOicETUunii1v9VxpxhYU+Cyn7ISMGN3nf0D4x5HjSmDKLMb+ETLwVP1R85dCCrg fTMtBcLMmp3qQ31BieQeoXHw25J7lUu77Y4LsWRTxS3wmDBNwQt7ICkGRlzeF+E70XYA Ng75O24i/Caev8UVkYJNlB9DHJZGQSAAvnHd0HdEdPWg1K2ClRpQFimG1uW6/8G1oeZj xt0BlVDDDZxCoNJ58vBb+uLqhk4ebeqnSd4TBrq+4m9JiOIOA3mSaVVp3sxMn+QEsp2c v+RczqinevkeeFuGk6lVw0bO7EV9PJMkrxXjdjfXhZtsDZFGw+5F/koMRSSbuEsPdvsT RcUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779790752; x=1780395552; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HK4haDG9Zw0Swz2Z7gX/R9iwSWL5VczHkBfklVCM2EE=; b=ltQNGeM4JaUQewgJGjksSgwNyJxLzlvTBfccBR7+38PmVX74/tlKSa0J81F8O8nhRA T7MICo9rmn86RpGuyawfp3sEAS9/FX2DOPkM5vrbuYKXLWfjk94RpRMOHl2PrHq4ROiw eyiXlak459BwmtdzT8RYTm3Knxq7YkzOet0pRWV8aS/+K2AqX0bO7E9LTjnzFaqyO17i zhLdK/YnOv00pk72msWczFUbuXwZGlkIE5GKRIyZGMSkXVBEPlSF+dve7Ky52Sg+fKG4 39nHVR01ahAMPw11l75evSrUK6+N+8aB8ajR+JQTcActzP/HltdGPO1t5mYpcsh8T7Jm rLMQ== X-Forwarded-Encrypted: i=1; AFNElJ9uupjVUd6bwRsLBOrqKmAz6+bAJXJARFEUaIUdtXP5a+WDilrcOVwlpUqWlZjxf9SKsDD1Ir/CuE1d2dw=@vger.kernel.org X-Gm-Message-State: AOJu0Ywa44+4qOPE+T3wfpAnhFV1mBZXEyvRX0IqA2MGpBYwZT47g5JE IkQE8W2bTTbMkQduy0fCSXJKeId71fJwh3Pm1okqDVBbALHhwGUDhvkI+VJcPzVZ2a9SROTrAWr a+9xfBfk31t+Vaa4/7/FKCiNIeUyA2rOoVKqrvZTLgqfTFYm93IUBtD3fl7YCr/JQHn8= X-Gm-Gg: Acq92OEQza/N+JTAQTbCCUBT3E4/z9fKj0Sg/4+6XAzdJAtZgclTMQAvNkz3CuSA7Ez rglSgaSFoVc2++Ygkzwm4XhBbjihpX6KlO/Owgim/y3gJmA6ugY77u6/bh3AruxHcmva4JKVyg1 /nt8zIa7Mt4knWaNwx7Y7xfSYqivubMoO38Tm6Q7SVmhEaiG/xXIlzNoJvn4pL49rUdmtguefjV tpyw65iL+ZJliLKPss207JO48aLHegN5xQBcdugQX5lxjitF7VsfvgsVtDMGOpxP3dtXQ9bFdEU cgQix5sZs0XnRqmcnYHmLDu/3BLOzFoACU3yubtbz0Y4LAHROvZNzBZUE1OSM1Ex3EjhAyg1kRv ny4MPmjBmHYo7NJAVRTEpBwLRar4Jr0oHVBlXlbdPbN6eglGRpj7azxo= X-Received: by 2002:a17:903:2f05:b0:2be:1eb1:eaf7 with SMTP id d9443c01a7336-2beb05b5f70mr210314075ad.24.1779790751843; Tue, 26 May 2026 03:19:11 -0700 (PDT) X-Received: by 2002:a17:903:2f05:b0:2be:1eb1:eaf7 with SMTP id d9443c01a7336-2beb05b5f70mr210313735ad.24.1779790751362; Tue, 26 May 2026 03:19:11 -0700 (PDT) Received: from hu-priyjain-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb56f4343sm159941105ad.36.2026.05.26.03.19.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 May 2026 03:19:11 -0700 (PDT) From: Priyansh Jain Date: Tue, 26 May 2026 15:48:37 +0530 Subject: [PATCH 2/2] thermal: qcom: tsens: Disable wakeup interrupt setup on automotive targets 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: <20260526-tsens_interrupt_wake_control-v1-2-6adcd75555b9@oss.qualcomm.com> References: <20260526-tsens_interrupt_wake_control-v1-0-6adcd75555b9@oss.qualcomm.com> In-Reply-To: <20260526-tsens_interrupt_wake_control-v1-0-6adcd75555b9@oss.qualcomm.com> To: Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba Cc: linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Priyansh Jain X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779790740; l=3513; i=priyansh.jain@oss.qualcomm.com; s=20260515; h=from:subject:message-id; bh=KMog7D1zSTb8wnRR6eVYIq9bcVDVinAsuMOUfZaTXa4=; b=IErSAVzT/vxwTzZ2wtnW20AlPPBuxWakHuH0Ssd+W/qSR0d4lX6e/Y/tnc8l6ns3FzjFm25Xs pNgnhkboH7eBa+NIc3yEyrlowEIZ1FVt2o+2VNcEUk84vcUCplC7aVH X-Developer-Key: i=priyansh.jain@oss.qualcomm.com; a=ed25519; pk=xe57jjgIoTuNHN/Dp00kZl1mAJjmROaH7JV9sRxEoEQ= X-Authority-Analysis: v=2.4 cv=Wpwb99fv c=1 sm=1 tr=0 ts=6a1573a0 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=PJyjg1ohnCiW5JLUlNMA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: z_Dvs4zyZYvm4ApPaFJceRcp-p3D-0MQ X-Proofpoint-ORIG-GUID: z_Dvs4zyZYvm4ApPaFJceRcp-p3D-0MQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI2MDA4OCBTYWx0ZWRfX32a30tqz7F63 Jde+PNqQOZwW2AlPSex7TajoWkztMCV3CHrXUmF+BYGcmCX5Qz54ZuEHkyS0kFXbG+gox2J9iVj nJu3Qx1NrQ3kDLx37HIVl6clWXnB8sPx2JVS+1AijQM7j8KV+im6tetBTx49+gF1Kv1PuB+tygR MhUX6r+QrthdKw6bYKOdByiHOGbo4T+uZ508DdPUyv5EKYllKu1WUig2z5fJVzOWZVVOPCO1WM3 fjrKJd96qWrkPjuIbMKs3uFpTelVmlGq7QnYFdfUZObGhRczWqCr3f7/UJBEOMwOQ8IqR6gAeFI ouh55krfMnenR3ZUBg0nex6WxhGzfV2ZYUP4EexvNq+UflvCvJswYQ+nT+l+7j9H9rGbbNxmlkF PGXJ+STRbZJi6l2ML4SrQGTzjr/818QwV8+gBdnojKqiCdat/sIC4x2HuCqbW/Np2ICjP3+5w9B spiGYz8NC6bd6Em6gOA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-26_02,2026-05-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605260088 Add a no_irq_wake flag to struct tsens_plat_data to allow platforms to control whether TSENS interrupts should be configured as wakeup sources. Create a new data_automotive structure and add compatible strings for automotive TSENS variants (SA8775P, SA8255P) with wakeup interrupts disabled. Automotive platforms can enter a low-power parking suspend state where the application processors and thermal mitigation paths are not active. In this state, waking the system due to TSENS threshold interrupts does not enable useful thermal action, but it does repeatedly break suspend residency and increase battery drain. Allow these automotive variants to keep TSENS monitoring enabled during normal runtime while opting out of TSENS wakeup interrupts during suspend, so the system can remain in low power until ignition/resume. Signed-off-by: Priyansh Jain --- drivers/thermal/qcom/tsens-v2.c | 8 ++++++++ drivers/thermal/qcom/tsens.c | 8 +++++++- drivers/thermal/qcom/tsens.h | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v= 2.c index e06f8e5802e8..2ee117aa91ba 100644 --- a/drivers/thermal/qcom/tsens-v2.c +++ b/drivers/thermal/qcom/tsens-v2.c @@ -306,3 +306,11 @@ struct tsens_plat_data data_8996 =3D { .feat =3D &tsens_v2_feat, .fields =3D tsens_v2_regfields, }; + +/* Do not enable wakeup capable interrupts for automotive platforms */ +struct tsens_plat_data data_automotive_v2 =3D { + .ops =3D &ops_generic_v2, + .feat =3D &tsens_v2_feat, + .fields =3D tsens_v2_regfields, + .no_irq_wake =3D true, +}; diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c index d5d880a2aa08..71ab62e927db 100644 --- a/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c @@ -1169,6 +1169,12 @@ static const struct of_device_id tsens_table[] =3D { }, { .compatible =3D "qcom,tsens-v2", .data =3D &data_tsens_v2, + }, { + .compatible =3D "qcom,sa8775p-tsens", + .data =3D &data_automotive_v2, + }, { + .compatible =3D "qcom,sa8255p-tsens", + .data =3D &data_automotive_v2, }, {} }; @@ -1387,7 +1393,7 @@ static int tsens_probe(struct platform_device *pdev) =20 platform_set_drvdata(pdev, priv); =20 - device_init_wakeup(dev, true); + device_init_wakeup(dev, !data->no_irq_wake); =20 if (!priv->ops || !priv->ops->init || !priv->ops->get_temp) return -EINVAL; diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index 83a8f3580ed0..f4bb5ee9a2a8 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -531,6 +531,7 @@ struct tsens_features { * @hw_ids: Subset of sensors ids supported by platform, if not the first n * @feat: features of the IP * @fields: bitfield locations + * @no_irq_wake: if set, TSENS interrupts will not be configured as wakeup= sources */ struct tsens_plat_data { const u32 num_sensors; @@ -538,6 +539,7 @@ struct tsens_plat_data { unsigned int *hw_ids; struct tsens_features *feat; const struct reg_field *fields; + bool no_irq_wake; }; =20 /** @@ -675,4 +677,7 @@ extern const struct tsens_plat_data data_ipq5018; extern struct tsens_plat_data data_8996, data_ipq8074, data_tsens_v2; extern const struct tsens_plat_data data_ipq5332, data_ipq5424; =20 +/* TSENS automotive targets */ +extern struct tsens_plat_data data_automotive_v2; + #endif /* __QCOM_TSENS_H__ */ --=20 2.43.0