From nobody Mon Jun 8 06:38:45 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 1F98C37701C for ; Mon, 1 Jun 2026 06:38:11 +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=1780295893; cv=none; b=jXNtCVdzs7mFL5DirxFGmRSZ7NQEBJ15VcS4wIol79l9YOMp2VyWu4KumdGapVPBogZjsZiDcAWV5/dwiTQ8evnP1ZKXWWEKjl5Q9B5gnOgF5P2uiD7AplZEKomg+Hf8URaudCvUBdmihFE0lb4lBTfiuJQ9pyB0tNXr5tcbow4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780295893; c=relaxed/simple; bh=Y0JrFTV5T0FffiMthuYxPMnO5mjs0Hi/IfUnmNg51OE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NDF3POzYNVEmyx+8io97LAFYWCqon83FtoYkoX/JJb6zxovS0Ho5aOnHPf17v60sv43lQw05A8QYfH+havbm23mSY017B736ofZ+C+vj1XjeqaL5FwagQ1jvgrWco6SxRBcVOnxetUdGyoAsOcK5IeTR2SVVNseSvsMQTb/1W/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=Kn99TrSV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kvdk5GRb; 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="Kn99TrSV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kvdk5GRb" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64VMgux41445571 for ; Mon, 1 Jun 2026 06:38:11 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= CxZPef7xjYmwBeDaOPNB0KkqX4i6Nl78lGfvpZ8AaMU=; b=Kn99TrSVqxqpFWY4 V6anuhg0bpzlUKNNPGCPY2uKERLi3rOG1GYkDt/laOfifDrIewDIxL6anESW5//S oqq235RzKbzLQD8f2fdBuvdcGIUpvrczus47otEuKotYO0pld+aSCoi6dql38fdo TaSa25IS3RwY89bP4aDL6xN3eKhWoBOf1wnLTVCT20zws+VXSCXQmaOxQJsRax8n JDlzmXwnrDHm1PUFVOfViKc9XkrBMqqjWXuBlhWV8xedFScOSVWz/GrkHgAf1y36 Ed1SzYIBCN9fD6TO9xTPE3/2W5EBJaCuDsSXDz5V0u0th6XX6MxDbdxBQBQaWy4b VOMC5A== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4efr41e45b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 01 Jun 2026 06:38:11 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8423970cb30so814230b3a.2 for ; Sun, 31 May 2026 23:38:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780295891; x=1780900691; 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=CxZPef7xjYmwBeDaOPNB0KkqX4i6Nl78lGfvpZ8AaMU=; b=kvdk5GRb89b0kJY75C8mx7UROo81deAvP+A4UQL2iHXeQcTR9mhiASUpSZY6OeToZp pzRYBO704pStd/sx/uBWqWmydFWYszzx4yZnuP9XfR7iat8We/AwsE4gLtl1hjxoCxb4 XWvIDsn9yqEyR1YZ2UMaRPBhuNHVvQV1oa/15cM23uQd66YaQ8TMfDTF60m1rCS0xG55 U76CCIpFzpuwaFngmRT/1neegdnwFmVlYuXVOAnlLUnDICyt7NtWNIC2jGk1b5geT4Uk va6ZDCBCzpRyniUT9eJDEnCmU+hdETb/iUyYofox+4A65mdVcqYDo/C5+ydI4sArsSl/ qGAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780295891; x=1780900691; 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=CxZPef7xjYmwBeDaOPNB0KkqX4i6Nl78lGfvpZ8AaMU=; b=i9+qUrfTOxr5+1paqv85PPg6X4rkt6/9W73AcDLqZCON3ZyKGsU+KUWiUXAh/CeP40 frIbTERTWzIuq3/yJVT3sZhLXOkw338Zyz17838qnWMbLvREXp6lN5BtmqlBDwFX80bl Zjx7R7NMVH8+oMPR3Fhu+cmCt/DgHJMEbewhf8naDFra2Nm0lLZhaWz0rCp+88+mcjhK TdTvzrX5s42aQp93ot6ydVB5ZIgrd5oLIp3krwwLeXo5HApJ6eQTOUsO5AHM0s7im68i 5EtsFZTdwfDq/YQk1HYTdNVVAmi46IDeqE8gdP77wU5mAkf+hvSMZKA2qjLavPxllJZ5 84hA== X-Forwarded-Encrypted: i=1; AFNElJ9gQ9TZ2AJQtbYr0N56C6q7y0ZH1bQ9Ifpb2ODcpt5MiMUDK3DdPqGbKKKi3o1ezlxOMURAq5zp7wj3tJM=@vger.kernel.org X-Gm-Message-State: AOJu0YwhJ6wLShha2fYgeglvqTFCjvrnDum4czgnaWxvGQk53hnuqp0c xtz65HWly8JJuWYaNiAYFHLtLSsTwMhaHQxc0ITCLa8P0A/jAfUb2NUDp3zM7HVHlwlAme+X7XH nIn15NWOfVeC0iQhtzf3L2Uh7dALqrCo/IQBzy2tL63KwzWclJ6FYrWrVAA519C5JaUM= X-Gm-Gg: Acq92OG0qSBPrkfE6p/snTlDs7v7rOv3k23D2KVwkP4WXHy04cmKiwfYNpaMmFRk5x4 2DFyJFOS3l3UoeV2rNgNl0F0yZV3OxRvC2OVI2pSqQzUbxncXAAnZ861F5uLlxWRsGUroEIC00U 3ly/oAToTHggI+9Sfx8ytHR9+JmoRIZu4ZZSIH1QpxdMi0EA2OfJTSVI0fZKAs7xkyTN9Bj8E87 Wo9tL2L2s3oTX7aHWpo+pduiBNgKmrciEslRLan+D8YYPALnsMaq1PKlbRUrVWwRqF2M3U2f+oi u2DuGopKy1/lYqXhM/lY89PZU3pdwqC65721ZzrtQ2YN39LygrW6vCfzfI0IAYWtR5eE8FGqitg HL0qDSNDmO+dg2iKpjp12Q/+4XGk3tjCYItLrxpLK9IuWgUCwapwEbjM2Z14tGu/UFg== X-Received: by 2002:a05:6a00:908a:b0:837:e9cc:d46e with SMTP id d2e1a72fcca58-842253ed743mr8613000b3a.21.1780295890582; Sun, 31 May 2026 23:38:10 -0700 (PDT) X-Received: by 2002:a05:6a00:908a:b0:837:e9cc:d46e with SMTP id d2e1a72fcca58-842253ed743mr8612972b3a.21.1780295890057; Sun, 31 May 2026 23:38:10 -0700 (PDT) Received: from hu-priyjain-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84214c9252bsm9321358b3a.39.2026.05.31.23.38.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 May 2026 23:38:09 -0700 (PDT) From: Priyansh Jain Date: Mon, 01 Jun 2026 12:07:56 +0530 Subject: [PATCH v2 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: <20260601-tsens_interrupt_wake_control-v2-1-ce9570946abd@oss.qualcomm.com> References: <20260601-tsens_interrupt_wake_control-v2-0-ce9570946abd@oss.qualcomm.com> In-Reply-To: <20260601-tsens_interrupt_wake_control-v2-0-ce9570946abd@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=1780295882; l=6214; i=priyansh.jain@oss.qualcomm.com; s=20260515; h=from:subject:message-id; bh=Y0JrFTV5T0FffiMthuYxPMnO5mjs0Hi/IfUnmNg51OE=; b=+RGFVW+oPzJbQpCxrIOFCGwa4Inv02vOLnFFKXCdx0pmy1EaO6ms0vyl7/9LOxPzZqtM/vdBs mnNGU1VqYHDDrK3dUwcpGY43G8LpswzxFSaR8sKZqXP248UhQcS36mJ X-Developer-Key: i=priyansh.jain@oss.qualcomm.com; a=ed25519; pk=xe57jjgIoTuNHN/Dp00kZl1mAJjmROaH7JV9sRxEoEQ= X-Authority-Analysis: v=2.4 cv=fOEJG5ae c=1 sm=1 tr=0 ts=6a1d28d3 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=Y1N8Ec-qMYIBCvTlKQUA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: -gG52ujtcYKtBT-IcVOL3H1cdEWYuFuI X-Proofpoint-GUID: -gG52ujtcYKtBT-IcVOL3H1cdEWYuFuI X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjAxMDA2NCBTYWx0ZWRfX4qz91vRR3T1L FU+x/kEXmQtn1XQYQoQ0mkxz87cmbt8EN6IP+s0E+f3NAg6crcAWM1TWZLtlrgLjziqBc3Gv0SA PA1nsJFmri21r59LslJjhN0iqPdoQptnzfXySj5pHObZGxx1j9HWjpUwlgTJJNfjKZHxr8wtIKy jcD4f9o8qRwGFFcrAIB1Op5yCMNVSwuqkN1T5MRNjRLEynQUOuH/Yfqcf8HKJasMwgi8jwmrcaK jnnkecOfpMAo7tMKeDhvrSov+/erzWMYcvkqskhfrgXgsWw8OLqG8JNEBd9gXe6ugckwwJJn+hK mc5BfAaCFnItUijwKJdpGUlhn1jyiYm1wJMjLUqr84x3aTGQs852iFlGBHdn7V8bOgR00QSw5DA Ef4gr8XvxDGcDNKPM2q/DikQf/Xn1ZtPUtFo/3s/AFfw1NEU9TVZm0S2lQoJpWw0t1i25S+VO1e o23OSybT15LbBOOnFqQ== 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-06-01_02,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606010064 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 | 64 +++++++++++++++++++++++++++++++++----= ---- drivers/thermal/qcom/tsens.h | 18 +++++++++++- 3 files changed, 69 insertions(+), 14 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..5210985b3767 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; @@ -1205,7 +1213,7 @@ static int tsens_register_irq(struct tsens_priv *priv= , char *irqname, dev_err(&pdev->dev, "%s: failed to get irq\n", __func__); else - enable_irq_wake(irq); + *irq_num =3D irq; } =20 put_device(&pdev->dev); @@ -1232,11 +1240,38 @@ 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) + enable_irq_wake(priv->combined_irq); + else { + enable_irq_wake(priv->uplow_irq); + if (priv->feat->crit_int) + 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) + disable_irq_wake(priv->combined_irq); + else { + disable_irq_wake(priv->uplow_irq); + if (priv->feat->crit_int) + disable_irq_wake(priv->crit_irq); + } + return 0; } =20 @@ -1276,15 +1311,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 +1381,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..5e2da4e0d51b 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 06:38:45 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 568E4377567 for ; Mon, 1 Jun 2026 06:38:15 +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=1780295896; cv=none; b=plwksZLD3BxmkFghB9xvT91lbyqZ409nw7dNA7v76RWlHQlzjOd3Nk0vg9GBJZ2Nq8ScZ3E9gUSdde3AHC6TH7asGXCPFzozXOG3uzlaT7ZOnyct2u+/y3v8Twdl4UHr+mEMy3AsEhoAS0dm69eNgyMYoNz5JLR4+G/teQ/Ydjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780295896; c=relaxed/simple; bh=MKOSKfy5HVKspOCH3nNHGWVz9K6OmlhyitqwNsphRo8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hXxTeDkEvR0iPok5dA7Im+Dc+wyIAWHsxNkRRRnyGkHbVJ7UD3cknwEk/xOewDUFJmMg1bTEpSJWygmXkN8CuRQ2+e70fzaHsEg3df6FDroN6phcAyaSVCx5y5b1zVLWcwWNTN62romYV5g/tGz0LEJwy1Sh/6RtI079xOO/B0A= 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=fo1bvltx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LzPBv5rr; 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="fo1bvltx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LzPBv5rr" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64VNacN51553157 for ; Mon, 1 Jun 2026 06:38:15 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= Q+ZAvj5oFG/y4ZUnZyUxx7ksRw8f9xhtX9EZCxAOa6A=; b=fo1bvltxnWVYxHTK pcSArR0Vgty+pXAO/s1H/DeFLPs9z7JYv6IzJtoQbAi0hvFPkYOSVC65f2FhnzmY oXYhvfd1m8l9t50Q7iAmgmEQXhcCNup1YI/ZdA9TYvSJNVmRoldPcWxe28UL6L5W yz+8P7VkdANxeMHuuF4H4WXQWZd/QaFwW4ycPv9yQaxMqfngG5jT1wvuYaXqmrHl 4RhAFsWikQ0a2xdDSxUvUtYzbQb3QUyamtmPe9Y4JEL8ggwmVuCvDpG0zd0wA4cu 0bbFX8oVAzeyy7wh85dsStGDhEDnukOyaFuwE3iQRKefQYTLR3nrwpFXNbzw6XAc yViOdQ== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4efr41e45w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 01 Jun 2026 06:38:14 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-8423efdbe6fso728079b3a.0 for ; Sun, 31 May 2026 23:38:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780295894; x=1780900694; 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=Q+ZAvj5oFG/y4ZUnZyUxx7ksRw8f9xhtX9EZCxAOa6A=; b=LzPBv5rrrF8VguoSPuuIznLlHEm4372ToruMeXQmyOUvX35ZnpsR9LcE8tttfttu97 tohD24vpkYiDmTMVtiKp2IM23kbLJQWJcqBDUQFVoxwm+c0gKjnS6PyEGR9rMGuGAYC7 aqK8ZWf+3IrrObjyd1wJIJuLTtoPRdkI6cuNP7g5nmNhKi8aZKsXZ0Q8n6VKX/hYrDtl hppi4FAkIUr3WWxyllIMmQ9C2rTVwjmhuMM9+mLLnSGWb9KYV6Ulm5oiyg4xnsYBGbR2 EiGn4kUR1n76AsvWdZ0ODIBHbl2LP2oUbBqi0XtOCsXYPWTm6vZSBHZfdrKEBbtQ7f04 qQNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780295894; x=1780900694; 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=Q+ZAvj5oFG/y4ZUnZyUxx7ksRw8f9xhtX9EZCxAOa6A=; b=KWOXHKZyF072KZe2wecJS2Nj6p41lZROJayZd8YbjF+RkMT9KzhOaKGRMujh9+8Nz2 sX+0UePah5zZwheenjWxwYWV9sOmoPPXzyPb3JTaCMqRxUgGXyhsgV1DVdOv4nMxkeTP X2cLnbNginjEaCVPCnWdHGP+rWRYfZcJvH83zbZDqmJL10O+mv76TwlSFWghB4UoiNUf 7T8TTTjb/NYJ8iVzogVsGWEiir/QSgyNGU14EH/Bwye6zQT/0Ewe/Agtn7PxZPax0sg0 /t1+RXmJlZAbZBkGWTDsDLMgIQVddawCnztzU9FZiy2RRpR9a+//IQi7/1rt5sbjjX/G Hvew== X-Forwarded-Encrypted: i=1; AFNElJ/XIDdxYkCj6OGUqz4CCddme/x9AgsCCZGLjqo91DafeA3/4s18SP5uxCCCzL4pfEr7IS3TkITR0GQvPfk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2hTg7hx23VABnELwWU6fq76783T2cJW99c1SIhTwj8UtQnw4N SXZ/oddIh35Up7PTbJJxZftksqLOs0FC1V+ncK8dEjBV4We2EA+RHbGNvU39HDGEcqxrO7mnMtJ ELSuM40sNXWyBC3q949BJheyWymSqewmE8gDyPE8qKkB6rg8/FOhqmMLiLW6yeS+F4YE= X-Gm-Gg: Acq92OF2tzdGdMTe8PKBGbpIE/Nqq+QiUf1J7qrF4uzqp25CrSdU4lJMe8wmPYiUmr/ iFpZg4o51JIRd0MOuOfGhnPBcmS6pEK8EqrkBJdQ4nb+n3BNulUqCLmtrAcff1yEtWSLGI+43L+ Ef5bAnBhdvX09WO/Jb1rKKunZiW3yVfBVkQ5WzgeGdjtIHq+Hk4TAjxCZyqAW7jW2IHsCQYT3Pn yTx3ztMiQd9/Adw2EwfXaA4uCCMrhQPZX2OkqwvqvUFRtnp/6n5ViudecHgYDaNX2Cb9U/0mrcO hkD/XIAO2MR9BDXk40MKVbS3YBoE+nuS+rplybuNOP2zjD1FoA+LJbBkCJYXJC6cLpbSQvv9mxN 6acknvVnTztImEMT1OfF2jK6bTLLky+bfkyOwsrPSgtxYHyG+JRrE8K93wkgRjEWzRA== X-Received: by 2002:a05:6a00:2186:b0:82f:1b1b:e166 with SMTP id d2e1a72fcca58-84225490c67mr9382047b3a.33.1780295894044; Sun, 31 May 2026 23:38:14 -0700 (PDT) X-Received: by 2002:a05:6a00:2186:b0:82f:1b1b:e166 with SMTP id d2e1a72fcca58-84225490c67mr9382027b3a.33.1780295893597; Sun, 31 May 2026 23:38:13 -0700 (PDT) Received: from hu-priyjain-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84214c9252bsm9321358b3a.39.2026.05.31.23.38.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 May 2026 23:38:13 -0700 (PDT) From: Priyansh Jain Date: Mon, 01 Jun 2026 12:07:57 +0530 Subject: [PATCH v2 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: <20260601-tsens_interrupt_wake_control-v2-2-ce9570946abd@oss.qualcomm.com> References: <20260601-tsens_interrupt_wake_control-v2-0-ce9570946abd@oss.qualcomm.com> In-Reply-To: <20260601-tsens_interrupt_wake_control-v2-0-ce9570946abd@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=1780295882; l=3513; i=priyansh.jain@oss.qualcomm.com; s=20260515; h=from:subject:message-id; bh=MKOSKfy5HVKspOCH3nNHGWVz9K6OmlhyitqwNsphRo8=; b=t22Pgs2NN0JJK/dfiohdEJGJBmzt/RmIaKXEW/bqpEyFcV/SGVIQFmimoAg3k/5Bnyi/zrPWe mTylDvkmCGdBum7wMBxPAAy+IHQVCIXl0YyyblwNFXa7EOFbFR/ayTh X-Developer-Key: i=priyansh.jain@oss.qualcomm.com; a=ed25519; pk=xe57jjgIoTuNHN/Dp00kZl1mAJjmROaH7JV9sRxEoEQ= X-Authority-Analysis: v=2.4 cv=fOEJG5ae c=1 sm=1 tr=0 ts=6a1d28d6 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=PJyjg1ohnCiW5JLUlNMA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-ORIG-GUID: qBYholL65Z4kgyDpwwS_PC0Pq_4-qhLd X-Proofpoint-GUID: qBYholL65Z4kgyDpwwS_PC0Pq_4-qhLd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjAxMDA2NCBTYWx0ZWRfXzWIBikUk/MPd Pfb7olvAv4avbyjwYHjY2qIyTDEj4UjECfICWbmlA2azPI34d1uBdCVDc8iPmh887XOOlK3bSVF h7zShDze2N005aNvJ5Vk78EQXf9dVNRfE4dTN7v5Z6K3lehXzcPXKrFS+pUlKRwJ+pD6yhzvT7z X7Xd7akQAKsKUHGvtL05OLOsRkEHs2l0fwAt+LB5+ebZk5DbPEnovnUTxfxySIQMk05SwrnFIvm 0oxfZH18/Wb3lPPWpcRKOSp5eOSqrL//igyK2f1nuKfugHX/kMoXbVsZuT0AbZr3USj/RnNvZh7 pZ4IwciWYvH8bbpe3Sdem29lLrKbfLCXEPe2cvjs12M2VSPxHcj1fE3KEBWZ1kpmGqXyRpdRlWE sTZLkzYT9UtfQciCLiRKgQKOxabfZYZy2h4hM0UO4Zcj5T6ROW8QciX+dkRHInSG5+98uJQloRd 1Ho7JcqvUC8Kvc0H0Gw== 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-06-01_02,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606010064 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 5210985b3767..6237e000640b 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, }, {} }; @@ -1381,7 +1387,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 5e2da4e0d51b..d20d514bf8ce 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