From nobody Fri Oct 2 13:07:18 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 9B9F43E5A01 for ; Fri, 31 Jul 2026 10:34:28 +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=1785494082; cv=none; b=qdnvD4gq9WTUupEyL4MrZxVXvs0Xf0IhVO6eYAs8wzHi7cMxtvw7T6JopngPsjEZ28PZavsWrVeR1j58ajJy53aaWnXcyoQVD0QxgZKElXhaUXdSH7KZisCbZKOA1zfAumPaHPHIsFPs60ECO4XcEAkAVziy2JUPsbPxWkBrSa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494082; c=relaxed/simple; bh=LjX2uu5uRns9aB9+huzFuwyv8G8eDp/UqYn/3VCYmRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z/26vTUnX0BuCKAV5GvcTCfP1M1wi7OLZlqOx8HMmfrdD3F9U3wWoOQ7SmbfSWTALSXJP14UO9a9K/lBJoPClaV/Q1LhKqwIyR7RYS5+VMIl5sJzs2r5v/vD9whYH8DGGKvBeBz17kTEcKEKmu5vt7940flR2JffEsEvJCgaaPY= 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=VpAZ9TyE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UycNZF4n; 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="VpAZ9TyE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UycNZF4n" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC68k3603278 for ; Fri, 31 Jul 2026 10:34:24 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= pYF9h6alUVBD7tym5vNqQYIx2ehof1mwtVNRI9CjH2w=; b=VpAZ9TyEoc15/jBZ BcEWFlksd+tNz2xLa5zhh8EJLwlzJlClxyh22KrknxFZ2NGmervUkceyJQSlYXYl jwdhzgkZN+vPQ7smfn/hRKxtAfaj2qAN5dR1PFFe5B0YBsL/IQBE0VXAh0UBaFXe 6e4iAAKnaRAngoPauGatFB5fzAOhF2e9727ns9t5MCRIKVFURNrGvPCovI5/zrgr OzJzUZ5xAc02HLTvHuPCPjmKUAH1SGcyyJkrFg1JyrOjqQPFI5ERy2nQDySffj0I FBQe4ZrHXP6pRrfWwTtHSI6oDJFM7qXhha2G9cYdA0TJfu0CrSK4CduOhtyCq4Yb 6ys3gw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frsfb04hn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:34:24 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cb6cf425e86so996969a12.1 for ; Fri, 31 Jul 2026 03:34:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494063; x=1786098863; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pYF9h6alUVBD7tym5vNqQYIx2ehof1mwtVNRI9CjH2w=; b=UycNZF4nGPTuyW9c8AYwlH7MUX6qqsT/Is04HTtItzqo10LhEAELxtTgV96SRR3NxB Le5Z5yntQvszxFJoDbzKlwkcTMt3yXWXGHJMyUW2m+HSJwjjq2hYbM7RZ9nEjcB3ZZbS rmunmWCdTBaOaajXtVcwgw0r+4f6ELGYbOufWr1VdmgbNRDhTmO9PbKn3glwM+n+uCUk HaT5EvB5a7FWIneU4Ev2xP/43HR5tsN0g5Be+h/NEPgIZ7jcFI185BWudA7ytKc17oo+ 918EMpKPNK+PRXY6lbZzC4BXRHWDLnNQI0SOaabGDW+y4+Jx7v2SrQgvHTa1WCj3DQuE CwSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494063; x=1786098863; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=pYF9h6alUVBD7tym5vNqQYIx2ehof1mwtVNRI9CjH2w=; b=cQQ1lJKNa2eXZpe/KHGddanLbMBtlz1RQNnG2Qp8qn248tlBYYgd/8GJy2cZONt3ij Kh+GXch3U0SM7BxaP5LQhKb4qd2Hp4EdLbdZUIZVKeACfF4Vpf0k5eQk2ePBivbpjMGO tlEsv19Z4PbRNZNP9nNrq293OU7TbOclRt12O+6Yq5mxUadUtcrI7JQgd47aL3SRSe4z U5aZ06ntWIRJ9qeMjBRex3ItXKEnoK+bw1pGbBO1ZvUY5I5nkmhCU/XLv4JG14vXt4ID 4eIHAepD/iXd3G8yTyHKtBi4b/mjbWE61MpysxPtqozRco+qD1WPBFAVba2mA3NEFm2E hzig== X-Forwarded-Encrypted: i=1; AHgh+Rp4891wvWO5/ShUQcjCH4RYZgVx62yWrmHvGQxelArtBvBzzE/aT0QVj/t/GU3wOVmgnfH0S2y4cBr0Qaw=@vger.kernel.org X-Gm-Message-State: AOJu0YwnWdu48g/DOn6IA3v4tfeMATJrxn3AaxuVCajjOYuHOetIMAmj s0yTRDLN74ql1BG8pI7NsozgPcKDLhMuz86P5KSkoiuQgzbZMtIktdXybPKP3V3RMEcnrASDzp/ VX1fshNHZNE/m9VBWUDCoX9QvITRXoeHl8V9CwpEm8TsnkR9zJeK6xkIBmYzkoVEuyok= X-Gm-Gg: AR+sD136cBejqf2H6CLMFCfU9VP1YtCOzis9ZOTje2hv26t6MHUf8L8egzQRmlgEVow Ok/Yc+b6lNDIKDF5752jR7OVrK3km/YqJ7jLRqU4+9IR4KAVN5RoZINldwldWXYBN+97ZNz6qeQ P+Ml6yvQdQHn8i5ZnIaP29HkhMG3FNaG3M4xxz3NbC8quuTK9vwa0N0Wl+5knqsrTHOLMFRGr4H Cn78/RPyW1LZf+RQqFkr9HnaRJinr97x+29k8rWhlWySVzZopMhWlctsWOmG5FdAAeYabmPR0A4 AY28PGMe+9UqfFwO2crxqZluNB52t5QuWZhrzJq6NNIyoAD6syuYHXS14pCa1uWL6tiVnEs+bBa cfoHx3d08p1axaURmuNNR8v5jF9clbQ== X-Received: by 2002:a05:6a21:790:b0:3bf:49c8:f7b with SMTP id adf61e73a8af0-3c91b08f204mr1566998637.13.1785494063368; Fri, 31 Jul 2026 03:34:23 -0700 (PDT) X-Received: by 2002:a05:6a21:790:b0:3bf:49c8:f7b with SMTP id adf61e73a8af0-3c91b08f204mr1566958637.13.1785494062924; Fri, 31 Jul 2026 03:34:22 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:22 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:41 +0530 Subject: [PATCH v7 1/9] dt-bindings: remoteproc: qcom,pas: add #cooling-cells property 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: <20260731-b4-qmi-tmd-v7-1-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=3338; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=LjX2uu5uRns9aB9+huzFuwyv8G8eDp/UqYn/3VCYmRY=; b=+Ty/Bcvly1jI+WWQz/dApbymnZLZER2rXS661XRs7pe3SHqPe/N0DFN3Z0fT9/uJVNWsaPp1W JJRfLpyXyJSDyCoaqmH+yLurQ5VxvNfbF8+46zkOH9FFdOLqDqrKLNM X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX5oIxfq3pD1hh qLE+zi/WvTtB8wJ6XxhjUbcmCIvQi84y8AaTfemL7OtolP+gsR94YmS/pFLJEq3iTZyG/Czbi3A VFo0ATYYfd6MowX7Y+3vjGF7otlrkt4= X-Proofpoint-ORIG-GUID: hqelTrtna8KQtKXGErZu28HwWb_6VT3F X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX7aiq2KYPLDXM fnMrptF84TlYUjR4d0jE+09RfAaRtCOgaiz9MxRD7kwzArqylArw7rsXjXiVFarZvBd4HDOkv5J 6pAg2wFdz/r/+0Om3mfJuHCjRX00EKBR9qr1UKGqac7hfX/0hc0H235Ymd8FxiZ3KlZREz4PpMg 1XvFhUhAg5I6s18vg9NEop6anazWXiZVw5lxshn1HIMRs11Uk8DDDYBWk7/eHVbWp1mOGizJmMZ gbnUgLaOLpJja1OBbXO66txIEUQlaE41HyHLQkDcpkrONZZwGGdwcF3S2g7X3UH6WlqPtmerp2C 0neq7pzOPJXJJlT2eVPq3eMclE4Pnu+1mdGLZQypENlOpX/SeWy3UyzAZXpcvKH9yUNUhkLFE0L RX8uNIW52DO+q0A5HyeIvTDYPka4E+IJ2gmuGd1m1XowajJQONUxZ3M7uccg4EhOg3Y8LImhCfH YRF1AUsBf9lBWJlW/jw== X-Proofpoint-GUID: hqelTrtna8KQtKXGErZu28HwWb_6VT3F X-Authority-Analysis: v=2.4 cv=Ud1hjqSN c=1 sm=1 tr=0 ts=6a6c7a30 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=T6nhelsJTOTiISQcNXMA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 malwarescore=0 clxscore=1015 suspectscore=0 phishscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Document the optional #cooling-cells property for Qualcomm PAS remoteproc nodes so they can be used as thermal cooling devices via the QMI Thermal Mitigation Device (TMD) interface. Qualcomm remote processors expose TMD endpoints that support thermal throttling through firmware. The cooling-device specifier uses 3 cells: <&phandle device_id min_state max_state> where device_id selects the TMD endpoint (for example PA, modem, or CDSP software mitigation), with constants defined in: include/dt-bindings/thermal/qcom,pas.h Example usage in a thermal zone: cooling-maps { map0 { trip =3D <&cpu_alert>; cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW 0 THERMAL_NO_LIMIT>; }; }; Acked-by: Daniel Lezcano Signed-off-by: Gaurav Kohli Reviewed-by: Krzysztof Kozlowski --- .../bindings/remoteproc/qcom,pas-common.yaml | 9 +++++++++ MAINTAINERS | 1 + include/dt-bindings/thermal/qcom,pas.h | 20 ++++++++++++++++= ++++ 3 files changed, 30 insertions(+) diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.y= aml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml index 11faf655f530..f75cab6b4ed9 100644 --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml @@ -77,6 +77,15 @@ properties: channels and devices related to the ADSP. unevaluatedProperties: false =20 + '#cooling-cells': + description: | + Cooling device with three cells: + Cell 0: Cooling device id as defined in + include/dt-bindings/thermal/qcom,pas.h + Cell 1: Minimum cooling state + Cell 2: Maximum cooling state + const: 3 + glink-edge: $ref: /schemas/remoteproc/qcom,glink-edge.yaml# description: diff --git a/MAINTAINERS b/MAINTAINERS index dcffe9fc54f6..3f1e2bbf7099 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3423,6 +3423,7 @@ F: drivers/watchdog/gunyah_wdt.c F: include/dt-bindings/arm/qcom,ids.h F: include/dt-bindings/firmware/qcom,scm.h F: include/dt-bindings/soc/qcom* +F: include/dt-bindings/thermal/qcom,pas.h F: include/linux/firmware/qcom F: include/linux/soc/qcom/ F: include/soc/qcom/ diff --git a/include/dt-bindings/thermal/qcom,pas.h b/include/dt-bindings/t= hermal/qcom,pas.h new file mode 100644 index 000000000000..f603bddef9a8 --- /dev/null +++ b/include/dt-bindings/thermal/qcom,pas.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ +/* + * Qualcomm PAS remoteproc cooling device indices + * + * These indices are used in device tree cooling-maps to reference + * specific TMD devices provided by PAS-managed remote processors via QMI. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ +#ifndef _DT_BINDINGS_THERMAL_QCOM_PAS_H +#define _DT_BINDINGS_THERMAL_QCOM_PAS_H + +/* CDSP thermal mitigation device id */ +#define QCOM_TMD_CDSP_SW 0 + +/* Modem thermal mitigation device id */ +#define QCOM_TMD_PA 0 +#define QCOM_TMD_MODEM 1 + +#endif /* _DT_BINDINGS_THERMAL_QCOM_PAS_H */ --=20 2.34.1 From nobody Fri Oct 2 13:07:18 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 907CE42122C for ; Fri, 31 Jul 2026 10:34:37 +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=1785494096; cv=none; b=B+8aQ20gXl+maH8vt6bixB84V+xbgxZbuaoBjiLZC54n7w2RXxLUPghC8aQNfN6226tZhJ52it+PEQAwdKYP3DQUq1vAXRTB4KicEMmcY2ba1chf6OLwySp5NbIZNjfsejoiOsM1auX+9HXHwrMZQlKjbZ80ciHj1hVX1JIfzTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494096; c=relaxed/simple; bh=//hcdilNK4+hb1O7S0MffSQj+GJF1/0g4aw2cr2Xotw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BM2Gb1L0j6FvBb9RU9s4u84rDJISNxG/12rvWzkGfUMlRAs7S4dxih38ENjeptJFCjS1PlHwMk8ZGnvCtm5Vu2OPNljTq+Ed6Bl92aDARZFuHWESHDW2LlFfOsOSvSEzKTimCLsVhlU+wq0yysOsYyDnhAuNaT0iLmR5sh7V9ik= 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=H7T86kHI; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B48ldjxv; 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="H7T86kHI"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B48ldjxv" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC2gw3512406 for ; Fri, 31 Jul 2026 10:34:32 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= YMkSYcvcLtIsMVdftDVSPlbkrsjpCCFB8CDMPDO4E7U=; b=H7T86kHIfftGEKTl T8saYwoU+aaqpUT0uqs6Zd74ZLIqiu6d4c1FxMqHPPWOIG0uVhm7RIyd+QFOhnKp EDZ2oXomyOMl3lKGCBh3YsmFYlNJcmyn33X5+A4GNUUFTMtPnquNO97ZPCcnWQ/o CYGWlgJhU4e5aFCKYfh6SBBGxQhH13Du5Z8CQkREezMSt6buJFVY3f9Jh8xNHH7L mJENgpfVkVBgDMUw4dwREOQ3OLavKuIdOlpXo0wG6A/xzXsv5RWl2a5aoTBamGSx UYffPUj6lTG+0RKJK8mXq95Akodg2XCGjD81tq8SmKHbECckiAiurJGIiq/aB36O N5FtQw== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frsf2g4ec-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:34:31 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cb5cc1e13f8so1038666a12.3 for ; Fri, 31 Jul 2026 03:34:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494071; x=1786098871; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=YMkSYcvcLtIsMVdftDVSPlbkrsjpCCFB8CDMPDO4E7U=; b=B48ldjxvVuPzobrK+GJvyVDcx3odi0vBX0CCdVqPVg5IOGkv/cCC7RKvV+WRwCD1xd xTT5LGG37ScN0j+AqpHcpjRIQZZx22f0+OzDRbAhiDGBOgUDoVlOqMF9TOtFPSU2p2WB bVBXU7JKR9I6rh+7ZKFI4qCY/6fr2C14/9HUpmQ0kE9a8mR2al6JhOBnEOgNX5PiJNXs 6oFPPm6rwd0LNed1Vvj97l3aWth6q8vEBIcNtsGqX3goHu/LDJkTYMzKXRTcO7BVlCzM Pi7tnGCX3Il7zGw5UGUoKK2z/qYuki3meEhovV3w/EM0DRoWLQMBAO5O8kujAm4Y9caN rWXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494071; x=1786098871; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=YMkSYcvcLtIsMVdftDVSPlbkrsjpCCFB8CDMPDO4E7U=; b=lS/xk74tKVfYqBiG69JLY9kI5Xhdfsj4BNB1myw60//7zxdEue3CNOBDiG7zADGsvl dHtySiMqeRGUXwMxSLkJrF9hISnPTrXop0vRikQYs/mpP0SAUpwr9I18tz+BmGHtzUYH hx8GziCQAkYPokxgb+pXS8Kf9Zqx1ztXZWcVMFH/9onhfGdyN8bE3aJd/gq3ySd+DAkJ WqnXMjjOpHgbtpaEAqtbdjNtxuw6XKqdze3BSajwoQ7WTcVw+aKVF3deJHTITbVRQyQO R8rq44Fd9BhNtJOlRtvbPPAy2oUWTB80IMnFT0pNhWHiaxuDsoboyFyH5RWu+6Q6WOU5 a0XA== X-Forwarded-Encrypted: i=1; AHgh+RpneZey+MOq1eCutTRkShAMCXch99tFdoVJhrc9jbineWjKaLfi+NgnpCFVrReeBgXkHKR7aC3cGAp1ZqY=@vger.kernel.org X-Gm-Message-State: AOJu0Yxlvud5yBOcEEcOrdGEEtmLWPis8vj9C1xCLw7DvHhmanfoo/dA fv8D25TOyNh2Oaogj+fFif0smZ5VRBLaZCeoEn92OENjLgaNmmhbpxVZ0SaXuzqcvs2kNAzsbnD gOB0Kx6VS5bvss+93Y91JeyQrsc2RaKZn+Zl4LyWKdq/JcL/JV8ChbKYvVEr8ozzwUUo= X-Gm-Gg: AR+sD13YXSEo9/36n9dWJq0ATok6W5p4C2qn+llxfI8jqrfNtKhBsVu5kjhGur3zYO5 HnQHWJqXpdMoT6ujnGSUla/RLT6Z8xekUwpti842+nuiZmE2co++ZT+UTaBrBFzschvruVVGVo0 T3UCxEXYNRSU/6HY5rdutuDXOFBlZ4mojcjUdEE+h2oP1fS2tWi36a9KwKwPDW6RsYXNCwRoQjc c9RdR6jVC9m1uZoR2gXjcja2i4FmqXHVkDeurlInvIfWodv3oP8g7rzqekjSin+V+M8E7gVOXGQ 6IDu/tjr1w2Pds0OsfTgyCvzPDrMlMYP3saJQuYZXC70U+YVR2r6e5kYnkrkGJy9hCHSijhTYjm zLBQw1FctIRNSPwr5ArXbt7CflhsKRA== X-Received: by 2002:a05:6a20:d80c:b0:3c3:8041:89e3 with SMTP id adf61e73a8af0-3c91b46400emr1470349637.63.1785494071003; Fri, 31 Jul 2026 03:34:31 -0700 (PDT) X-Received: by 2002:a05:6a20:d80c:b0:3c3:8041:89e3 with SMTP id adf61e73a8af0-3c91b46400emr1470310637.63.1785494070481; Fri, 31 Jul 2026 03:34:30 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:30 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:42 +0530 Subject: [PATCH v7 2/9] soc: qcom: Add QMI TMD support for remote thermal mitigation 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: <20260731-b4-qmi-tmd-v7-2-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com, Casey Connolly X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=20828; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=whd3wSQ/15uGz+x71P27SO/5xAlkPjpK0yriqAijz5o=; b=G+/klgVN840bK2Kkd2/2H1/QDb00jgD+thxlu1VGBKR94StjauUlpIQHGjDHz6GwdiYVBD/9q ZgWMAdq/FNdCtW1ufszRcUbx2APae9XtDIVkiDpOg/Qtp4ygx9AHH+6 X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Authority-Analysis: v=2.4 cv=ev3vCIpX c=1 sm=1 tr=0 ts=6a6c7a37 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=vxRmu5Slt9wj_6SMVmQA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: -zD7olR3rPLP9hxCPTMHBmoDzr2Adoz2 X-Proofpoint-ORIG-GUID: -zD7olR3rPLP9hxCPTMHBmoDzr2Adoz2 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX2kiGy6JH3gvh WgEtvmF77Dg+c6pw0Uk1acmXTANrmlUjPO1xt7M4oTkn09c6/xNQKDzYuysS6jmN3xHwfALjVKo drxAjRkFvIEFbUuga3Alt/A5eIPaPW0= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX1hfqUM6yzAyq 1OVdzOBiBIeYmdsTiAJkoda7KviFAQld7i3FecqQO6J+mbHYdrdyqdO+BbLfOoNxM6UAqkm5MPv RwKk2QP/nfj7OSJ2VXDRRi13jlWIzsiWCAqrgCM+dor2UU3CNnPOoCGfdnrWuHACuh+ewQiXIRs /ua4rhdo/XhBC5VnOfMyaTMmlR4P8vw55qAr64bcjFNDSyj8u8rIMwhe4eR4tQfCXrHmcUkPvwK ardj32PIOgAJpo2Vr/a9AitHgI4wiOLPRts5GC4neh+bdTBm6OFt2TLV8aroRPDPYmnDN1ZAvyY +fPvPoeFQ6ps1Q78MmlUxzskNhmpXpirtm5AOsKMoJlZAnYzgx/HGlyNnti97XuoYJHQp0L74SH cjEgLW6YRGQAjVM2vKRIVgNL4h3fyFReLw8DtS13r3rpt8mHBB3myVhMI2zlJpXGk5UeD3cLrMx CLSKEWBFgfLuEXxxHqg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 From: Casey Connolly Add support for Qualcomm Messaging Interface (QMI) based Thermal Mitigation Device (TMD) cooling devices provided by remote subsystems. On Qualcomm platforms where remote processors expose mitigation controls through the TMD QMI service, client drivers need support to discover the service, register cooling devices for available mitigation endpoints, and forward cooling state updates to remote subsystems. Signed-off-by: Casey Connolly Co-developed-by: Daniel Lezcano Signed-off-by: Daniel Lezcano Co-developed-by: Gaurav Kohli Signed-off-by: Gaurav Kohli --- MAINTAINERS | 7 + drivers/soc/qcom/Kconfig | 12 + drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/qmi_tmd.c | 592 +++++++++++++++++++++++++++++++++++= ++++ include/linux/soc/qcom/qmi.h | 1 + include/linux/soc/qcom/qmi_tmd.h | 36 +++ 6 files changed, 649 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 3f1e2bbf7099..7b347a84883d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22389,6 +22389,13 @@ F: Documentation/devicetree/bindings/net/qcom,ipq9= 574-ppe.yaml F: Documentation/networking/device_drivers/ethernet/qualcomm/ppe/ppe.rst F: drivers/net/ethernet/qualcomm/ppe/ =20 +QUALCOMM QMI (REMOTEPROC THERMAL MITIGATION) TMD +M: Gaurav Kohli +L: linux-arm-msm@vger.kernel.org +L: linux-pm@vger.kernel.org +S: Maintained +F: drivers/soc/qcom/qmi_tmd.c + QUALCOMM QSEECOM DRIVER M: Maximilian Luz L: linux-arm-msm@vger.kernel.org diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig index fd4d4ecd2df0..6f87e85713ec 100644 --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig @@ -319,6 +319,18 @@ config QCOM_QMI_HELPERS tristate depends on NET =20 +config QCOM_QMI_TMD + tristate "Qualcomm remote subsystem TMD" if COMPILE_TEST + depends on NET + depends on ARCH_QCOM || COMPILE_TEST + select QRTR + select QCOM_QMI_HELPERS + help + This enables Qualcomm Messaging Interface (QMI) based Thermal Mitigation + Device (TMD) support for Qualcomm remote subsystems. It manages + TMD messaging and handles QMI communication with remote processors + to exchange mitigation state and apply thermal mitigation requests. + config QCOM_UBWC_CONFIG tristate help diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile index b7f1d2a57367..4544e61c74e7 100644 --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_QCOM_PMIC_GLINK) +=3D pmic_glink.o obj-$(CONFIG_QCOM_PMIC_GLINK) +=3D pmic_glink_altmode.o obj-$(CONFIG_QCOM_PMIC_PDCHARGER_ULOG) +=3D pmic_pdcharger_ulog.o CFLAGS_pmic_pdcharger_ulog.o :=3D -I$(src) +obj-$(CONFIG_QCOM_QMI_TMD) +=3D qmi_tmd.o obj-$(CONFIG_QCOM_QMI_HELPERS) +=3D qmi_helpers.o qmi_helpers-y +=3D qmi_encdec.o qmi_interface.o obj-$(CONFIG_QCOM_RAMP_CTRL) +=3D ramp_controller.o diff --git a/drivers/soc/qcom/qmi_tmd.c b/drivers/soc/qcom/qmi_tmd.c new file mode 100644 index 000000000000..37e6ef19a0b3 --- /dev/null +++ b/drivers/soc/qcom/qmi_tmd.c @@ -0,0 +1,592 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2025, Linaro Limited + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * QMI Thermal Mitigation Device (TMD). + * Provides cooling device support for remote subsystems + * running the TMD service via QMI. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define QMI_TMD_SERVICE_VERS_V01 0x01 + +#define QMI_TMD_SET_LEVEL_REQ 0x0021 +#define QMI_TMD_GET_DEV_LIST_REQ 0x0020 + +#define QMI_TMD_DEV_ID_LEN_MAX 32 +#define QMI_TMD_DEV_LIST_MAX 32 +#define QMI_TMD_RESP_TIMEOUT msecs_to_jiffies(100) +#define TMD_GET_LEVEL_REQ_MAX_LEN 36 +#define TMD_SET_LEVEL_REQ_MAX_LEN 40 + +#define TMD_GET_DEV_LIST_REQ_MAX_LEN 0 +#define TMD_GET_DEV_LIST_RESP_MAX_LEN 1099 + +struct tmd_dev_id { + char mitigation_dev_id[QMI_TMD_DEV_ID_LEN_MAX + 1]; +}; + +static const struct qmi_elem_info tmd_dev_id_ei[] =3D { + { + .data_type =3D QMI_STRING, + .elem_len =3D QMI_TMD_DEV_ID_LEN_MAX + 1, + .elem_size =3D sizeof(char), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0, + .offset =3D offsetof(struct tmd_dev_id, + mitigation_dev_id), + }, + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +struct tmd_dev_list { + struct tmd_dev_id mitigation_dev_id; + u8 max_mitigation_level; +}; + +static const struct qmi_elem_info tmd_dev_list_ei[] =3D { + { + .data_type =3D QMI_STRUCT, + .elem_len =3D 1, + .elem_size =3D sizeof(struct tmd_dev_id), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0, + .offset =3D offsetof(struct tmd_dev_list, + mitigation_dev_id), + .ei_array =3D tmd_dev_id_ei, + }, + { + .data_type =3D QMI_UNSIGNED_1_BYTE, + .elem_len =3D 1, + .elem_size =3D sizeof(uint8_t), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0, + .offset =3D offsetof(struct tmd_dev_list, + max_mitigation_level), + }, + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +struct tmd_get_dev_list_req { + char placeholder; +}; + +static const struct qmi_elem_info tmd_get_dev_list_req_ei[] =3D { + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +struct tmd_get_dev_list_resp { + struct qmi_response_type_v01 resp; + u8 mitigation_device_list_valid; + u32 mitigation_device_list_len; + struct tmd_dev_list + mitigation_device_list[QMI_TMD_DEV_LIST_MAX]; +}; + +static const struct qmi_elem_info tmd_get_dev_list_resp_ei[] =3D { + { + .data_type =3D QMI_STRUCT, + .elem_len =3D 1, + .elem_size =3D sizeof(struct qmi_response_type_v01), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x02, + .offset =3D offsetof(struct tmd_get_dev_list_resp, + resp), + .ei_array =3D qmi_response_type_v01_ei, + }, + { + .data_type =3D QMI_OPT_FLAG, + .elem_len =3D 1, + .elem_size =3D sizeof(uint8_t), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x10, + .offset =3D offsetof(struct tmd_get_dev_list_resp, + mitigation_device_list_valid), + }, + { + .data_type =3D QMI_DATA_LEN, + .elem_len =3D 1, + .elem_size =3D sizeof(uint8_t), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x10, + .offset =3D offsetof(struct tmd_get_dev_list_resp, + mitigation_device_list_len), + }, + { + .data_type =3D QMI_STRUCT, + .elem_len =3D QMI_TMD_DEV_LIST_MAX, + .elem_size =3D sizeof(struct tmd_dev_list), + .array_type =3D VAR_LEN_ARRAY, + .tlv_type =3D 0x10, + .offset =3D offsetof(struct tmd_get_dev_list_resp, + mitigation_device_list), + .ei_array =3D tmd_dev_list_ei, + }, + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +struct tmd_set_level_req { + struct tmd_dev_id mitigation_dev_id; + u8 mitigation_level; +}; + +static const struct qmi_elem_info tmd_set_level_req_ei[] =3D { + { + .data_type =3D QMI_STRUCT, + .elem_len =3D 1, + .elem_size =3D sizeof(struct tmd_dev_id), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x01, + .offset =3D offsetof(struct tmd_set_level_req, + mitigation_dev_id), + .ei_array =3D tmd_dev_id_ei, + }, + { + .data_type =3D QMI_UNSIGNED_1_BYTE, + .elem_len =3D 1, + .elem_size =3D sizeof(uint8_t), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x02, + .offset =3D offsetof(struct tmd_set_level_req, + mitigation_level), + }, + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +struct tmd_set_level_resp { + struct qmi_response_type_v01 resp; +}; + +static const struct qmi_elem_info tmd_set_level_resp_ei[] =3D { + { + .data_type =3D QMI_STRUCT, + .elem_len =3D 1, + .elem_size =3D sizeof(struct qmi_response_type_v01), + .array_type =3D NO_ARRAY, + .tlv_type =3D 0x02, + .offset =3D offsetof(struct tmd_set_level_resp, resp), + .ei_array =3D qmi_response_type_v01_ei, + }, + { + .data_type =3D QMI_EOTI, + .array_type =3D NO_ARRAY, + .tlv_type =3D QMI_COMMON_TLV_TYPE, + }, +}; + +/** + * struct qmi_tmd - A TMD cooling device + * @name: The name of this tmd shared by the remote subsystem + * @cdev: Thermal cooling device handle + * @cur_state: The current mitigation state + * @max_state: The maximum state + * @qmi_tmd_cli: Parent QMI TMD client + */ +struct qmi_tmd { + const char *name; + struct thermal_cooling_device *cdev; + unsigned int cur_state; + unsigned int max_state; + struct qmi_tmd_client *qmi_tmd_cli; +}; + +/** + * struct qmi_tmd_client - QMI TMD client state + * @dev: Device associated with this instance + * @handle: QMI connection handle + * @mutex: Serializes QMI request/response sequences (qmi_txn_init, + * qmi_send_request) during DSP subsystem restart and + * protects @connection_active and @exiting + * @connection_active: Whether or not we're connected to the QMI TMD servi= ce + * @exiting: Whether or not teardown has started + * @svc_arrive_work: Work item for initialising when the TMD service starts + * @num_tmds: Number of tmds described in the device tree + * @tmds: An array of tmd structures + */ +struct qmi_tmd_client { + struct device *dev; + struct qmi_handle handle; + /* protects QMI transactions, connection_active and exiting */ + struct mutex mutex; + bool connection_active; + bool exiting; + struct work_struct svc_arrive_work; + int num_tmds; + struct qmi_tmd tmds[] __counted_by(num_tmds); +}; + +/* Notify the remote subsystem of the requested cooling state */ +static int qmi_tmd_send_state_request(struct qmi_tmd *tmd, int state) +{ + struct tmd_set_level_resp resp =3D { 0 }; + struct tmd_set_level_req req =3D { 0 }; + struct qmi_tmd_client *qmi_tmd_cli =3D tmd->qmi_tmd_cli; + struct qmi_txn txn; + int ret =3D 0; + + guard(mutex)(&qmi_tmd_cli->mutex); + + if (!qmi_tmd_cli->connection_active) + return 0; + + strscpy(req.mitigation_dev_id.mitigation_dev_id, tmd->name, + QMI_TMD_DEV_ID_LEN_MAX + 1); + req.mitigation_level =3D state; + + ret =3D qmi_txn_init(&qmi_tmd_cli->handle, &txn, + tmd_set_level_resp_ei, &resp); + if (ret < 0) { + dev_err(qmi_tmd_cli->dev, "qmi set state %d txn init failed for %s ret %= d\n", + state, tmd->name, ret); + return ret; + } + + ret =3D qmi_send_request(&qmi_tmd_cli->handle, NULL, &txn, + QMI_TMD_SET_LEVEL_REQ, + TMD_SET_LEVEL_REQ_MAX_LEN, + tmd_set_level_req_ei, &req); + if (ret < 0) { + dev_err(qmi_tmd_cli->dev, "qmi set state %d txn send failed for %s ret %= d\n", + state, tmd->name, ret); + qmi_txn_cancel(&txn); + return ret; + } + + ret =3D qmi_txn_wait(&txn, QMI_TMD_RESP_TIMEOUT); + if (ret < 0) { + dev_err(qmi_tmd_cli->dev, "qmi set state %d txn wait failed for %s ret %= d\n", + state, tmd->name, ret); + return ret; + } + + if (resp.resp.result !=3D QMI_RESULT_SUCCESS_V01) { + dev_err(qmi_tmd_cli->dev, + "qmi set state %d failed for %s result %#x error %#x\n", + state, tmd->name, + resp.resp.result, resp.resp.error); + return -EREMOTEIO; + } + + dev_dbg(qmi_tmd_cli->dev, "Requested state %d/%d for %s\n", state, + tmd->max_state, tmd->name); + + tmd->cur_state =3D state; + + return 0; +} + +static int qmi_tmd_get_max_state(struct thermal_cooling_device *cdev, + unsigned long *state) +{ + struct qmi_tmd *tmd =3D cdev->devdata; + + *state =3D tmd->max_state; + + return 0; +} + +static int qmi_tmd_get_cur_state(struct thermal_cooling_device *cdev, + unsigned long *state) +{ + struct qmi_tmd *tmd =3D cdev->devdata; + + /* cur_state is protected by thermal core's cdev->lock */ + *state =3D tmd->cur_state; + + return 0; +} + +static int qmi_tmd_set_cur_state(struct thermal_cooling_device *cdev, + unsigned long state) +{ + struct qmi_tmd *tmd =3D cdev->devdata; + + if (state > tmd->max_state) + return -EINVAL; + + /* cur_state is protected by thermal core's cdev->lock */ + if (tmd->cur_state =3D=3D state) + return 0; + + return qmi_tmd_send_state_request(tmd, state); +} + +static const struct thermal_cooling_device_ops qmi_tmd_cooling_ops =3D { + .get_max_state =3D qmi_tmd_get_max_state, + .get_cur_state =3D qmi_tmd_get_cur_state, + .set_cur_state =3D qmi_tmd_set_cur_state, +}; + +static int qmi_tmd_register(struct qmi_tmd_client *qmi_tmd_cli, + const char *label, u8 max_state) +{ + struct device *dev =3D qmi_tmd_cli->dev; + struct qmi_tmd *tmd; + int index; + + for (index =3D 0; index < qmi_tmd_cli->num_tmds; index++) { + tmd =3D &qmi_tmd_cli->tmds[index]; + + if (!strncasecmp(tmd->name, label, + QMI_TMD_DEV_ID_LEN_MAX + 1)) + goto found; + } + + dev_dbg(qmi_tmd_cli->dev, + "TMD '%s' available in firmware but not specified in DT\n", + label); + return 0; + +found: + tmd->max_state =3D max_state; + + /* + * If the cooling device already exists then the QMI service went away and + * came back. So just make sure the current cooling device state is + * reflected on the remote side and then return. + */ + if (tmd->cdev) + return qmi_tmd_send_state_request(tmd, tmd->cur_state); + + tmd->cdev =3D thermal_of_cooling_device_register(dev->of_node, index, + label, tmd, &qmi_tmd_cooling_ops); + if (IS_ERR(tmd->cdev)) { + int ret =3D PTR_ERR(tmd->cdev); + + tmd->cdev =3D NULL; + return ret; + } + + return 0; +} + +static void qmi_tmd_unregister(struct qmi_tmd_client *qmi_tmd_cli) +{ + struct qmi_tmd *tmd; + int index; + + for (index =3D 0; index < qmi_tmd_cli->num_tmds; index++) { + tmd =3D &qmi_tmd_cli->tmds[index]; + + if (!tmd->cdev) + continue; + + thermal_cooling_device_unregister(tmd->cdev); + tmd->cdev =3D NULL; + } +} + +static void qmi_tmd_svc_arrive(struct work_struct *work) +{ + struct qmi_tmd_client *qmi_tmd_cli =3D + container_of(work, struct qmi_tmd_client, svc_arrive_work); + + struct tmd_get_dev_list_req req =3D { 0 }; + struct tmd_get_dev_list_resp *resp __free(kfree) =3D NULL; + int ret, i; + struct qmi_txn txn; + + resp =3D kzalloc_obj(*resp, GFP_KERNEL); + if (!resp) { + ret =3D -ENOMEM; + goto out; + } + + scoped_guard(mutex, &qmi_tmd_cli->mutex) { + if (qmi_tmd_cli->exiting) + return; + + ret =3D qmi_txn_init(&qmi_tmd_cli->handle, &txn, + tmd_get_dev_list_resp_ei, resp); + if (ret < 0) + goto out; + + ret =3D qmi_send_request(&qmi_tmd_cli->handle, NULL, &txn, + QMI_TMD_GET_DEV_LIST_REQ, + TMD_GET_DEV_LIST_REQ_MAX_LEN, + tmd_get_dev_list_req_ei, &req); + if (ret < 0) { + qmi_txn_cancel(&txn); + goto out; + } + + ret =3D qmi_txn_wait(&txn, QMI_TMD_RESP_TIMEOUT); + if (ret < 0) + goto out; + + if (resp->resp.result !=3D QMI_RESULT_SUCCESS_V01) { + ret =3D -EPROTO; + goto out; + } + + qmi_tmd_cli->connection_active =3D true; + } + + for (i =3D 0; i < resp->mitigation_device_list_len; i++) { + struct tmd_dev_list *device =3D + &resp->mitigation_device_list[i]; + + ret =3D qmi_tmd_register(qmi_tmd_cli, + device->mitigation_dev_id.mitigation_dev_id, + device->max_mitigation_level); + if (ret) + break; + } + +out: + if (ret) + dev_err(qmi_tmd_cli->dev, "Failed to initialize TMD service: %d\n", ret); +} + +static void qmi_tmd_del_server(struct qmi_handle *qmi, struct qmi_service = *service) +{ + struct qmi_tmd_client *qmi_tmd_cli =3D + container_of(qmi, struct qmi_tmd_client, handle); + + scoped_guard(mutex, &qmi_tmd_cli->mutex) { + qmi_tmd_cli->connection_active =3D false; + } +} + +static int qmi_tmd_new_server(struct qmi_handle *qmi, struct qmi_service *= service) +{ + struct sockaddr_qrtr sq =3D { AF_QIPCRTR, service->node, service->port }; + struct qmi_tmd_client *qmi_tmd_cli; + int ret; + + qmi_tmd_cli =3D container_of(qmi, struct qmi_tmd_client, handle); + + scoped_guard(mutex, &qmi_tmd_cli->mutex) { + if (qmi_tmd_cli->exiting) + return 0; + + ret =3D kernel_connect(qmi->sock, (struct sockaddr_unsized *)&sq, + sizeof(sq), 0); + } + + if (ret < 0) { + dev_err(qmi_tmd_cli->dev, "QMI connect failed for node %u port %u: %d\n", + service->node, service->port, ret); + return ret; + } + + queue_work(system_highpri_wq, &qmi_tmd_cli->svc_arrive_work); + + return 0; +} + +static const struct qmi_ops qmi_tmd_ops =3D { + .new_server =3D qmi_tmd_new_server, + .del_server =3D qmi_tmd_del_server, +}; + +/** + * qmi_tmd_init() - Initialize QMI TMD instance + * @dev: Device pointer + * @instance_id: QMI service instance ID for the remote subsystem + * @tmd_names: Array of TMD names + * @num_tmds: Number of TMD names + * + * Context: Must be called from probe context. + * + * Return: Pointer to qmi_tmd_client on success, ERR_PTR on failure + */ +struct qmi_tmd_client *qmi_tmd_init(struct device *dev, + unsigned int instance_id, + const char * const *tmd_names, + int num_tmds) +{ + struct qmi_tmd_client *qmi_tmd_cli; + int ret, i; + + if (!dev || !tmd_names || num_tmds <=3D 0) + return ERR_PTR(-EINVAL); + + qmi_tmd_cli =3D devm_kzalloc(dev, struct_size(qmi_tmd_cli, tmds, num_tmds= ), GFP_KERNEL); + if (!qmi_tmd_cli) + return ERR_PTR(-ENOMEM); + + qmi_tmd_cli->dev =3D dev; + qmi_tmd_cli->num_tmds =3D num_tmds; + mutex_init(&qmi_tmd_cli->mutex); + INIT_WORK(&qmi_tmd_cli->svc_arrive_work, qmi_tmd_svc_arrive); + + for (i =3D 0; i < num_tmds; i++) { + qmi_tmd_cli->tmds[i].name =3D tmd_names[i]; + qmi_tmd_cli->tmds[i].qmi_tmd_cli =3D qmi_tmd_cli; + } + + ret =3D qmi_handle_init(&qmi_tmd_cli->handle, + TMD_GET_DEV_LIST_RESP_MAX_LEN, + &qmi_tmd_ops, NULL); + if (ret < 0) + return ERR_PTR(dev_err_probe(dev, ret, "QMI handle init failed\n")); + + ret =3D qmi_add_lookup(&qmi_tmd_cli->handle, QMI_SERVICE_ID_TMD, + QMI_TMD_SERVICE_VERS_V01, instance_id); + if (ret < 0) { + dev_err_probe(dev, ret, "QMI add lookup failed\n"); + goto err_release_handle; + } + + return qmi_tmd_cli; + +err_release_handle: + qmi_handle_release(&qmi_tmd_cli->handle); + + return ERR_PTR(ret); +} +EXPORT_SYMBOL_GPL(qmi_tmd_init); + +/** + * qmi_tmd_exit() - Deinitialize QMI TMD instance + * @qmi_tmd_cli: QMI TMD client to deinitialize + */ +void qmi_tmd_exit(struct qmi_tmd_client *qmi_tmd_cli) +{ + if (!qmi_tmd_cli) + return; + + scoped_guard(mutex, &qmi_tmd_cli->mutex) { + qmi_tmd_cli->exiting =3D true; + qmi_tmd_cli->connection_active =3D false; + } + + qmi_handle_release(&qmi_tmd_cli->handle); + cancel_work_sync(&qmi_tmd_cli->svc_arrive_work); + qmi_tmd_unregister(qmi_tmd_cli); +} +EXPORT_SYMBOL_GPL(qmi_tmd_exit); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Qualcomm QMI Thermal Mitigation support"); diff --git a/include/linux/soc/qcom/qmi.h b/include/linux/soc/qcom/qmi.h index b9dcb437a0be..683d27cee413 100644 --- a/include/linux/soc/qcom/qmi.h +++ b/include/linux/soc/qcom/qmi.h @@ -96,6 +96,7 @@ struct qmi_elem_info { * Enumerate the IDs of the QMI services */ #define QMI_SERVICE_ID_TEST 0x0f /* 15 */ +#define QMI_SERVICE_ID_TMD 0x18 /* 24 */ #define QMI_SERVICE_ID_SSCTL 0x2b /* 43 */ #define QMI_SERVICE_ID_IPA 0x31 /* 49 */ #define QMI_SERVICE_ID_SERVREG_LOC 0x40 /* 64 */ diff --git a/include/linux/soc/qcom/qmi_tmd.h b/include/linux/soc/qcom/qmi_= tmd.h new file mode 100644 index 000000000000..452f51f23731 --- /dev/null +++ b/include/linux/soc/qcom/qmi_tmd.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2025, Linaro Limited + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * QMI Thermal Mitigation Device (TMD) library header. + */ + +#ifndef __QMI_TMD_H__ +#define __QMI_TMD_H__ + +struct device; +struct qmi_tmd_client; + +#if IS_ENABLED(CONFIG_QCOM_QMI_TMD) +struct qmi_tmd_client *qmi_tmd_init(struct device *dev, + unsigned int instance_id, + const char * const *tmd_names, + int num_tmds); + +void qmi_tmd_exit(struct qmi_tmd_client *tmd_cli); +#else +static inline struct qmi_tmd_client *qmi_tmd_init(struct device *dev, + unsigned int instance_id, + const char * const *tmd_names, + int num_tmds) +{ + return NULL; +} + +static inline void qmi_tmd_exit(struct qmi_tmd_client *tmd_cli) +{ +} +#endif + +#endif /* __QMI_TMD_H__ */ --=20 2.34.1 From nobody Fri Oct 2 13:07:18 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 573903E3167 for ; Fri, 31 Jul 2026 10:34:40 +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=1785494096; cv=none; b=botSBH+FlJ6J84AX7w1REKDL7I0gUywaDp9H9xNYUN7exsG82tpICZIx5RnFSqqpV5QgfOdDmjrc/0EI2oA6GY2FHcn2M4qhp8vJfkTDmeUPGPF+WDzHSul95j7Dnuy9ykSV9OvLl45n0D3EtbBPMGhKhQtE/JrDlEmD9VfTy2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494096; c=relaxed/simple; bh=Hd9Nn9n09AZNGTV46/QfXFtAJzN5htP275zS75BASFg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AtGc31SdAwgLIyxhecygw6kmf0aZAmdm3nMmbQgvkiaI0d9RZKYTYPsk4iMYYRkJWX+Po2c75iA8VSo2kNkz7y9JDjVhpzUDY3YTWwZy3XnJ0z5760RYLtQjP4KW1fP7WPK9MBK3Mq024P3KmwBdWlGXm39UsctzsyMYzraSKy8= 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=bn6YjrBM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NCpmr+ma; 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="bn6YjrBM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NCpmr+ma" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC31i3603150 for ; Fri, 31 Jul 2026 10:34:39 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= NICNV6Yj6xf0uEcuxcYKasRHhguGIhBcucK7mfqbGlY=; b=bn6YjrBMxDUWGq0n xun8eaAzs4nixfltJOU2OvkIv2j7y3xA+yDW/iJPPJGxlTJ/vziyHaFu4iSy1tZY Nazp1nIRJBJYM5As0pxv9j7twegCnUrLqbrpap746VhUhvHvWyepnMFxwgaVCKTD yG7nONOohFtT8uBkivKFoBnM+ClYzFjudjO6QE3tMiNDA2Qfa6bR9XGptydbktZL pP1FUMWucMVA9QgXTpR1OrOGpBp5UZSzE9RSk2omOt4qEVTTQJG+v7gLE/moK/7v /SFR5rhDI8yJIVYYgXchBrK9DnaPuVGl9xKJei1h7QPKJ3Zhxe7l3by+2dSsVIbb oVm8qg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frsfb04jy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:34:39 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cc5faecf01so15706775ad.1 for ; Fri, 31 Jul 2026 03:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494078; x=1786098878; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NICNV6Yj6xf0uEcuxcYKasRHhguGIhBcucK7mfqbGlY=; b=NCpmr+maTUP6cf8poWrOVopSDrYYeAMa08kTDSW/+iUrrCMP4Z+JOzb5B/EXIzTRdg Du6XBGzwFyIKAgErtndSs8de/vnz1UgrfaNSnlv1xYppmLm+kHVwbctm/5o1SlYRTt5T V/hamWZqoYK3EuaaIrHWsSpVtT2ziVmj+X9rG5eDs/YQQNlhstnqfcpmiRiTUpZzadl5 KOLQ9LPCGWQw9rfQzepmOgYUiAJR+DMqQQvF0um/yO7+SC/iyFedLjDdR3WLM0PpoWUU 0b9fw7lCCfubmQXLjwp+hhNKuxGONPRPnc5E0mZs5gG2NdGBZitPnGt7jjE5cQETvhzt 1ElQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494078; x=1786098878; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=NICNV6Yj6xf0uEcuxcYKasRHhguGIhBcucK7mfqbGlY=; b=oAkE4ZtBvCdEBBOzuoz0xGY4GsZsSVUC1AYHOz6xC4jdUPM9s4K3xZNuW4OE/t5PpM zW6KKCa4bmF/ZWRA0Pc8WPNpq3n1gXQzVSU+8KCCHKpYcKqw6hGxmsvp1EJjYQo+thQ1 dh62S5vbkCgxSw/fKvboMoiBboy44bYDELTnGDjFkXFhugoK/5sQrUd4HeQu4JsGKLI4 WeVLudvEBJ9AKF4NDq6oFyavqTnV/h8qsKyiGW1f3NptkahxPR+vJ08wi43HsOr9pPEB bAyQiLbWvzMd+cXtQwuI0Kq88rBPz/jrFAp9/Uv21EYSLuluK5wHEABAVa5nz5hKdFUT Tpog== X-Forwarded-Encrypted: i=1; AHgh+Rps5YFBY3vPgzxe2waxSFwITlge41g5dEBHUpsG4IMJP0JKtSJoSe6FiMEAdX4Rpak2GLkoy0TvcYDAy80=@vger.kernel.org X-Gm-Message-State: AOJu0YzRrIgXN0sUxHKgKuhsUi2Yq7Gxj1OODzpSsKJVH0/mQxGRrxET u8CUfAjF3h+S0stQfAQSPcl781pCX2jOGC5FonkYV0Wu9hQi3nX5udEswUhItBRJGjJiAHavsqb mjUI7bgEtbsgjbpNNsrtA0OqX29tp+rDC9T9eHa89C/VmxPm79c9RNd6d0Qflp5/6dS0= X-Gm-Gg: AR+sD115tWWf4JfUHa1abPTGfNgFxRhDe4XORcn98ULIWlEsOyhpqKZ4J9P4TJrYjtn LfLyxwSYfKD7TP8TOaYfPxP12cAuhztKO7GR+51pIRdsD3oxZpW74qUc2ndl3phw3+UdvvjJrmd mPyqEaHuFqsPvBNLFJ0CQjA6Kliat+de+aAsROXJWykMqup6Zfy14KXYVXbkNslSlcZpeYd7hka EhvjBXbNDwO7cCBBTDMFBw2/AwrmqtxAGRZf1b5XKoOd6vJYZmwA1PmP1jhxYe3pSXHxlV9uOMO O2ykH+wzL4ASJJ4VSzPd4FijAkFqtDOCIQ4lVsDCqDWMfT3LlWf91NLw2CS6rDangSBsE7Zyjz1 mqIsR11G/s+Qymiy/TYIW2/W/ywaLzA== X-Received: by 2002:a05:6a20:d49b:b0:3c3:a024:1360 with SMTP id adf61e73a8af0-3c91b178f9cmr1395953637.28.1785494078301; Fri, 31 Jul 2026 03:34:38 -0700 (PDT) X-Received: by 2002:a05:6a20:d49b:b0:3c3:a024:1360 with SMTP id adf61e73a8af0-3c91b178f9cmr1395911637.28.1785494077777; Fri, 31 Jul 2026 03:34:37 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:37 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:43 +0530 Subject: [PATCH v7 3/9] remoteproc: qcom: pas: add support for TMD thermal cooling devices 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: <20260731-b4-qmi-tmd-v7-3-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=5213; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=Hd9Nn9n09AZNGTV46/QfXFtAJzN5htP275zS75BASFg=; b=u4LVE8VlbhpIQsKunFC1H5L4T9IJPS59/MxfSnB4jWXl8opvygYQZdvvGGgw77afEXc5sT94v XG3JBZ3snhxD7+C92f0OAyCcAEt/VrC0WWcpIa0PU24eawJ4YOeBBr6 X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX8jEz44EAZ6wS V8nho4b/4J8Nc39iui5CfBn8DlFdXn0jJK2IxwPzeeYTUQ36zOTE9HrS+2rOyLEcSQ8cUFpnpqe 8nuqtC3CRws62VT14hz+oKsGamwM674= X-Proofpoint-ORIG-GUID: 7BHNmjOgsDOOGibrc-fqC8TzRojvTJNE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX4nuKr28NPFzI wepBuAEdHQUXJ1eRntecF+77RDrnbLglfcRnZGg39SskWJd0f7n/dNisOLOiFrCIsZytRNr9Qcz byDl5uhrVos8pkvkl6APXsOpbxbTeQzV1tJZ2Yy+V1GVZ7//oUKV3dWYA6WyzbTrfb/ZAhrYLby hwXCoIpqn2IJkHJngq6zVIIUZ91ts9xTYUiI/fYjF9/2acuefxSQvLhJUE2nUam2g2lc6snzhA/ Mr+ev4gf9HsvIioGSAtFTugtMGv8VrIGHFOQ+6z+z9JbY0Xjlj8GfHHNgCO9+DNs5VtCdIZwznv JwHaJI6RJs8xEV0JqQa0HwXmuZtJmLBiix3KeFgIsMHp2MYM/AMY/izQGI43ElIBDCbrcrCEclJ hMTzkDJjzapZssC6qrAGbt9jcEzDaV2b+g4OcYtJrPMZwmoltCasLejAynL6HnlWLQLUpYplmhT f3RdQqdYkZyWBm45p+A== X-Proofpoint-GUID: 7BHNmjOgsDOOGibrc-fqC8TzRojvTJNE X-Authority-Analysis: v=2.4 cv=Ud1hjqSN c=1 sm=1 tr=0 ts=6a6c7a3f cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=p67dmK6jBiiEd9TVeScA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 malwarescore=0 clxscore=1015 suspectscore=0 phishscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Register Thermal Mitigation Devices (TMDs) for PAS-managed remote processors to enable thermal throttling through QMI. This allows the thermal framework to request mitigation when remote subsystems such as modem and CDSP contribute to thermal pressure. Reviewed-by: Daniel Lezcano Signed-off-by: Gaurav Kohli --- drivers/remoteproc/Kconfig | 1 + drivers/remoteproc/qcom_q6v5_pas.c | 90 ++++++++++++++++++++++++++++++++++= +++- 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig index 65befdbfa5f7..152d7a53aa09 100644 --- a/drivers/remoteproc/Kconfig +++ b/drivers/remoteproc/Kconfig @@ -229,6 +229,7 @@ config QCOM_Q6V5_PAS select QCOM_PIL_INFO select QCOM_MDT_LOADER select QCOM_Q6V5_COMMON + select QCOM_QMI_TMD if NET select QCOM_RPROC_COMMON select QCOM_SCM select QCOM_PAS diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index 25599d728208..b9c01ce5024e 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -5,6 +5,7 @@ * Copyright (C) 2016 Linaro Ltd * Copyright (C) 2014 Sony Mobile Communications AB * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ =20 #include @@ -26,8 +27,10 @@ #include #include #include +#include #include #include +#include =20 #include "qcom_common.h" #include "qcom_pil_info.h" @@ -38,6 +41,16 @@ =20 #define MAX_ASSIGN_COUNT 3 =20 +/** + * struct tmd_name - TMD device name to cooling-device index mapping + * @name: TMD device name + * @id: Cooling-device index used as #cooling-cells cell 0 in DT + */ +struct tmd_name { + const char *name; + int id; +}; + struct qcom_pas_data { int crash_reason_smem; const char *firmware_name; @@ -58,6 +71,10 @@ struct qcom_pas_data { int ssctl_id; unsigned int smem_host_id; =20 + unsigned int tmd_instance_id; + const struct tmd_name *tmd_name; + int num_tmd; + int region_assign_idx; int region_assign_count; bool region_assign_shared; @@ -122,6 +139,8 @@ struct qcom_pas { =20 struct qcom_pas_context *pas_ctx; struct qcom_pas_context *dtb_pas_ctx; + + struct qmi_tmd_client *tmd_inst; }; =20 static void qcom_pas_segment_dump(struct rproc *rproc, @@ -798,6 +817,64 @@ static void qcom_pas_unassign_memory_region(struct qco= m_pas *pas) } } =20 +static int qcom_pas_setup_tmd(struct qcom_pas *pas, const struct qcom_pas_= data *desc) +{ + struct qmi_tmd_client *tmd_inst; + const struct tmd_name *tmd; + const char **tmd_names; + int i, ret; + + if (!device_property_present(pas->dev, "#cooling-cells")) + return 0; + + if (!desc->tmd_name || desc->num_tmd =3D=3D 0) + return 0; + + tmd_names =3D devm_kcalloc(pas->dev, desc->num_tmd, + sizeof(*tmd_names), GFP_KERNEL); + if (!tmd_names) + return -ENOMEM; + + for (i =3D 0; i < desc->num_tmd; i++) { + tmd =3D &desc->tmd_name[i]; + + if (tmd->id >=3D desc->num_tmd) { + dev_err(pas->dev, "Invalid TMD id %d for '%s'\n", + tmd->id, tmd->name); + return -EINVAL; + } + + if (tmd_names[tmd->id]) { + dev_err(pas->dev, "Duplicate TMD id %d for '%s'\n", + tmd->id, tmd->name); + return -EINVAL; + } + + tmd_names[tmd->id] =3D tmd->name; + } + + for (i =3D 0; i < desc->num_tmd; i++) { + if (!tmd_names[i]) { + dev_err(pas->dev, "Missing TMD mapping for id %d\n", i); + return -EINVAL; + } + } + + tmd_inst =3D qmi_tmd_init(pas->dev, desc->tmd_instance_id, tmd_names, + desc->num_tmd); + if (IS_ERR(tmd_inst)) { + ret =3D PTR_ERR(tmd_inst); + if (ret =3D=3D -ENODEV) + return 0; + + return ret; + } + + pas->tmd_inst =3D tmd_inst; + + return 0; +} + static int qcom_pas_probe(struct platform_device *pdev) { const struct qcom_pas_data *desc; @@ -925,16 +1002,24 @@ static int qcom_pas_probe(struct platform_device *pd= ev) if (desc->early_boot) pas->rproc->state =3D RPROC_DETACHED; =20 - ret =3D rproc_add(rproc); + ret =3D qcom_pas_setup_tmd(pas, desc); if (ret) goto remove_ssr_sysmon; =20 + ret =3D rproc_add(rproc); + if (ret) + goto remove_setup_tmd; + node =3D of_get_compatible_child(pdev->dev.of_node, "qcom,bam-dmux"); pas->bam_dmux =3D of_platform_device_create(node, NULL, &pdev->dev); of_node_put(node); =20 return 0; =20 +remove_setup_tmd: + if (pas->tmd_inst) + qmi_tmd_exit(pas->tmd_inst); + remove_ssr_sysmon: qcom_remove_ssr_subdev(rproc, &pas->ssr_subdev); qcom_remove_sysmon_subdev(pas->sysmon); @@ -962,6 +1047,9 @@ static void qcom_pas_remove(struct platform_device *pd= ev) =20 rproc_del(pas->rproc); =20 + if (pas->tmd_inst) + qmi_tmd_exit(pas->tmd_inst); + qcom_q6v5_deinit(&pas->q6v5); qcom_pas_unassign_memory_region(pas); qcom_remove_glink_subdev(pas->rproc, &pas->glink_subdev); --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 88B8641DEF4 for ; Fri, 31 Jul 2026 10:34:50 +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=1785494109; cv=none; b=u5C8PTtl3+CjOUcE0ap97V/ZThNkN0XLvwRpjXVVXvYC++yUgyuQNmQ//pucqmsKmWrYdjn2MEYzOXii2lF01X8hIaor9Xm8wsOXjnzPhJiuFi3KmYTZvqYlwzo74VKdgn/38EotWX/AlZtpON01cYHXADLfh4fbnpBY7CEceys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494109; c=relaxed/simple; bh=B4aq1yOKEZGsE775NUNcG7RD3TIx3tEAKPyIW0OCFew=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pLyrp46ODn+dwbaF3KfLZP5TxQUGeYNgMoawUV0TbsYGHChq/W/EEBsR+RGYe05E2ZeVpkzimBEir781gSdtAO/EQO6QGcK2ppWWa0zgXJAqe7jiijFZnDnrzWy0QrKUVwFOHskkZqgCvwI94EMWLmKq0nW3Y4g3f7ON3CXkF+Q= 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=bW7epnrh; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=e7Dt9xJd; 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="bW7epnrh"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="e7Dt9xJd" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC2CA3512394 for ; Fri, 31 Jul 2026 10:34:46 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= UYo5Cg7K0tncVfDjQFA209BANkgOUDdVw0Wtrd7/h48=; b=bW7epnrhOxuz2by6 RwWON8T9R33FIo5e/tpSLyNlGi5XEX3PJ3mUrkmRa22nEQT5NTu7N9DYHUjkYxG0 tkqOkESunN3HioCA1GpGbZnV6ww0Csf+Y92M1azUQ1XbG4cpM2y1KqQsjAjJrTvH iG7IrPU/ydOGkYpHLadonMzWvGsNawJyIqVpxoI87WPwVoQ9gl8BJAlBJcQIz4iq 0j616ZL9ZKGbcS9ddcuLpk/FRbzq1vgMCsnFDsyq3YHVga1a0xc59K+HcIZQsPjU evccQSDq/3c3C2MYAJkw5bcWFmouwfnodgTRfzioKp6WlFP34HHFVx7wZanBpqxa RIOCWg== 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 4frsf2g4fg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:34:46 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38dc085b0a7so1584300a91.2 for ; Fri, 31 Jul 2026 03:34:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494086; x=1786098886; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UYo5Cg7K0tncVfDjQFA209BANkgOUDdVw0Wtrd7/h48=; b=e7Dt9xJdw3VTaHpqfg467oxPuZ/AnwTMhvBzmdjOivzLBpsjaq9FbeauASZvlpxdD7 1155BcZ31A9sS+OB03KIqmA7S9wT7/VRW5TadW8axduQSdSL+tUmjjVJKLy0p6C41Ufv PDkq4JIxaOjC9bSsE6iKJnabhdas5C4aVeSs8yADGxGfJBv17Q89RwCjHP+Qe+gbhrEy VPpI11+OUxuIgQpTNic+GxTIeerfRyv1Jy1B6Mps8CUY7sNaYlNYGNVLZnFEGTOK4ItQ ao/B5YbIYSJPfKcbFkfMS22qOqDeCUy0uv3CrbyizbOBFnEjWPRDYsIAco7f5jMWoSRq C75A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494086; x=1786098886; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=UYo5Cg7K0tncVfDjQFA209BANkgOUDdVw0Wtrd7/h48=; b=ZemEc0VHIEkNQtLkL5Za+4TpBV3VJR9j+PrSZveNoH+B0IP/KqExnIi/edqnOBORhC q3WzBBHYcd+hrsdrKrcWK9WIncKbqNql2TRrmqGaoC0UIwYEKagyTAk4yp///M76DYfb 4cpCC7ancJk5eJKhyjl6y4zpyBoI5TkQD8n5BGe/9hFq5ELZ7Pd4ptoYruaJSz1qgcM1 17sRInlPCyblGbpNeJSJMc6A70yzNay5uOqtbEFUTkagsm4gmXvN3QJ6k6gvYJsk2CYu lRKqqX45MRfVx9KKYAjKcY5cmqgkQUy1fCNRZqXzEGNd+o3dBkN/O9zmKP+A3wJ7hCdt 5grw== X-Forwarded-Encrypted: i=1; AHgh+RrMhSycwdlkg7rtSA9TVvkeJEiSa6PpQt1wq0p9/mK0PEBrmwbuT9s5qJ/6WD128Wv1Vgb4XxygCOT+tUM=@vger.kernel.org X-Gm-Message-State: AOJu0YyJfoVE6WLqU/tuwTfBgNyEbE2VlfHRa3q6EdhGa1KFunBMmed+ IsQqfEqCYohR2Gn2F5gXrkSnhD5rLmF4ySoJRNYL1aGKX2hDSfKPOj+ZoQXoCxden97By0EQaXP F3zvlYZmPJo7VyPMgHTfjmTHDLxIICgWHM4FJoEX31rh7up8yFbjmXE0EUrvOxLecQ/4= X-Gm-Gg: AR+sD11iBUe444EP5CYiGj/qhCiOxAAUlANwEp+zgMenIfyYsnfL/FCP0crNfpkdui7 rsnF0xfUhNiLE9+FINSzFXeJ3ICpk5d5L+8qbST8B+dJmJOGKJa7jSRFk2LF8/TAxFeM26hloMz 4Is2Mmz5f5PzEMHSo46epmrKjdDXaw/XFRUURyD5S8xXqxtz3DpwQ9DZKSR5g03gsMNA4FHw9Co c+p5FYd9h3F1ZHFZ/P14jIoUsFL3gin2eDwruKNkaZZzj9n3r3soGQOUkDnLiP+fx1F5T4YKnOd uZW7YlQliDpiHa/7zoBbXwPvJTeFqGVvjrw6r7TX0539fQ9TnDgG/+a+3QWqCalv/9pXvblTyUk YpUHTPjRrMPwrnRpiOSqLy3arqqserQ== X-Received: by 2002:a17:90b:582c:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-38fb11177a1mr1556059a91.4.1785494085465; Fri, 31 Jul 2026 03:34:45 -0700 (PDT) X-Received: by 2002:a17:90b:582c:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-38fb11177a1mr1556005a91.4.1785494085005; Fri, 31 Jul 2026 03:34:45 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:44 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:44 +0530 Subject: [PATCH v7 4/9] remoteproc: qcom_q6v5_pas: enable QMI TMD cooling support 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: <20260731-b4-qmi-tmd-v7-4-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=3908; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=B4aq1yOKEZGsE775NUNcG7RD3TIx3tEAKPyIW0OCFew=; b=Z52/CLwmcevZs2F4ktsX1v4aBRP/j4r4ShOor6CvRb5YbluiF2UNsbVlKHtPVD+nPQouM4b2F nbNRxeZDkJjC5o3Xo1x1nKOnD/OE/fNiES5XcWaaGvMjRDPE5zO7ZAb X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Authority-Analysis: v=2.4 cv=ev3vCIpX c=1 sm=1 tr=0 ts=6a6c7a46 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=j6jQExit_mXiN_RbaP8A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-GUID: _Gsou24KZoc8KFV8uJcJh26GeRFvDxdb X-Proofpoint-ORIG-GUID: _Gsou24KZoc8KFV8uJcJh26GeRFvDxdb X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX9Uwu7k67Fh8q funPa5Rqi4PFFIdvOqE+GSdDCJpppoOOp8ICFYv3MO2blPt5YN4TWQQp7mQpWboYxSdjvbPWIby VsBubMMuLmF7OaOa6Her1zVrwa397Pc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX6Xv7vuidYzq/ 3c9euR+VF78YvqZskzePZK31CSjyP3tyjlzwXnbYzuewnJVivZH0Z3ZvqHGYiKDq+afUUeowKnf 1jRhkCjC8taGCit13BiLlzloClDHVd/HOCUdxSc4xbc2f2FjOKASAOuU9ekdll0Wttoed3JmCRm kQpnS6+HvzoVRNh85u1QI5HYEUc3bY6fg6dfEeV0drR1UMdeykJZt+y3l6KVUMiTO7DyrKGCkgN jkRtc4ZUif/pqy8w61xERu1ymQmEQgzELbBYllvScDZ9tv+1KQv3nr2nsoiVPrDCouhV4VHQB5r kSMCmxY7CAD6/vxbifveodlCDJ+M/WPXntlAyZ8kkRmS22VdhsIYU6KhRM5FFbMIUkFT8HjlyGl /Ly/xYzRofyDkobsHjeKhT3UNNoMVaAVhXzdH8JGqaT6OpIx+KfblFkWEQtrnD+qdxqrVvrjV5a W+GUjYdTYsmrFaDSiog== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Enable Thermal Mitigation Device (TMD) support for PAS-managed CDSP and modem remote processors on platforms that expose the QMI TMD service. This adds per-platform TMD configuration in qcom_q6v5_pas for: - Hamoa (X1E80100) CDSP - Kodiak CDSP and modem - Lemans (SA8775P) CDSP - Talos CDSP - Monaco CDSP For each remoteproc, the configured TMD QMI instance ID is used to bind to the TMD service running on that subsystem (e.g. CDSP: 0x43, modem: 0x0). The driver then uses the corresponding TMD endpoint names ("cdsp_sw", "pa", "modem") for cooling-device registration. QMI TMD identifies mitigation endpoints by name, while DT thermal bindings reference cooling devices by id. This change provides the mapping between DT cooling indices and QMI TMD names, allowing remoteproc nodes with #cooling-cells to act as cooling devices in the thermal framework. With this in place, thermal policies can request mitigation from CDSP and modem subsystems via QMI under thermal pressure. Reviewed-by: Daniel Lezcano Signed-off-by: Gaurav Kohli --- drivers/remoteproc/qcom_q6v5_pas.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index b9c01ce5024e..36115b24b859 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -1061,6 +1061,15 @@ static void qcom_pas_remove(struct platform_device *= pdev) device_init_wakeup(pas->dev, false); } =20 +static const struct tmd_name cdsp_tmd_name[] =3D { + { .name =3D "cdsp_sw", .id =3D QCOM_TMD_CDSP_SW }, +}; + +static const struct tmd_name modem_tmd_name[] =3D { + { .name =3D "pa", .id =3D QCOM_TMD_PA }, + { .name =3D "modem", .id =3D QCOM_TMD_MODEM }, +}; + static const struct qcom_pas_data adsp_resource_init =3D { .crash_reason_smem =3D 423, .firmware_name =3D "adsp.mdt", @@ -1218,6 +1227,9 @@ static const struct qcom_pas_data sa8775p_cdsp0_resou= rce =3D { .ssr_name =3D "cdsp", .sysmon_name =3D "cdsp", .ssctl_id =3D 0x17, + .tmd_instance_id =3D 0x43, + .tmd_name =3D cdsp_tmd_name, + .num_tmd =3D ARRAY_SIZE(cdsp_tmd_name), }; =20 static const struct qcom_pas_data sa8775p_cdsp1_resource =3D { @@ -1236,6 +1248,9 @@ static const struct qcom_pas_data sa8775p_cdsp1_resou= rce =3D { .ssr_name =3D "cdsp1", .sysmon_name =3D "cdsp1", .ssctl_id =3D 0x20, + .tmd_instance_id =3D 0x44, + .tmd_name =3D cdsp_tmd_name, + .num_tmd =3D ARRAY_SIZE(cdsp_tmd_name), }; =20 static const struct qcom_pas_data sdm845_cdsp_resource_init =3D { @@ -1263,6 +1278,9 @@ static const struct qcom_pas_data sm6350_cdsp_resourc= e =3D { .ssr_name =3D "cdsp", .sysmon_name =3D "cdsp", .ssctl_id =3D 0x17, + .tmd_instance_id =3D 0x43, + .tmd_name =3D cdsp_tmd_name, + .num_tmd =3D ARRAY_SIZE(cdsp_tmd_name), }; =20 static const struct qcom_pas_data sm8150_cdsp_resource =3D { @@ -1278,6 +1296,9 @@ static const struct qcom_pas_data sm8150_cdsp_resourc= e =3D { .ssr_name =3D "cdsp", .sysmon_name =3D "cdsp", .ssctl_id =3D 0x17, + .tmd_instance_id =3D 0x43, + .tmd_name =3D cdsp_tmd_name, + .num_tmd =3D ARRAY_SIZE(cdsp_tmd_name), }; =20 static const struct qcom_pas_data sm8250_cdsp_resource =3D { @@ -1362,6 +1383,9 @@ static const struct qcom_pas_data x1e80100_cdsp_resou= rce =3D { .ssr_name =3D "cdsp", .sysmon_name =3D "cdsp", .ssctl_id =3D 0x17, + .tmd_instance_id =3D 0x43, + .tmd_name =3D cdsp_tmd_name, + .num_tmd =3D ARRAY_SIZE(cdsp_tmd_name), }; =20 static const struct qcom_pas_data sm8350_cdsp_resource =3D { @@ -1430,6 +1454,9 @@ static const struct qcom_pas_data mpss_resource_init = =3D { .ssr_name =3D "mpss", .sysmon_name =3D "modem", .ssctl_id =3D 0x12, + .tmd_instance_id =3D 0x0, + .tmd_name =3D modem_tmd_name, + .num_tmd =3D ARRAY_SIZE(modem_tmd_name), }; =20 static const struct qcom_pas_data sc8180x_mpss_resource =3D { --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 A6B5C421254 for ; Fri, 31 Jul 2026 10:34:57 +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=1785494115; cv=none; b=E+4+DqnRMbGdF6AAFKK4ZRERmbfcLZrxXjfRVGLtFLykx/+FGcGY9dqbVHCUdODzsmoB4x/pqebIpKi8My52VoZ1miSp4Q6sw7qWDVoRkfmx41X5iU+DbfhB/S8pns4iLw9kv+zZV66gsIgcYraCgI2mwdYPUb8vWkpXquMNxAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494115; c=relaxed/simple; bh=69/Nw/l2Pjw5IjdOIVkv2Ao4l0Ioh5cQnspi7SqHb80=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pI04M8PxRuvW/mdv50yDfMXV1D3O7+p8nKKuKxPDtrcGr9L+2SRoRoAd7cKkWNvCFo0yVtlSKbZdorpPFwtYt3Wgy00B/Gi/yXMa+TYcORVv35EO60BxsKfZN+b2vtSi4i7QmYYAwRLMQoeu73jHXH+j+92gig2RyGjsdoB+mpg= 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=kMNagxBx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZvNw00bx; 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="kMNagxBx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZvNw00bx" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC1KL693251 for ; Fri, 31 Jul 2026 10:34:53 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= meyc3mG1hoZYt2I76X2E0RPX3lSg1aWynwrQK2v/AGc=; b=kMNagxBxI/rKNogG P/wGNu21KU4baHrUWzcNsmQgPKU7tDHmuwQljuOV0R35e1lX6oT4Gt1gYq9pWAB0 fxv2enQg0SWyxkIR4Td47nFi/jm7/B4HKABPpKnDRdsJDMLehVhUlX/A94/RbHUT izlUqb7hX+cRE4TxnmtHCtWymsyu372vpVxp1dZNcLruK/A2OW91VYl5isLmo94k gMIzyWGSthzlEK8hLZ24AclxqADxgUlexZqLB4IRoUcLBAtbw/zXdSxsmoWYkkum 1osaZtSMLt90zxS2cv3LH1YeL7SpXUTdI8ZLMeMcD9k5NqBA1QVHGZVyWsRvq6Nu eYKFLA== 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 4frsn503cu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:34:53 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cc7e86e7c5so16133085ad.3 for ; Fri, 31 Jul 2026 03:34:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494093; x=1786098893; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=meyc3mG1hoZYt2I76X2E0RPX3lSg1aWynwrQK2v/AGc=; b=ZvNw00bxx8K20jwKH6vJ84A1wabaMZLj8M3vc8VfO6Iy5ijEd8NFWqYieJmUeEqsNq eVhtQLPhBvnq7cmFhhgomgCg9vFMFB+tvMzf84gB0BmNQIWxIK8K8i6Kvr+09CXESCZL vG8/jg+UFMBM0Y21z5w+GuODtVBC4ApzxfOE0CJkabpTP2DVj8W9MYAwV2MCZKoH/g/o oCO9VO38C2b6evsmaZjuqF53/B1NQpDchgQWHehzUZD/pst8SrO6JEFeePlxvPAce6oN Uoos8/3thgmlzULdpcczcR08R43CSqYjv6efR06c8EK2kkG4aayKDM+kMktuS9Ja1WJM LU6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494093; x=1786098893; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=meyc3mG1hoZYt2I76X2E0RPX3lSg1aWynwrQK2v/AGc=; b=ZyHJSrxWv+fYHksbLdTyaGag7gAHkrTXclm174EvNtHlbnZ3fBJuqJ2T0O6n6gWSQL ZNoJKgIkOvFGdyiAO/l9jBFJq1wb8/eUNLeSgVbR8RggLz21U0MlBF4DFeOTSWudJzgE cqE9Uek8uBU/g3hZ+exyXPZev/RdGaXh0ZAcnYiFGHU/2/sfWG6SkDDTb9NPTNsVMPAk x3Szptk/3sjlKRPQNmAbKybgNnBamwlp25m7DFGPEpX+JXQtMJTISJsqb3J//AjIH8bY vPoiF3p9G7Gpr2byDmXOXJwW3crnCxMaRs0knkseBRydCH4kYFyZ5UDcU6f5vz4jIX4Q uGDA== X-Forwarded-Encrypted: i=1; AHgh+RqA3cdhXcslqUpOULVfiI5Q/Ta1STEPTrr6AuEvgVSu6FWbGp+00BMDC7eW47Un1FRl83eL938QsrdGIgg=@vger.kernel.org X-Gm-Message-State: AOJu0Yzr2Nm4CkqLsoiGyrkGiNXcYU00dgaSa1Kw4ptpdCr+8cDagUHy bv14xFzCLIBusmKZ+s4sXgZVGzm4bpSbM+nOXsVyEVVIGpg4gqK7ALiWmRoh0RJXHW8gxD/PX2G lkHYh0nJTr1U8nlLejbz8uG3V0Se80D8nNx1s6C7lf0khpHMK9seL6k0LqJvKUxmzM2M= X-Gm-Gg: AR+sD13lgsFIPsdUxCf9TaiGihKlVqYrS7fXlSHgpapxrXiIIYHvocTA5OxFW+9ej6F cjRFYRuHX3F5SIoG0OnWfRNTvsG5BEaw7bxqovt+CqXFmjlQB8Gtk/LeZotnuk3Tln5qvCjySON 715zy3ixSd4uAAmPULpI18kXmyy5Ri4zn5QusK/JSx1o7Gkh7FmuNCdwnK8qsCLSZLlt/hfDlLP 55r+PURFAUjvClY/UJbiD7U5ezibGLqcbnJgkmYX1sLPyrw2KO3axENZqKkqrYXB1fQNpOgcL59 nRYxL2CxNGwGy0fTbWuqzWN9u1oWNcThRPgT7fLL2FTEoqDlVMfjK0BzrRQyjYUDKaUa0sN7L5l XPHJrtY0xeSPi+SpvtdcHJTit/1b7Hg== X-Received: by 2002:a05:6a20:918b:b0:3b4:c9d5:cd5b with SMTP id adf61e73a8af0-3c91b0a1441mr1541734637.13.1785494092738; Fri, 31 Jul 2026 03:34:52 -0700 (PDT) X-Received: by 2002:a05:6a20:918b:b0:3b4:c9d5:cd5b with SMTP id adf61e73a8af0-3c91b0a1441mr1541700637.13.1785494092261; Fri, 31 Jul 2026 03:34:52 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:51 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:45 +0530 Subject: [PATCH v7 5/9] arm64: dts: qcom: kodiak: Enable CDSP & Modem cooling 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: <20260731-b4-qmi-tmd-v7-5-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=12091; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=69/Nw/l2Pjw5IjdOIVkv2Ao4l0Ioh5cQnspi7SqHb80=; b=edLWO5Z7+F+QGCKLW57HYzllSUvNqZZZBQGarQPIvaJ/aZ9fYVA+Oa3onmIDgfFf7Vr5reFX1 BafK7ROf/0aBronokgrqfMgEI4QK6+evXHA69VRts211lO5toqfVm5i X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-GUID: jTffZFG30HNd13MiDUC8cBo7mlbwHyLr X-Proofpoint-ORIG-GUID: jTffZFG30HNd13MiDUC8cBo7mlbwHyLr X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX+r/Iuxi3LwhA V76syo5j0KP5EhLekwAYZhDBWasSp6pu5Lh7nBkMC2sUAJw4s10aTeQFIKJfkCEkL8OoJkfUEs/ Jv2593RzJPK898/NigRGRCHrnVBamy4= X-Authority-Analysis: v=2.4 cv=ScbHsPRu c=1 sm=1 tr=0 ts=6a6c7a4d cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=2Vcc7Fol4T68P4ep610A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX5Bqtb1FmEoj5 bYz0KYuj83RUGxfU2M2uSxxOgT9LsINRJWKjaLdCx1YYhBUQDiNh50pbw77dw44EKT1ejwQkJVX cf21JD/jjF/nqT80GsT+1oiBLD7sQacdP4UghFORRiarzS2K+snU/rACGsoahJWHjdmKmBGc0yw xHwqpk6XduiHLSkoQinC/8nK7CL9iwhDjFu+ZgKhdBwY2uunJlz4A4rDS6wDxz/eDQAApybrV9l 7pi0IU0j2kPepWvq7iYwojW1j3HqNYKsjP/wKBO9soPiSL5BUeQMRdCue9roHbSn89dKh8ThmPI i9pqJSOkLQWA2djfC0HwTk9S3uBXQbJ6uzzleDHrEUExqISHBVTO9dDaRZ/7XSOXqvBWAqQEvO3 7M5ExLGB/r7iWe7fEHGXvxmwH4wh11oeSErRiuq1IF+IflvhS2mrzHgxptoo8uNeeRdTRQRvlcf 7HV56NiYYCFInKIj1iQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Unlike the CPU, the CDSP/Modem does not throttle its speed automatically when it reaches high temperatures in kodiak. Set up CDSP cooling by throttling the cdsp when it reaches 100=C2=B0C and for modem when it reaches to 95=C2=B0C. Add polling-delay-passive so the governor periodically evaluates the zone during passive cooling and steps up cooling levels when temperature stabilizes below the next trip. Since the remoteproc_mpss node doesn't exist on non modem boards, the cooling-maps that reference it cause DT compilation errors. To fix that remove inherited mdmss cooling-map nodes. Reviewed-by: Daniel Lezcano Signed-off-by: Gaurav Kohli --- arch/arm64/boot/dts/qcom/kodiak.dtsi | 125 +++++++++++++++++= ++++ .../boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts | 8 ++ .../dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts | 8 ++ .../boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts | 8 ++ .../boot/dts/qcom/qcs6490-vicharak-axon-mini.dts | 8 ++ .../boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi | 10 ++ .../boot/dts/qcom/sc7280-herobrine-wifi-sku.dtsi | 9 ++ 7 files changed, 176 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qco= m/kodiak.dtsi index 7e73348fe0d0..53dcc5ebacd3 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -30,6 +30,7 @@ #include #include #include +#include #include =20 / { @@ -3431,6 +3432,8 @@ remoteproc_mpss: remoteproc@4080000 { qcom,smem-states =3D <&modem_smp2p_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -4803,6 +4806,8 @@ remoteproc_cdsp: remoteproc@a300000 { qcom,smem-states =3D <&cdsp_smp2p_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -7732,6 +7737,8 @@ map0 { }; =20 nspss0-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 3>; =20 trips { @@ -7741,15 +7748,31 @@ nspss0_alert0: trip-point0 { type =3D "hot"; }; =20 + nspss0_alert1: trip-point1 { + temperature =3D <100000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nspss0_crit: nspss0-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nspss0_alert1>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nspss1-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 4>; =20 trips { @@ -7759,12 +7782,26 @@ nspss1_alert0: trip-point0 { type =3D "hot"; }; =20 + nspss1_alert1: trip-point1 { + temperature =3D <100000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nspss1_crit: nspss1-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nspss1_alert1>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 video-thermal { @@ -7804,6 +7841,8 @@ ddr_crit: ddr-crit { }; =20 mdmss0-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 7>; =20 trips { @@ -7813,15 +7852,37 @@ mdmss0_alert0: trip-point0 { type =3D "hot"; }; =20 + mdmss0_alert1: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <2000>; + type =3D "passive"; + }; + mdmss0_crit: mdmss0-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + mdmss0_pa_cooling_map: map0 { + trip =3D <&mdmss0_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + mdmss0_modem_cooling_map: map1 { + trip =3D <&mdmss0_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 mdmss1-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 8>; =20 trips { @@ -7831,15 +7892,37 @@ mdmss1_alert0: trip-point0 { type =3D "hot"; }; =20 + mdmss1_alert1: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <2000>; + type =3D "passive"; + }; + mdmss1_crit: mdmss1-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + mdmss1_pa_cooling_map: map0 { + trip =3D <&mdmss1_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + mdmss1_modem_cooling_map: map1 { + trip =3D <&mdmss1_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 mdmss2-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 9>; =20 trips { @@ -7849,15 +7932,37 @@ mdmss2_alert0: trip-point0 { type =3D "hot"; }; =20 + mdmss2_alert1: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <2000>; + type =3D "passive"; + }; + mdmss2_crit: mdmss2-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + mdmss2_pa_cooling_map: map0 { + trip =3D <&mdmss2_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + mdmss2_modem_cooling_map: map1 { + trip =3D <&mdmss2_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 mdmss3-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens1 10>; =20 trips { @@ -7867,12 +7972,32 @@ mdmss3_alert0: trip-point0 { type =3D "hot"; }; =20 + mdmss3_alert1: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <2000>; + type =3D "passive"; + }; + mdmss3_crit: mdmss3-crit { temperature =3D <110000>; hysteresis =3D <0>; type =3D "critical"; }; }; + + cooling-maps { + mdmss3_pa_cooling_map: map0 { + trip =3D <&mdmss3_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_PA + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + + mdmss3_modem_cooling_map: map1 { + trip =3D <&mdmss3_alert1>; + cooling-device =3D <&remoteproc_mpss QCOM_TMD_MODEM + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 camera0-thermal { diff --git a/arch/arm64/boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts b/arch/a= rm64/boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts index 82ebd88f9aba..e3ddf47ce421 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-radxa-dragon-q6a.dts @@ -24,6 +24,14 @@ /delete-node/ &adsp_mem; /delete-node/ &cdsp_mem; /delete-node/ &ipa_fw_mem; +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; /delete-node/ &mpss_mem; /delete-node/ &remoteproc_mpss; /delete-node/ &remoteproc_wpss; diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts = b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts index c8eed8ba93f5..8ce0cf23deee 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-minipc-g1iot.dts @@ -22,6 +22,14 @@ /delete-node/ &cdsp_mem; /delete-node/ &ipa_fw_mem; /delete-node/ &mpss_mem; +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; /delete-node/ &remoteproc_mpss; /delete-node/ &remoteproc_wpss; /delete-node/ &rmtfs_mem; diff --git a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts b/ar= ch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts index d8a9a7e47bdc..abee1af19c23 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-thundercomm-rubikpi3.dts @@ -23,6 +23,14 @@ /delete-node/ &adsp_mem; /delete-node/ &cdsp_mem; /delete-node/ &ipa_fw_mem; +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; /delete-node/ &mpss_mem; /delete-node/ &remoteproc_mpss; /delete-node/ &remoteproc_wpss; diff --git a/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts b/arch= /arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts index 4f2e0109f49b..d3f558596ca2 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-vicharak-axon-mini.dts @@ -25,6 +25,14 @@ /delete-node/ &cdsp_mem; /delete-node/ &ipa_fw_mem; /delete-node/ &mpss_mem; +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; /delete-node/ &remoteproc_mpss; /delete-node/ &remoteproc_wpss; /delete-node/ &rmtfs_mem; diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi b/arch/= arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi index ac89724ee099..891941906a46 100644 --- a/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi @@ -28,8 +28,18 @@ &ipa { status =3D "okay"; }; =20 +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; + &remoteproc_mpss { compatible =3D "qcom,sc7280-mss-pil"; + /delete-property/ #cooling-cells; reg =3D <0 0x04080000 0 0x10000>, <0 0x04180000 0 0x48>; reg-names =3D "qdsp6", "rmb"; =20 diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine-wifi-sku.dtsi b/arch= /arm64/boot/dts/qcom/sc7280-herobrine-wifi-sku.dtsi index 3ebc915f0dc2..296c72672ec5 100644 --- a/arch/arm64/boot/dts/qcom/sc7280-herobrine-wifi-sku.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7280-herobrine-wifi-sku.dtsi @@ -7,6 +7,15 @@ =20 /* WIFI SKUs save 256M by not having modem/mba/rmtfs memory regions define= d. */ =20 +/delete-node/ &mdmss0_pa_cooling_map; +/delete-node/ &mdmss0_modem_cooling_map; +/delete-node/ &mdmss1_pa_cooling_map; +/delete-node/ &mdmss1_modem_cooling_map; +/delete-node/ &mdmss2_pa_cooling_map; +/delete-node/ &mdmss2_modem_cooling_map; +/delete-node/ &mdmss3_pa_cooling_map; +/delete-node/ &mdmss3_modem_cooling_map; + /delete-node/ &mpss_mem; /delete-node/ &remoteproc_mpss; /delete-node/ &rmtfs_mem; --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 2285E3E7BB0 for ; Fri, 31 Jul 2026 10:35:05 +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=1785494136; cv=none; b=qDdVulrYJ0AwVMurBAcAb0v72sogEzJhRXg7EbivO1VqViVutHDJCvskB2n1BsWxFO9mLeNppWYp5HGl2Hrjt0Zb6oIi3I9hYxrrmeXw1n2yoR4Hxe4iXnAUxTjbiN4RYBaD8ALIEkMlrgzXa3WLj5kcMLPsOnHbS9gF8fa8eug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494136; c=relaxed/simple; bh=zu8gupPC5A5PcDFsGHMjuTQqaVyyOo6BMNe0DLfwd9A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YEyw/kzCZIUP2HrTmWluunCGUmB1Nc2VLC6w0dYi0/+JuCmLxbUvBnk1IoiuWcmH78MXdQux2RSS2SUzAXUFJn2NJfr1NnT+bOlCUm0VV5scwesbvklpCNPzO5efkF3ESwQ0UUFcUWPY5F/s2j7E44zlkl4+gGY53DLyYfaQ/bM= 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=eKxMCkrP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=U28AMDQI; 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="eKxMCkrP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="U28AMDQI" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC9U1693438 for ; Fri, 31 Jul 2026 10:35:01 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= 7YD+0nJhg2tipomjvVHvKwH4PnwKW0weQoAtx/YRHdM=; b=eKxMCkrPvnwfbLFQ 7KP6DGZhz7qBb9xh/nukJeLm2zlWAFPwxjh0AtgaoI/430zhNQZa84bPiH1UHseA PsOHzjhPsZLrU/cx54ATkCmVi/jOQtd9FfuLEqFOmB+QM+2FRuio8+Hv6kLxM314 DoGSJjKdbaFyJ8k578/u0XqRzKMjfFfsQrKtcmp/x/ALHTCcFmB4pPxA1a7fhz70 SjSvHAXYa0m8BvavWi5Od8T73Voc+q9qtkzy/NA47rQgOFejrN4xO+4jBehvugev 7bNaqg4B6vqMSy6C41/VXyV0Fyo/KOTau/dCBm7PoL9yEi1BxuOPP61r3+29TaAm HMFiug== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frsn503dm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:35:00 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-ca6bd8a190cso1110383a12.0 for ; Fri, 31 Jul 2026 03:35:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494100; x=1786098900; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7YD+0nJhg2tipomjvVHvKwH4PnwKW0weQoAtx/YRHdM=; b=U28AMDQIPXNPC/ZGwOg3UN1qxOHvKk6H2+BBj+zC/ny7Ytd/Y3QuFCPaHwV1yD4lc3 a0JQIJbbKhOLU4uLa6femSE4xHdp6RoiRCJ5D9riwKyqdH0lclXiy6zhkaRaR8W+vH/b o4zXTxHOYJ2ZtTrrWFFN1JfRepB/osgvKplLn8BODcjmtNXya1AB5Z/F6Ku024MyScDF 3FcNAz5+xrK7FDq6VJWdvGeBtr71c0X3JuaF9xBbqBQHGDzM10jW48r/WG2f1xVawrfy dfpAmeaPqTG7MJRrwMaiSDhcDPltMXGaQ58J/YPrQaOXhrQkUqu+dsJe8yXXvq/hfnx9 BKDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494100; x=1786098900; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7YD+0nJhg2tipomjvVHvKwH4PnwKW0weQoAtx/YRHdM=; b=XmhdGwhjWrgI/fqquc4VpeCVWfrEoQG9P6fhUsW5swlnmRKsvY4pe+ZsD2Iet89Osn AO2td4stWNe7mDQeNm4m3KC1+LxwWQZPQ6QZ1USOLo6x3w8p21RHgH8gxRnUSoDj7rGU cIEGZSoju65KUMzRd++fQpR2J18ZSyXbxE+hsXdLrp9wuLY7gfABqid3b3HJpUt/oz5C LUQlJaexJB2/8ZPOHSHCjubyiGn1MnXIWLTuuf6kp2N/tHR/wbFjrpVoB1kofEdNUjq/ /G8Ao6MHoFdatC1s7/TNbItOCTnVOiVaLqmw2df4UOoYwffZCCKP/OFE3wnDswvo5k4T gynw== X-Forwarded-Encrypted: i=1; AHgh+RrvRfZqWIpVg+qinVCpoXx5GAYsE73rr4XERS7aGrqdrk0oJflHIUnXCYlAHsuOLyuwJ2thbYmiJ/Fl4QQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzZIs8bg9j7lxz6JVLF3zJsuKrI1HBdc6Fl8QqdLAHbFA4xDzWX nDIE1OfHvAYfu6Gw+yjGb/sVf2S+YeZY6Z+tShSfdGg5dt4OZjW3Br9HRGoePxzk7iuDKkOzPw/ p9q/tqHvcA53Td1rX/EXtOElI6jTRt82yovapE+KjsQnFk5CfLYrXKocGndPeH0x4RsA= X-Gm-Gg: AR+sD13Z7ryr+jylNH1N4UpkZN2JbywMKINtJoLpbZHNQTXG+Eowbanrbz4BBHyUJHt QCFS/no82jezOQ2Keqh/r0HvmHSO25bUPEKcyqPsMltGVqC5S7HQSaQ7nrK8f2WkxVTY8GK38M1 sRA5vnzs4aHL/C3StSqQj8PUB9N9rt6DeA5MI6Md8IgTQzf+SqDOcXMF4rcIXhqQE58hIIjNCOv +dT3r68+n867F95XJlOglH9KGMtheuEv2a1eNYov83FJQseRzC0Iq4rEOEhUVaY6qUVOmHdgjhH dsDsIlsw2NQdfyUqgIKMrRFFsk+qIGb8ONJ8euiLbWApDHDMbnaw5FbrWfnQBiw+MY+P3tqU4NT 9N62eIWaN4KVp9kEEoAstrKjcwLKbjw== X-Received: by 2002:a05:6a20:72a8:b0:3b1:cce5:9140 with SMTP id adf61e73a8af0-3c91b1fa5ccmr1486194637.33.1785494100136; Fri, 31 Jul 2026 03:35:00 -0700 (PDT) X-Received: by 2002:a05:6a20:72a8:b0:3b1:cce5:9140 with SMTP id adf61e73a8af0-3c91b1fa5ccmr1486155637.33.1785494099682; Fri, 31 Jul 2026 03:34:59 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.34.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:34:59 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:46 +0530 Subject: [PATCH v7 6/9] arm64: dts: qcom: lemans: Enable CDSP cooling 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: <20260731-b4-qmi-tmd-v7-6-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com, Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=8007; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=zu8gupPC5A5PcDFsGHMjuTQqaVyyOo6BMNe0DLfwd9A=; b=bqVA7apPugofHDMXHIlxYAXSKEGTOtlFaOfDqZA9Tz/LzoH8PDwtoONXVi3CChVOLbAT9NgEf 6UiH2mxtaH6AZZjPSxRINsy20hVYDP06iGhnPRZYBH2STYZ+KwiNgiz X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-GUID: uoKswngeFg5p5hmEhR2vrgaPpvY7LFGJ X-Proofpoint-ORIG-GUID: uoKswngeFg5p5hmEhR2vrgaPpvY7LFGJ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX8EpBmZny3bdq RLvvyv81xTZfHKPr3SVi6T4F+enPl7uqmcVWAmL/oPPP0YmGtZAhVALNw7jTRojMuip5yS88/01 Ja9mXUpsxWq8ZtFhXmNIQdGeJ0uLF3Y= X-Authority-Analysis: v=2.4 cv=ScbHsPRu c=1 sm=1 tr=0 ts=6a6c7a54 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=JpLBe5vfuqbXlpy2plQA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX3hjlfhtpPPZ3 wM/KgQY7Ik/NNQvW/dDmVXhog/kI4XLn2me8NKXP610v48BhqVqAY9ebI0w0L2Xuo+cFtSgOs+1 3WJkpIVX1XtydcW0UyfK41zRPkH0eRnloLJg/UhvSU5KF4K7vWl/2IbepGqpLWkoy1sBLap6qp9 Ex+AfKFSuJUtSpMpDWdK6CnyjpbBMb3o59ln1DlZEiSh4OFNOKjO86oQ2NBmUU39Cixb473mWH4 uY7nXW1H+E+/FBXYsvzRXix9GPTADM21lVVdjpYvqBgOSLhLqsmmImo1tZ7kGNoq4M8Q6Bz57JG /MRYMbQHv6QCExWBJZn2cfJxCDLnkbEUEpGFviXE74lmWbagKtmbcznxCWgQu4mTt5wF3nr2omH rLlUzD/TjDT2OdeyBlMyJn1ZAovWY/R59kSpPlLfguDA/ctX14FCz/lNEKSxohalAmiigzDdaH2 H+3qteFrooBILHM8/uw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 adultscore=0 priorityscore=1501 phishscore=0 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Unlike the CPU, the CDSP does not throttle its speed automatically when it reaches high temperatures in lemans. Set up CDSP cooling for both instances by throttling the cdsp, when it reaches 105=C2=B0C. Reviewed-by: Daniel Lezcano Reviewed-by: Dmitry Baryshkov Signed-off-by: Gaurav Kohli --- arch/arm64/boot/dts/qcom/lemans.dtsi | 125 +++++++++++++++++++++++++++++++= ---- 1 file changed, 113 insertions(+), 12 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qco= m/lemans.dtsi index 3b0539e27b51..2ca14300ec6d 100644 --- a/arch/arm64/boot/dts/qcom/lemans.dtsi +++ b/arch/arm64/boot/dts/qcom/lemans.dtsi @@ -21,6 +21,7 @@ #include #include #include +#include #include =20 / { @@ -7773,6 +7774,8 @@ remoteproc_cdsp0: remoteproc@26300000 { qcom,smem-states =3D <&smp2p_cdsp0_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -7912,6 +7915,8 @@ remoteproc_cdsp1: remoteproc@2a300000 { qcom,smem-states =3D <&smp2p_cdsp1_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -8760,7 +8765,7 @@ nsp-0-0-0-thermal { thermal-sensors =3D <&tsens2 5>; =20 trips { - trip-point0 { + nsp_0_0_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8772,6 +8777,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_0_0_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-1-0-thermal { @@ -8780,7 +8793,7 @@ nsp-0-1-0-thermal { thermal-sensors =3D <&tsens2 6>; =20 trips { - trip-point0 { + nsp_0_1_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8792,6 +8805,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_1_0_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-2-0-thermal { @@ -8800,7 +8821,7 @@ nsp-0-2-0-thermal { thermal-sensors =3D <&tsens2 7>; =20 trips { - trip-point0 { + nsp_0_2_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8812,6 +8833,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_2_0_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-0-0-thermal { @@ -8820,7 +8849,7 @@ nsp-1-0-0-thermal { thermal-sensors =3D <&tsens2 8>; =20 trips { - trip-point0 { + nsp_1_0_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8832,6 +8861,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_0_0_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-1-0-thermal { @@ -8840,7 +8877,7 @@ nsp-1-1-0-thermal { thermal-sensors =3D <&tsens2 9>; =20 trips { - trip-point0 { + nsp_1_1_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8852,6 +8889,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_1_0_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-2-0-thermal { @@ -8860,7 +8905,7 @@ nsp-1-2-0-thermal { thermal-sensors =3D <&tsens2 10>; =20 trips { - trip-point0 { + nsp_1_2_0_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -8872,6 +8917,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_2_0_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 ddrss-0-thermal { @@ -9014,7 +9067,7 @@ nsp-0-0-1-thermal { thermal-sensors =3D <&tsens3 5>; =20 trips { - trip-point0 { + nsp_0_0_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9026,6 +9079,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_0_1_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-1-1-thermal { @@ -9034,7 +9095,7 @@ nsp-0-1-1-thermal { thermal-sensors =3D <&tsens3 6>; =20 trips { - trip-point0 { + nsp_0_1_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9046,6 +9107,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_1_1_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-2-1-thermal { @@ -9054,7 +9123,7 @@ nsp-0-2-1-thermal { thermal-sensors =3D <&tsens3 7>; =20 trips { - trip-point0 { + nsp_0_2_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9066,6 +9135,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_2_1_alert0>; + cooling-device =3D <&remoteproc_cdsp0 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-0-1-thermal { @@ -9074,7 +9151,7 @@ nsp-1-0-1-thermal { thermal-sensors =3D <&tsens3 8>; =20 trips { - trip-point0 { + nsp_1_0_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9086,6 +9163,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_0_1_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-1-1-thermal { @@ -9094,7 +9179,7 @@ nsp-1-1-1-thermal { thermal-sensors =3D <&tsens3 9>; =20 trips { - trip-point0 { + nsp_1_1_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9106,6 +9191,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_1_1_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-1-2-1-thermal { @@ -9114,7 +9207,7 @@ nsp-1-2-1-thermal { thermal-sensors =3D <&tsens3 10>; =20 trips { - trip-point0 { + nsp_1_2_1_alert0: trip-point0 { temperature =3D <105000>; hysteresis =3D <5000>; type =3D "passive"; @@ -9126,6 +9219,14 @@ trip-point1 { type =3D "passive"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_1_2_1_alert0>; + cooling-device =3D <&remoteproc_cdsp1 QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 ddrss-1-thermal { --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 C36C042A155 for ; Fri, 31 Jul 2026 10:35:11 +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=1785494129; cv=none; b=BZmGFj9VS2sH4UFaRflPbn49xAetRyBQ0O2kbrB5ZukJTLMwkwYTpPLCU62GUmCZ+2I6avO0w++XodSS3VA/B7lHXXu8KRYGVDPFgUwBTMYr8M787bJ6n7vWBCbQEf+2NCh8LP6UztEl3ylvkPY4iweYxQ9FhCi8jQESIykYq/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494129; c=relaxed/simple; bh=8jCvvQvR/TUK8TVzkPQrR6iOrXuHBCo0rM5hCiElzIA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fuAXRPz1JZplMhE3+N9CKZNSB2i7P2hBpL5f8mSYtlG6fMWS253+Dhma5snNfl4NHgDCD8CF0Yv1Rkg920syK9IyUQJqRaK5PU0j07/PiOK72u/tCFlx6WO19OIZiI1q0H2tOa6q0cJTBy0Nvb0G0NkdjKNwLkB8lXE5LcKKA6c= 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=UCf5tq4Y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RJtrGoRQ; 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="UCf5tq4Y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RJtrGoRQ" 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 66VAC2Pb3693969 for ; Fri, 31 Jul 2026 10:35:08 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= wTHLwHQvEfPrSw7dqgVln+HLO66Otor7GBfQ5C0UNnk=; b=UCf5tq4YVIpM/623 6V0sPxSZuiceUJhyQTbrMmSWE0V6VC03wx1cCSMjw1l2YYy+9z2H4nfGXTMSuDnB O2H2RGVZ3VT7StgSyMbSJqaUxmGxTxAFAZLy2dx05JbqAiO1bS9/JuPA9UrwjnFR v50CH6/wQKHcIz/ccPqw2cPrO3khhTzopI5LDabMDpH9c24LxSYMx8l2an477odj tdF97BqzgDdo9OFQP6UfJw63qxXYysoEz4JAF6FT3e2C6pkDpfCtqYb4IXIeuwW6 lfJB8fvzLuQIfnN3VErK1hIIp9jNoYh9khFKmZkrB2ZOAcKFV43wOERcIhZcc3sS idPNuQ== 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 4frsk683uk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:35:08 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2d001671a54so17091875ad.2 for ; Fri, 31 Jul 2026 03:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494107; x=1786098907; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wTHLwHQvEfPrSw7dqgVln+HLO66Otor7GBfQ5C0UNnk=; b=RJtrGoRQJLGoEmgPvck02QZk6QPdeVzNYWFUEyN/XpZx2axULtVOlo+m2/8/lcdUg7 LAO7cYWaMN6q+NDV2+sfm/Sl6gif7WOhQi7NYlHdKIaCzNclEYSt9rdDERq4VHHCDfJZ LgIpk3mi6d/AYFzARC8alCBPjovRbFofYeWi0w8xaNa8CtS1V1Ob5ARZHyoApBWFgcpQ 97wdzxibhJ/j61VJTYVbjktFXNNRB1FAMmpAX2/g6HcXzws8Jm8KBILWiC+h66FReVE0 SKAXW6z3rOW7RYulME+ERkz7HZv2vqmKsu8uu4iJs9gm1pjkQ1VS9YOqrkZarZqojq9l Pnog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494107; x=1786098907; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=wTHLwHQvEfPrSw7dqgVln+HLO66Otor7GBfQ5C0UNnk=; b=sz69fh3aPGJir3zw/litac3vnZtKwtPHoNGAIvtUxhGcNkn+k6f+PIBCYJoIxamkHS u/3A5+SWZHBHENwRm8QE7CAViyztRv74EkQOMDZ4dbm4+QUPCsAuFMRmhTzlzlGTf/vK CyNGe/HxhcfH3y2Ags4Ha5M4b5LueWM5po3OUp8WxJMoTVRxJVWtURFKt7CMVlq7cOw8 DIMSxfQtJQ3lhBTG27K1kiPnn8TJ9zqkjYtv6mQmXWelXjWwUIH+Wz54lTgd1l68+J56 q1B8hvqtzl5H5DZOr2H1vFifaROoTfAXmmPGoLpnUODeI5qjJuAWp2Ep61lQaulUvU54 QAug== X-Forwarded-Encrypted: i=1; AHgh+RqvXpLH0i+NMmy4nT5csC0PWWidN3jjmNpRugEvO4hMHoPjkeqZPQEH48OGLJ4AMoTysCYfoc8rO6o7RkY=@vger.kernel.org X-Gm-Message-State: AOJu0YyLjPZeW++2lvtv+AnQYKaoHnzuMrrzehKHjw7R6ZMKyGXsKbfo N6wK6NYoUZoN6N1Wm+gaooqAQvA8B2ZSxf8nlE56zFLHZRve8W2T1yC9VRCqimjiFZba5nG5ZQi HrnlZBmVGO5gGe8xD5Y2bmBN961GTJJzaI8Dc0R/r2h2tSXI6OE4FjYA28P6Ks+e5KpY= X-Gm-Gg: AR+sD135++LlBaEmyerzleHPR+PD+wWUTS0jmpeT2YK1fBVPQEWllcACqK6ax+rADv/ zZ3AyDNgbM6Es6ZkP8qJhhmTJj7hYGBLnXjyiFRnz1UWlPErO81i472m+8WRrjVu7VW8FueYrm7 8Q1n1RRmkL72Sfae+Kzbgt8i25+sUP2M/BpQiMk2qWg+KS14NPNxldxqHviRp5FwS2PFGN9QZJO aSly5Q+lL9NbNtmnl+0arUvW0JYSQ6UjKOrmWFy4zFEC2HRzgnUFg0kg7sPK6HY2iLVrJpdIcOk d3OE2NO88l24cSOqyAAkKRE8089Oer45FnQtBYoI8TE8f67FaTE9gb3E75SW1G9qay6ohO6xnmi 8R/vbllVqEOCuiHcshVa6YG9QqLzwKg== X-Received: by 2002:a17:903:4683:b0:2cf:47c4:3d1a with SMTP id d9443c01a7336-2d046d70b30mr15627875ad.3.1785494107447; Fri, 31 Jul 2026 03:35:07 -0700 (PDT) X-Received: by 2002:a17:903:4683:b0:2cf:47c4:3d1a with SMTP id d9443c01a7336-2d046d70b30mr15627615ad.3.1785494107074; Fri, 31 Jul 2026 03:35:07 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.35.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:35:06 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:47 +0530 Subject: [PATCH v7 7/9] arm64: dts: qcom: talos: Enable CDSP cooling 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: <20260731-b4-qmi-tmd-v7-7-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com, Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=1994; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=8jCvvQvR/TUK8TVzkPQrR6iOrXuHBCo0rM5hCiElzIA=; b=95ug3fuOSgVxrn5ZroqFPVPz8oce5m8u2Db2rhrpdC/rTCUQuE+HE6RrAO/i6tSsH9u36kgiE UCzR3CMjg3+BJ6ptUwwbgY02X9A9rc4A4eRU3uk0DIlOd0DDFi1cdTL X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-ORIG-GUID: G9LjDunSmZZ42sMYKWUVzw7nsOXB1Hnl X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX5a1YKh63tgRO snvggC63doo7q/dQ+SedmL5qTmxEqwcqtnC7ishEYWPFGmO3w1TeqW0wdkVpf0ervARhTguPMi8 BbLFHO/Bby4L1U9IGvQytvjSQTjIGO0= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfXwsDsK+IzdSkk /cD33FEm5LyjKfTBF0gnn6GLXT+EjqHkzH/FoXYxlHsmCrHO3qmwSCuag4yC3rj5iXQcH97jBGn xUOONPR9eTQc9kMAcCn0NNXQqe6U7MQW3eIlWyiDDYbjcWP0UIx3m3AZrnhbiXYWTHmg6LMHJ+j zW/LiE+1pQwbw8l6dnZWbRjUf/kdPX6bERUoU5k0kUWJxInfNx4vV5sjIi83z/2en7qk5a/ji04 cxpxu/I3wgSKRW5gw6pOdmvrY5JIuoxZdsz7LUOhVkysVGgnCxpYjhEtPamH485saMXFYS1r9Ad rrcAY6FS6z+FzLTHDjDj23BfY5EBZqFCdeCkvow0+chy6r/EI1TprDV5YBEAypM9EVmNPuktE9a hOkKTnb7icHDjVK7rFFzXvxkupoMJo5c30n7wk7iub8Uvstk++gbgUTtmAib2jixBJ1V1HXCoH0 7aTKi0sLhf52YDQWR/Q== X-Authority-Analysis: v=2.4 cv=RLGD2Yi+ c=1 sm=1 tr=0 ts=6a6c7a5c cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=ptpooaJMTZRctn2qr1AA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: G9LjDunSmZZ42sMYKWUVzw7nsOXB1Hnl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Unlike the CPU, the CDSP does not throttle its speed automatically when it reaches high temperatures in talos. Set up CDSP cooling by throttling the cdsp, when it reaches 105=C2=B0C. Add polling-delay-passive so the governor periodically evaluates the zone during passive cooling and steps up cooling levels when temperature stabilizes below the next trip. Reviewed-by: Daniel Lezcano Reviewed-by: Dmitry Baryshkov Signed-off-by: Gaurav Kohli --- arch/arm64/boot/dts/qcom/talos.dtsi | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom= /talos.dtsi index bdfb70ca9740..0fb7cb8e9f64 100644 --- a/arch/arm64/boot/dts/qcom/talos.dtsi +++ b/arch/arm64/boot/dts/qcom/talos.dtsi @@ -21,6 +21,7 @@ #include #include #include +#include #include =20 / { @@ -3840,6 +3841,8 @@ remoteproc_cdsp: remoteproc@8300000 { qcom,smem-states =3D <&cdsp_smp2p_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -5497,15 +5500,31 @@ map0 { }; =20 q6-hvx-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens0 10>; =20 trips { + q6_hvx_alert0: trip-point0 { + temperature =3D <105000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + q6-hvx-critical { temperature =3D <115000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&q6_hvx_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 mdm-core-thermal { --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 92B1741B8CE for ; Fri, 31 Jul 2026 10:35:20 +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=1785494140; cv=none; b=uIBCFrNeL8TgoO4HJBx6QEYTFKO1KPpdRpI3m1H1jDxGTmeaTwxf0YPXTqBeL3Z0urZLuf30VplJPmQ3IeXFFNF3kXVwA01B8N+K4c6UtfTlFxBHrML34Z1XTLcnvcZQLsg1clrLSbxwsxygeHjxsjVKW7ofxB+HGaWqXJPzG7o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494140; c=relaxed/simple; bh=A/ZlkhpKXOXspcZO+2h9v+w/LUVpdAPN+/yLddIsV6A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IuaFwRbXKCd4SVcnZOH+DYVDqpQY8CmcfrDB6hCLSu0emw+DxxWxtwbCSSLQjvJDxYcSeA0fA7yQYGILaSGoIfzAgkPP+rYUElA7jOyprqFuNDrAYadKOl7FhWakcHOB7p4iJQfRS3gHv6X/wxku0BGqoRX/eY/d1jaijB34718= 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=Y6VOScih; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZoF6vrnG; 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="Y6VOScih"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZoF6vrnG" 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 66VAC2Pf3693969 for ; Fri, 31 Jul 2026 10:35:16 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= STAmXKRhhM1PNoYloH77abYDI2FiolvS4IlxwlZE50k=; b=Y6VOScih8JgGFT3U l1dM7GGDI8GX8US58P0lTVwALcjVnvbLZfSh0z60UAbV8XnQ3tK2zkjE4UXWifBL DnAKN5XW/JL/hcQkF9iw0PYxLmOTvEImEiKTNzqZ6WYzwWnWQLXayDDxNtDxelX5 BnbaVgCXh6cppDnM2w+bJoqp35sj2OzZ47OG9Ul4q1vdaUZTOyDn9XXaqNeqdzfG HHjqIOVhJX+ZNw7W0c77NmEJL8fBfIWJkN7FKnpJ6OysNLLyRgbjWWBbs7PGpyS4 L8wVBBfXVNakyYqSkMcneQrxkQwaXRQzAWRFDeItiHMHjHluIw+/CnppFY9CKcyE 0B2QeQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frsk683v4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:35:15 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb7049fa552so573319a12.2 for ; Fri, 31 Jul 2026 03:35:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494115; x=1786098915; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=STAmXKRhhM1PNoYloH77abYDI2FiolvS4IlxwlZE50k=; b=ZoF6vrnG2N9pBTTgn5e0ojn8mFbsQgBuqHT7l2OePHdWYH+zI7BL06XrFq7ZO18q4H xIFVOD/IC+ixd4xw7cVDdaQDqbYksPVfzeKOb4GCUlPVtk5xKSWvMRDjZk5Fcg6L0KT/ 1yHvwLj7YAJlc0nGUDjQfILhG+BOjDTZS2vJswbyQ+MEJ4ODgva6xrIfRmTZVGF4KR4U mQK3xZbD+nFcGvzLsX23HVsZvpSU5kn1QUk4tBhrdDexigX/Df6nkolNjHn3g3l5bnej 0pV1m/Tyug63/THPY507fkdvy3IymLpuF3RFJ/qXr0fAiz+uhloaMkC+pOQz3Yy6PxOJ VsBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494115; x=1786098915; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=STAmXKRhhM1PNoYloH77abYDI2FiolvS4IlxwlZE50k=; b=qGzilH0XQ0kUjIMJttHsr++A3wOhM8PgKmWMV2R+g4U/dqQ+A3A5MIwCQJyJia3JSD aQ4/w2V10q16sFaWWGs2sdmLYmfTY+GfcchEb2NtCGEC50N71N6f3idPoAGmDCdLGCEO oCMpc+5BaOuq98We4Yk7EPPl9OfwIgFjOL70GJSNrZy8/vn95piRGor2PYfnucyORqCD DDJhIGDVPg6MWnASCt0O5uRRwPtTX7KSuQeOJLk3u46/XFEriv1ytN50nSY3ezXLBHGn iYTJKq3g4koTngQTyWTBhbA1y7dnzQCw06j9Dmh13ec+Hc8F6U0KOYtfx31pjUlef2TR G4KA== X-Forwarded-Encrypted: i=1; AHgh+RqS/MxjGCGfGL0eDCSQtgj6fr5+LfH26SG71it2ew8dO8NzylV5yk7O9g8ZMy0r3dZKJ+NFsmNalTwj+c8=@vger.kernel.org X-Gm-Message-State: AOJu0YyzwvgaLf49ImQ+sQ5AcoEQtKWHLlU2u/NtgnRJqjNnqlPcF2v9 HMWo4b0BJlHa3cStI0YYoPg9+YZUBKGuCNOzBlmFHY90CYrnMLrLgk3uDXPJ6DZXlVvYpXpU+xu rGY8w5llJEj8z1pMOeMsqBU8qozc4TI0wglYCUaoh+j2FnzUBh5XgPmwH7zhQgm86YPQ= X-Gm-Gg: AR+sD13GuopbwcUzDRCUpb8IAwSdzC5NctSIhylmHoUGZ7yNCPNLtve2Cz/FBWyTUD4 8vSrdok6zETRx2nRPhydzTArHRJyiJfBY7Lp0x7W4YJKvtZkV0T3ubBvsIacHt4CeYxuwtqNP8+ rtEzpHKLSOboWCpZiucBu0ZVKPsi89Bmseir1YT3p60cDRzI0L4abPPlyNkZoRHaQYvRgLrAapX wzSCjNvCwcaMYLxYQidDz4RbrH+Y9j2vswY5OyYnBBs78hk4ha7eZZPTL7fW9Eey53HzJl1AZDY ng49F/VVeYepSCshDWbGRUM4uxByY6JYj/76PObFcIldrP178y5fAlZIEvR1llKSVn92Zvxlwnq e3FdWlQo8247NIIupXc35WWfbAZmz8g== X-Received: by 2002:a05:6a21:398b:b0:3c4:147e:98f1 with SMTP id adf61e73a8af0-3c91b1b787amr1394353637.31.1785494114857; Fri, 31 Jul 2026 03:35:14 -0700 (PDT) X-Received: by 2002:a05:6a21:398b:b0:3c4:147e:98f1 with SMTP id adf61e73a8af0-3c91b1b787amr1394328637.31.1785494114451; Fri, 31 Jul 2026 03:35:14 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.35.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:35:14 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:48 +0530 Subject: [PATCH v7 8/9] arm64: dts: qcom: monaco: Enable CDSP cooling 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: <20260731-b4-qmi-tmd-v7-8-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com, Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=4988; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=A/ZlkhpKXOXspcZO+2h9v+w/LUVpdAPN+/yLddIsV6A=; b=+5o2HRYkHVQPeDVqOC1L2PCMgamDI+SCXDu+VNafphfciyjIg1zWSRatSJTQF/2umIlVQNWrN DLdpDkFNhRaDjU17czVHOh+0byHIoQhmTVgsD2P3an4UsV2YmJYadjY X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Proofpoint-ORIG-GUID: 8oLGuOOdlx9tHuSBl6JOAXvi2Q37IKxb X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX0Ca6bXY3Y+hl EaS/uYwoal/eZ99Rj5hiLfUZoP2cjU5jpsnegCrpcZcyeUExLOFqpdMnQccEFZ4/DkAKO5ADgER Tg0SxAppHamhkCmFOLbQMlblvZ7rzeM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX6E7XLIf4P9KP FxOpqNUR+YV7snqVuYiMb3IzGcqG9xYO8l5xsvfpqcCEVyeoQLU2xaGtsKV+EaQg6RfWlWjtdCv c0yDoshzkHClm4xlzDxnwZEz70thOpQwczxF0XXL+UkfN4pM2TpdXUr92BjyB/gzAmX7xEZMF3/ G5Q9rQAfvYropOqioYNvfFVOfL1A6VuI+EfAotNQIzqqMXw4KVz1SA/gdPen52jeVVZUyO8F40Z Z9w8J3/4dUQQLr3n4R1o4cTn3ygKtfXtSTqYFgR6VVRxw5CH8HYJjnMhjvPiww7X8qcGiEif1mi SZ949GxC8f4f6lz/NFFcqLH5U3TQ8EXp1w8OGsxSJlTV8U+YT1WvvPBMPYigcqQ3SM4VmpcK+DN Gp4CUbTZvGEj22yqNxj0xLl/fYotwyppSm2jN3QILyyYdF/Bj1LjEYOh00EvtGOoIKccAhKfIcS aVGzf84jfLiFbuyyfdg== X-Authority-Analysis: v=2.4 cv=RLGD2Yi+ c=1 sm=1 tr=0 ts=6a6c7a63 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=ND7YSEQ52W-Uskv0B9cA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: 8oLGuOOdlx9tHuSBl6JOAXvi2Q37IKxb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 Unlike the CPU, the CDSP does not throttle its speed automatically when it reaches high temperatures in monaco. Set up CDSP cooling by throttling the cdsp, when it reaches 115=C2=B0C. Add polling-delay-passive so the governor periodically evaluates the zone during passive cooling and steps up cooling levels when temperature stabilizes below the next trip. Reviewed-by: Daniel Lezcano Reviewed-by: Dmitry Baryshkov Signed-off-by: Gaurav Kohli --- arch/arm64/boot/dts/qcom/monaco.dtsi | 99 ++++++++++++++++++++++++++++++++= ++++ 1 file changed, 99 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/monaco.dtsi b/arch/arm64/boot/dts/qco= m/monaco.dtsi index 64fc0d592282..3f388c000fbb 100644 --- a/arch/arm64/boot/dts/qcom/monaco.dtsi +++ b/arch/arm64/boot/dts/qcom/monaco.dtsi @@ -22,6 +22,7 @@ #include #include #include +#include #include =20 / { @@ -7738,6 +7739,8 @@ remoteproc_cdsp: remoteproc@26300000 { qcom,smem-states =3D <&smp2p_cdsp_out 0>; qcom,smem-state-names =3D "stop"; =20 + #cooling-cells =3D <3>; + status =3D "disabled"; =20 glink-edge { @@ -8170,39 +8173,87 @@ cpu-critical { }; =20 nsp-0-0-0-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens2 5>; =20 trips { + nsp_0_0_0_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_0_0_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-1-0-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens2 6>; =20 trips { + nsp_0_1_0_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_1_0_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-2-0-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens2 7>; =20 trips { + nsp_0_2_0_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_2_0_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 ddrss-0-thermal { @@ -8290,39 +8341,87 @@ cpu-critical { }; =20 nsp-0-0-1-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens3 5>; =20 trips { + nsp_0_0_1_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_0_1_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-1-1-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens3 6>; =20 trips { + nsp_0_1_1_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_1_1_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 nsp-0-2-1-thermal { + polling-delay-passive =3D <200>; + thermal-sensors =3D <&tsens3 7>; =20 trips { + nsp_0_2_1_alert0: trip-point0 { + temperature =3D <115000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp-critical { temperature =3D <125000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp_0_2_1_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 ddrss-1-thermal { --=20 2.34.1 From nobody Fri Oct 2 13:07:19 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 729C23DDAED for ; Fri, 31 Jul 2026 10:35:27 +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=1785494143; cv=none; b=nXNTKKTV7PN55gh6DB+Ny0dNC4539WhpAad1zZZkYhyryIF22cu2zkfkscrJ4mztMAr93oeO5KTm5irrpXatjSs6hlHAgl91MSVRIyGwIZ+6cKDYszNtHZGvEhM7qqgpXjV9976nqmm3aI4A/UD9nf/417goXtHAd6lNKjmb+M8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785494143; c=relaxed/simple; bh=6vbB4hBh+gusGs6dkiq1dbLEwReBdJNRJzcINxJ4Zro=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cy79baQVljBOjo6nqyvgHfAcWGEMvkm3/2i6xCMNBgkwbxoxp/mzt4DvkYu3FgLc3e3VlJe+YoMZMsSKaYUKRhgJeOJYUDeHh64xLYiFHHfheIke5IlapSy4U8ifJnf3tCCIqvB7YDC1uQb+Q1YCHKxJj6W8FZz0GsYe+5dw7dM= 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=XLLMdFg8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YAL8OAhV; 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="XLLMdFg8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YAL8OAhV" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66VAC3c83560120 for ; Fri, 31 Jul 2026 10:35:23 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= RzI0A46DWA9lcb4B8wkaFvT1daqB8HHaBBKVkBGVxPw=; b=XLLMdFg8ADivKXI+ ahul3iK1j/BaE4hJY3SoU/NXyDrDMaiiJVF/4YTHlWulHG7wV75nNsU7tkOt1b1p AbTXrtlGW9l2MEPreBF8qEvdDqb+mCpyta3/XydOTrPwMLomSP6ggaeJM4acWm3h Y5skk3LYi2oZfxY3dOcpfQ8+Fp0dPyeBKQcImIbAwuJXDJaWGVLJnbY/ouhzcW7p tdLAv8O94IPJwy5J5dG9B504xIKdcspyFjGhGcyHHG9oH2uzEHERJo5MR/oSJz8Y Edus5PgtjZc1vbKi66mz3c5inxOI62m8wkaMNBcM70IzS94J7oBi77/OK2cxVBw4 SXwrpQ== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4frse4050w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 10:35:23 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-3811279d51aso1542132a91.1 for ; Fri, 31 Jul 2026 03:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785494123; x=1786098923; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RzI0A46DWA9lcb4B8wkaFvT1daqB8HHaBBKVkBGVxPw=; b=YAL8OAhVt5HTyoSaWCP+b3mFBXRTFPxFn+efWMuo1ZtyVkfqtdxX/via2c5bcCawFn VHRyR1PynEgNC6RlrK5MdQVScLX06i5kC1NpgIvciCdZBVaBzpMqTxy0Vb3Zb6I/yGL3 dnwDGBNjl7jkWsrFjG/ws3dLZEPJR1erGmIds7Bl+CQF09iOTn8Pse9sQgHBtvyuBU21 zOdL9zoQSloS0CZORof/QheoCvosQnOwBdgn8wtqRFI6NSQUdcDZu5HKxtKCJ1C3HyCN OhkhRbZmEF3hoaKYKEcpcYlL86HqGE2kPaM9YrfxOGHnhebPk38N0Hb2zXbJdq3/UVFl KU0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785494123; x=1786098923; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=RzI0A46DWA9lcb4B8wkaFvT1daqB8HHaBBKVkBGVxPw=; b=ro5ov3eispYfstW6hH3lY5flXUnNYupiItW0YpGUBndYta/VuBqVEh9iVj/yXc5bba 21c4SsOv/BHvosp2tmB/lkgIb7BIT42gHjQV8yFr5EL9Fa4fOsC98FvtVoi4D4jRWMk1 vAI9ByR8dwA0PZAanS3DuaLSMWzzCL/pcf81o6s2ME4PAFCv2/6C8KRStbokNOAOEUQ/ KAtY6K6pgIIRCFIkI1DT54MIzPZe0Rc8VPVkfeO9B8nwZj7fOHWHKL27XFrkk5Jx+laQ gR0eVzEEbQwSMmQa1uOw2cNRAqu0piZ70KQ4VOgCg1fDXaD2JKZN3X4L/KLHeH9f5Y6/ EQbQ== X-Forwarded-Encrypted: i=1; AHgh+Rru9it160HSE94kz1c+w2W5dOXclKkFAuZMXejGgAmS+C/c7/gnwKmVO2EVpoQ1J0jN2x7gwS5lja7A89c=@vger.kernel.org X-Gm-Message-State: AOJu0Yx60N9NI+HdZreCJMIACoLPl1HxcHdQUdkUpBqKiDk1nhRT4b/2 eJjIT5BaoN74CkWy3CTYCNMAy/aONKj+CILOgq4gWrDPtx8Zo4Ru4N/jnae7vCR3HPR4ALagmw4 0g98UJHpQg2/RHgUN2uxHSNUyS9R50bo6ZTEX9pYoPqEYrUZ8Ea/nfa/12vb0CDnzgjM= X-Gm-Gg: AR+sD11xS/YWSaiWbN7OGUYmteaEPcAiaMbC9l/GhdLnXgHGBz8XPH77SIBYDRxUOyl dLgukHQqVGqWLWZyqAOwNIK+SAeucljZxAEyuHyRyN6DBk5GWofms9N+v4o1nqWTKnCK0TeJHfc Ito9iTMrplSBFbxy4Zcbj0ErLRmfDhnLVsTopumk5TGTv8MDWf+POTA3QlibIS/fEUOzEbSh86m 0F77ngNHe4AlPjxcykSeQxb6gkAoC6u4/YWfqSub/qQkhCqGGofKD5anlqokyPqMlcFMzpAqmN7 5BjiNivNLN76cLfuKeWrXeoFxO/UGaptGXb0bmV04OjLlEx9TzGN8c4u/3a7Q78tbkDDyG6K/6u 39QHPhizOczCAp4diIJvXvIIWGjHxVA== X-Received: by 2002:a17:90b:4f84:b0:381:792d:f993 with SMTP id 98e67ed59e1d1-38fb11546efmr1413741a91.17.1785494122603; Fri, 31 Jul 2026 03:35:22 -0700 (PDT) X-Received: by 2002:a17:90b:4f84:b0:381:792d:f993 with SMTP id 98e67ed59e1d1-38fb11546efmr1413709a91.17.1785494122124; Fri, 31 Jul 2026 03:35:22 -0700 (PDT) Received: from hu-gkohli-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153e18e114sm8493680eec.28.2026.07.31.03.35.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 03:35:21 -0700 (PDT) From: Gaurav Kohli Date: Fri, 31 Jul 2026 16:03:49 +0530 Subject: [PATCH v7 9/9] arm64: dts: qcom: hamoa: Enable CDSP cooling 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: <20260731-b4-qmi-tmd-v7-9-3befd44403d5@oss.qualcomm.com> References: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> In-Reply-To: <20260731-b4-qmi-tmd-v7-0-3befd44403d5@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Daniel Lezcano , Amit Kucheria , Konrad Dybcio , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Manivannan Sadhasivam , Gaurav Kohli , Kees Cook , "Gustavo A. R. Silva" , cros-qcom-dts-watchers@chromium.org Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org, manaf.pallikunhi@oss.qualcomm.com, Dipa Ramesh Mantre , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785494047; l=4850; i=gaurav.kohli@oss.qualcomm.com; s=20260302; h=from:subject:message-id; bh=T+LWXFgO37ykz7QFpFuPZJtNbUg0dFqDmwyZszrZ564=; b=47uwe6oyRw031WnV6NYULJm0jnaGNFw+LCko0f0PXsOYCU6NZluyF6bsO0NLfe/h4g2oopfYG g/kAXu7Q8vZB7aMI46Nv3DlPoweO4Ra3EQXFfVXom718Oe/Hf9G+a0C X-Developer-Key: i=gaurav.kohli@oss.qualcomm.com; a=ed25519; pk=IdNsqe8rWsF6dbpGHfwPEH9zM0nbOdRH72HxUT9qPak= X-Authority-Analysis: v=2.4 cv=HslG3UTS c=1 sm=1 tr=0 ts=6a6c7a6b cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=ND7YSEQ52W-Uskv0B9cA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-ORIG-GUID: qmql56QJVByN2Uk03AQpc-DZj8J800RN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX3azIgGJdAQJm ba0r9Q2v5TgGywMcqubGq9J+keHwrL/Bwu/Z01TxNZq/FGJwxFGLHmfX+YGmAKr+ZpKxO0fGdhR 9qmTBAC+wHX5EQINvJkJLO2XZ9DS3p7XppfjSJpBruDoHx8gmPpEckqsEcmn/PX/YDXzRUtJXEu InuzcstGdot6BO2OhOj7CKEMyvbwB3dKIXmX7OMkb+Ygl57ebHAr4HJy1Ez+hU9mHdvuMJDCWgN mqXELCJh1lOcfzWL80gZoQSmUnfhp8EBQVn4E5t88A6YzNJMQvfEn5ipd+7Yj2H5JZT2JiHCXqa GfVNUySqLWH/X/p0aCe9FVYbRGrVj+Gu0m9CoxtXw2xyPDTL4E/4AC1Dd593vpdXHj8SnZEhRzw MmJrGvUsbs6ZfU17AraFBSBenPOWCFgxb5rwlAATlUKwqDf52o8kJ/rC98080gesyui17PdM9gz DiM3cTrhpfwFyrZAi8w== X-Proofpoint-GUID: qmql56QJVByN2Uk03AQpc-DZj8J800RN X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA3OSBTYWx0ZWRfX8VjYVvsNE8wB aeqkjGbb8+8GYmE4s2N0WWkXOgQrEzylE+XltcvgWYfgTj5aHiGD/tm1f9KPtBbIm+2J+x0e2Jn k7beR/cEmcUCKoStT5W4iQMDdeh7DAc= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_03,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 adultscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310079 From: Dipa Ramesh Mantre Unlike the CPU, the CDSP does not throttle its speed automatically when it reaches high temperatures in hamoa. Set up CDSP cooling by throttling the cdsp, when it reaches 95=C2=B0C. Add polling-delay-passive so the governor periodically evaluates the zone during passive cooling and steps up cooling levels when temperature stabilizes below the next trip. Signed-off-by: Dipa Ramesh Mantre Reviewed-by: Dmitry Baryshkov Signed-off-by: Gaurav Kohli --- arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 32 +++++++++++++++ arch/arm64/boot/dts/qcom/hamoa.dtsi | 63 ++++++++++++++++++++++++++= ++++ 2 files changed, 95 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/d= ts/qcom/hamoa-iot-evk.dts index 9fa86bb6438e..a146be1cb5fb 100644 --- a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts @@ -1684,4 +1684,36 @@ trip-point0 { }; }; }; + + nsp0-thermal { + trips { + trip-point1 { + temperature =3D <105000>; + }; + }; + }; + + nsp1-thermal { + trips { + trip-point1 { + temperature =3D <105000>; + }; + }; + }; + + nsp2-thermal { + trips { + trip-point1 { + temperature =3D <105000>; + }; + }; + }; + + nsp3-thermal { + trips { + trip-point1 { + temperature =3D <105000>; + }; + }; + }; }; diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom= /hamoa.dtsi index 09527dcf9576..ba453c8ca80d 100644 --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi @@ -23,6 +23,7 @@ #include #include #include +#include #include =20 / { @@ -8971,6 +8972,8 @@ remoteproc_cdsp: remoteproc@32300000 { =20 status =3D "disabled"; =20 + #cooling-cells =3D <3>; + glink-edge { interrupts-extended =3D <&ipcc IPCC_CLIENT_CDSP IPCC_MPROC_SIGNAL_GLINK_QMP @@ -9558,6 +9561,7 @@ aoss0-critical { }; =20 thermal_nsp0: nsp0-thermal { + polling-delay-passive =3D <200>; thermal-sensors =3D <&tsens3 1>; =20 trips { @@ -9567,15 +9571,30 @@ trip-point0 { type =3D "hot"; }; =20 + nsp0_alert0: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp0-critical { temperature =3D <115000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp0_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 thermal_nsp1: nsp1-thermal { + polling-delay-passive =3D <200>; thermal-sensors =3D <&tsens3 2>; =20 trips { @@ -9585,15 +9604,30 @@ trip-point0 { type =3D "hot"; }; =20 + nsp1_alert0: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp1-critical { temperature =3D <115000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp1_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 thermal_nsp2: nsp2-thermal { + polling-delay-passive =3D <200>; thermal-sensors =3D <&tsens3 3>; =20 trips { @@ -9603,15 +9637,30 @@ trip-point0 { type =3D "hot"; }; =20 + nsp2_alert0: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp2-critical { temperature =3D <115000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp2_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 thermal_nsp3: nsp3-thermal { + polling-delay-passive =3D <200>; thermal-sensors =3D <&tsens3 4>; =20 trips { @@ -9621,12 +9670,26 @@ trip-point0 { type =3D "hot"; }; =20 + nsp3_alert0: trip-point1 { + temperature =3D <95000>; + hysteresis =3D <5000>; + type =3D "passive"; + }; + nsp3-critical { temperature =3D <115000>; hysteresis =3D <1000>; type =3D "critical"; }; }; + + cooling-maps { + map0 { + trip =3D <&nsp3_alert0>; + cooling-device =3D <&remoteproc_cdsp QCOM_TMD_CDSP_SW + THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; }; =20 thermal_gpuss_0: gpuss-0-thermal { --=20 2.34.1