On 7/3/26 17:42, Dmitry Baryshkov wrote:
On Fri, Jul 03, 2026 at 07:43:39PM +0530, Gaurav Kohli wrote:


On 7/3/2026 1:23 PM, Konrad Dybcio wrote:
On 7/3/26 7:03 AM, Gaurav Kohli wrote:
Add Device Tree binding constants for Qualcomm Thermal Mitigation
Device (TMD) types used by remoteproc-backed thermal cooling devices.

Qualcomm remote processors expose thermal mitigation endpoints
through QMI. These endpoints can be registered with the thermal
framework via the `#cooling-cells` property on the remoteproc node.

The QMI TMD protocol identifies devices using string names (for example,
"pa", "modem", and "cdsp_sw"), while the DT cooling-device binding with
`#cooling-cells = <3>` requires numeric device id in the form:

    <&phandle device_id min_state max_state>

Define common TMD device index constants shared across currently
supported platforms. If a future target requires a different mapping,
additional target-specific constants can be introduced while preserving
existing DT ABI.

Signed-off-by: Gaurav Kohli <[email protected]>
---
   MAINTAINERS                                 |  1 +
   include/dt-bindings/firmware/qcom,qmi-tmd.h | 20 ++++++++++++++++++++
   2 files changed, 21 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 57656ec0e9d5..ffd85fd1dd80 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3410,6 +3410,7 @@ F:        drivers/firmware/qcom/
   F:   drivers/soc/qcom/
   F:   drivers/watchdog/gunyah_wdt.c
   F:   include/dt-bindings/arm/qcom,ids.h
+F:     include/dt-bindings/firmware/qcom,qmi-tmd.h
   F:   include/dt-bindings/firmware/qcom,scm.h
   F:   include/dt-bindings/soc/qcom*
   F:   include/linux/firmware/qcom
diff --git a/include/dt-bindings/firmware/qcom,qmi-tmd.h 
b/include/dt-bindings/firmware/qcom,qmi-tmd.h
new file mode 100644
index 000000000000..73efecef0f3c
--- /dev/null
+++ b/include/dt-bindings/firmware/qcom,qmi-tmd.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Qualcomm QMI TMD (Thermal Mitigation Device) cooling device indices
+ *
+ * These indices are used in device tree cooling-maps to reference
+ * specific TMD devices provided by remote processors via QMI.
+ *
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+#ifndef _DT_BINDINGS_FIRMWARE_QCOM_QMI_TMD_H
+#define _DT_BINDINGS_FIRMWARE_QCOM_QMI_TMD_H
+
+/* CDSP thermal mitigation device id */
+#define QCOM_CDSP_TMD_CDSP_SW  0
+
+/* Modem thermal mitigation device id */
+#define QCOM_MODEM_TMD_PA      0
+#define QCOM_MODEM_TMD_MODEM   1

What about the dozens other ones that Dmitry's laptop reports?Ri


Thanks for the review, Konrad.

We are only defining constants for the TMD devices that are actually used
for thermal mitigation on the platforms supported by this series.

Why are you using only those TMD devices?

More constants can be added as needed.

Kodiak is one of the supported platforms.

What would be the benefit of having more than thirteen cooling devices declared in the thermal framework and having only a couple of them mapped in a thermal zone ?

I agree there are more TMDs but if they are unused for the moment, why do we need to add them ? Can we do that incrementally ?

Running the same tool produces:

TMD service: instance=0x00 (modem) node=0 port=20
   29 mitigation device(s):
     [ 0] pa                       max_mitigation_level=3
     [ 1] pa_fr1                   max_mitigation_level=3
     [ 2] modem                    max_mitigation_level=3
     [ 3] cpuv_restriction_cold    max_mitigation_level=1
     [ 4] modem_current            max_mitigation_level=3
     [ 5] vbatt_low                max_mitigation_level=3
     [ 6] charge_state             max_mitigation_level=3
     [ 7] modem_skin               max_mitigation_level=3
     [ 8] modem_bw                 max_mitigation_level=5
     [ 9] mmw0                     max_mitigation_level=3
     [10] mmw1                     max_mitigation_level=3
     [11] mmw2                     max_mitigation_level=3
     [12] mmw3                     max_mitigation_level=3
     [13] mmw_skin0                max_mitigation_level=3
     [14] mmw_skin1                max_mitigation_level=3
     [15] mmw_skin2                max_mitigation_level=3
     [16] mmw_skin3                max_mitigation_level=3
     [17] mmw_skin0_dsc            max_mitigation_level=15
     [18] mmw_skin1_dsc            max_mitigation_level=15
     [19] mmw_skin2_dsc            max_mitigation_level=15
     [20] mmw_skin3_dsc            max_mitigation_level=15
     [21] wlan                     max_mitigation_level=4
     [22] wlan_bw                  max_mitigation_level=1
     [23] modem_skin_lte_dsc       max_mitigation_level=255
     [24] modem_skin_nr_dsc        max_mitigation_level=255
     [25] pa_dsc                   max_mitigation_level=255
     [26] pa_fr1_dsc               max_mitigation_level=255
     [27] modem_bw_backoff         max_mitigation_level=255
     [28] cpr_cold                 max_mitigation_level=3

TMD service: instance=0x01 (adsp) node=5 port=8
   1 mitigation device(s):
     [ 0] cpuv_restriction_cold    max_mitigation_level=1

TMD service: instance=0x43 (cdsp) node=10 port=9
   3 mitigation device(s):
     [ 0] cpuv_restriction_cold    max_mitigation_level=1
     [ 1] cdsp_hw                  max_mitigation_level=1
     [ 2] cdsp_sw                  max_mitigation_level=7



https://lore.kernel.org/linux-arm-msm/4gs664zboaqgpok33x7bgorfmhh3f2fahjkt4jjl6fbzpwixnm@hxzz2xeogd4k/

Konrad




Reply via email to