From: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
To: rafael@kernel.org, daniel.lezcano@kernel.org
Cc: "Zhang Rui" <rui.zhang@intel.com>,
"Lukasz Luba" <lukasz.luba@arm.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Russell King" <linux+etnaviv@armlinux.org.uk>,
"Christian Gmeiner" <christian.gmeiner@gmail.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Guenter Roeck" <linux@roeck-us.net>,
"Joel Stanley" <joel@jms.id.au>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
"Thomas Weißschuh" <linux@weissschuh.net>,
"Benson Leung" <bleung@chromium.org>,
"Pali Rohár" <pali@kernel.org>,
"Avi Fishman" <avifishman70@gmail.com>,
"Tomer Maimon" <tmaimon77@gmail.com>,
"Tali Perry" <tali.perry1@gmail.com>,
"Patrick Venture" <venture@google.com>,
"Nancy Yuen" <yuenn@google.com>,
"Benjamin Fair" <benjaminfair@google.com>,
"Heiko Stuebner" <heiko@sntech.de>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Amit Daniel Kachhap" <amit.kachhap@gmail.com>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Amit Kucheria" <amitk@kernel.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hwmon@vger.kernel.org,
etnaviv@lists.freedesktop.org (moderated list:DRM DRIVERS FOR
VIVANTE GPU IP),
dri-devel@lists.freedesktop.org (open list:DRM DRIVERS FOR
VIVANTE GPU IP)
Subject: [PATCH v4 07/10] thermal/of: Add cooling device ID support
Date: Tue, 26 May 2026 16:08:08 +0200 [thread overview]
Message-ID: <20260526140802.1059293-19-daniel.lezcano@oss.qualcomm.com> (raw)
In-Reply-To: <20260526140802.1059293-12-daniel.lezcano@oss.qualcomm.com>
Introduce an identifier (cdev_id) for cooling devices registered from
device tree.
This prepares support for a new DT binding where cooling devices are
identified by a tuple (device node, ID), instead of relying on child
nodes.
Existing users are updated to pass a default ID of 0, preserving the
current behavior.
Future changes will extend the cooling map parsing to match cooling
devices based on both the device node and the ID.
No functional change intended.
Signed-off-by: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
---
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 5 +++--
drivers/thermal/cpufreq_cooling.c | 2 +-
drivers/thermal/cpuidle_cooling.c | 2 +-
drivers/thermal/devfreq_cooling.c | 2 +-
drivers/thermal/thermal_of.c | 14 ++++++++------
include/linux/thermal.h | 6 ++++--
6 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index a891d4f1f843..552631c3554a 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1791,8 +1791,9 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
int ret;
if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL)) {
- gpu->cooling = thermal_of_cooling_device_register(dev->of_node,
- (char *)dev_name(dev), gpu, &cooling_ops);
+ gpu->cooling = thermal_of_cooling_device_register(dev->of_node, 0,
+ dev_name(dev),
+ gpu, &cooling_ops);
if (IS_ERR(gpu->cooling))
return PTR_ERR(gpu->cooling);
}
diff --git a/drivers/thermal/cpufreq_cooling.c b/drivers/thermal/cpufreq_cooling.c
index 32bf5ab44f4a..768859a7aed0 100644
--- a/drivers/thermal/cpufreq_cooling.c
+++ b/drivers/thermal/cpufreq_cooling.c
@@ -592,7 +592,7 @@ __cpufreq_cooling_register(struct device_node *np,
if (!name)
goto remove_qos_req;
- cdev = thermal_of_cooling_device_register(np, name, cpufreq_cdev,
+ cdev = thermal_of_cooling_device_register(np, 0, name, cpufreq_cdev,
cooling_ops);
kfree(name);
diff --git a/drivers/thermal/cpuidle_cooling.c b/drivers/thermal/cpuidle_cooling.c
index 425f596614e8..bbd2e91cf5ab 100644
--- a/drivers/thermal/cpuidle_cooling.c
+++ b/drivers/thermal/cpuidle_cooling.c
@@ -207,7 +207,7 @@ static int __cpuidle_cooling_register(struct device_node *np,
goto out_unregister;
}
- cdev = thermal_of_cooling_device_register(np, name, idle_cdev,
+ cdev = thermal_of_cooling_device_register(np, 0, name, idle_cdev,
&cpuidle_cooling_ops);
if (IS_ERR(cdev)) {
ret = PTR_ERR(cdev);
diff --git a/drivers/thermal/devfreq_cooling.c b/drivers/thermal/devfreq_cooling.c
index 1c7dffc8d45f..0330a8112832 100644
--- a/drivers/thermal/devfreq_cooling.c
+++ b/drivers/thermal/devfreq_cooling.c
@@ -454,7 +454,7 @@ of_devfreq_cooling_register_power(struct device_node *np, struct devfreq *df,
if (!name)
goto remove_qos_req;
- cdev = thermal_of_cooling_device_register(np, name, dfc, ops);
+ cdev = thermal_of_cooling_device_register(np, 0, name, dfc, ops);
kfree(name);
if (IS_ERR(cdev)) {
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index b59d2588ff7a..0110b195f7a3 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -514,6 +514,7 @@ EXPORT_SYMBOL_GPL(devm_thermal_of_zone_unregister);
/**
* thermal_of_cooling_device_register() - register an OF thermal cooling device
* @np: a pointer to a device tree node.
+ * @cdev_id: a cooling device id in the cooling controller
* @type: the thermal cooling device type.
* @devdata: device private data.
* @ops: standard thermal cooling devices callbacks.
@@ -528,9 +529,9 @@ EXPORT_SYMBOL_GPL(devm_thermal_of_zone_unregister);
* ERR_PTR. Caller must check return value with IS_ERR*() helpers.
*/
struct thermal_cooling_device *
-thermal_of_cooling_device_register(struct device_node *np,
- const char *type, void *devdata,
- const struct thermal_cooling_device_ops *ops)
+thermal_of_cooling_device_register(struct device_node *np, u32 cdev_id,
+ const char *type, void *devdata,
+ const struct thermal_cooling_device_ops *ops)
{
struct thermal_cooling_device *cdev;
int ret;
@@ -540,6 +541,7 @@ thermal_of_cooling_device_register(struct device_node *np,
return cdev;
cdev->np = np;
+ cdev->cdev_id = cdev_id;
ret = thermal_cooling_device_add(cdev, devdata);
if (ret)
@@ -585,9 +587,9 @@ devm_thermal_of_child_cooling_device_register(struct device *dev,
struct thermal_cooling_device *cdev;
int ret;
- cdev = thermal_of_cooling_device_register(np, type, devdata, ops);
- if (IS_ERR(cdev))
- return cdev;
+ cdev = thermal_of_cooling_device_register(np, 0, type, devdata, ops);
+ if (IS_ERR(cdev))
+ return cdev;
ret = devm_add_action_or_reset(dev, thermal_of_cooling_device_release, cdev);
if (ret)
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index e6328234a42b..fb7649439dfa 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -134,6 +134,7 @@ struct thermal_cooling_device {
struct list_head node;
#ifdef CONFIG_THERMAL_OF
struct device_node *np;
+ u32 cdev_id;
#endif
#ifdef CONFIG_THERMAL_DEBUGFS
struct thermal_debugfs *debugfs;
@@ -201,7 +202,8 @@ struct thermal_zone_device *devm_thermal_of_zone_register(struct device *dev, in
void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz);
struct thermal_cooling_device *
-thermal_of_cooling_device_register(struct device_node *np, const char *type, void *devdata,
+thermal_of_cooling_device_register(struct device_node *np, u32 cdev_id,
+ const char *type, void *data,
const struct thermal_cooling_device_ops *ops);
struct thermal_cooling_device *
@@ -224,7 +226,7 @@ static inline void devm_thermal_of_zone_unregister(struct device *dev,
}
static inline struct thermal_cooling_device *
-thermal_of_cooling_device_register(struct device_node *np,
+thermal_of_cooling_device_register(struct device_node *np, u32 cdev_id,
const char *type, void *devdata,
const struct thermal_cooling_device_ops *ops)
{
--
2.43.0
next prev parent reply other threads:[~2026-05-26 14:08 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 14:08 [PATCH v3 00/11] Support cooling device with ID in the OF Daniel Lezcano
2026-05-26 14:08 ` [PATCH v4 01/10] thermal/core: Introduce non-OF thermal_cooling_device_register() Daniel Lezcano
2026-05-29 9:47 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 02/10] thermal/core: Add devm_thermal_cooling_device_register() Daniel Lezcano
2026-05-29 12:55 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 03/10] hwmon: Use non-OF thermal cooling device registration API Daniel Lezcano
2026-05-29 12:55 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 04/10] thermal/core: Make cooling device OF node conditional on CONFIG_THERMAL_OF Daniel Lezcano
2026-05-29 13:27 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 05/10] thermal/of: Move cooling device OF helpers out of thermal core Daniel Lezcano
2026-05-29 13:26 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 06/10] thermal/of: Rename the devm_thermal_of_cooling_device_register() function Daniel Lezcano
2026-05-29 15:17 ` Lukasz Luba
2026-05-26 14:08 ` Daniel Lezcano [this message]
2026-05-29 15:18 ` [PATCH v4 07/10] thermal/of: Add cooling device ID support Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 08/10] thermal/of: Pass cdev_id and introduce devm registration helper Daniel Lezcano
2026-05-29 15:21 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 09/10] thermal/of: Support cooling device ID in cooling-spec Daniel Lezcano
2026-05-29 15:25 ` Lukasz Luba
2026-05-26 14:08 ` [PATCH v4 10/10] dt-bindings: thermal: cooling-devices: Update support for 3 cells cooling device Daniel Lezcano
2026-05-29 15:26 ` Lukasz Luba
2026-05-29 8:35 ` [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF Daniel Lezcano
2026-05-29 12:35 ` Rafael J. Wysocki
2026-05-29 12:41 ` Daniel Lezcano
2026-05-29 15:29 ` Lukasz Luba
2026-05-29 15:31 ` Daniel Lezcano
2026-05-29 17:34 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260526140802.1059293-19-daniel.lezcano@oss.qualcomm.com \
--to=daniel.lezcano@oss.qualcomm.com \
--cc=airlied@gmail.com \
--cc=amit.kachhap@gmail.com \
--cc=amitk@kernel.org \
--cc=andersson@kernel.org \
--cc=andrew@codeconstruct.com.au \
--cc=avifishman70@gmail.com \
--cc=benjaminfair@google.com \
--cc=bleung@chromium.org \
--cc=christian.gmeiner@gmail.com \
--cc=conor+dt@kernel.org \
--cc=daniel.lezcano@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=etnaviv@lists.freedesktop.org \
--cc=heiko@sntech.de \
--cc=joel@jms.id.au \
--cc=jonathanh@nvidia.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=linux@weissschuh.net \
--cc=lukasz.luba@arm.com \
--cc=neil.armstrong@linaro.org \
--cc=pali@kernel.org \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=rui.zhang@intel.com \
--cc=simona@ffwll.ch \
--cc=tali.perry1@gmail.com \
--cc=thierry.reding@gmail.com \
--cc=tmaimon77@gmail.com \
--cc=venture@google.com \
--cc=viresh.kumar@linaro.org \
--cc=yuenn@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox