public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
To: rafael@kernel.org, daniel.lezcano@kernel.org
Cc: gaurav.kohli@oss.qualcomm.com, "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
Subject: [PATCH v3 03/11] thermal/of: Move the node pointer assignation in the OF code file
Date: Wed, 29 Apr 2026 18:14:16 +0200	[thread overview]
Message-ID: <20260429161430.3802970-4-daniel.lezcano@oss.qualcomm.com> (raw)
In-Reply-To: <20260429161430.3802970-1-daniel.lezcano@oss.qualcomm.com>

The node pointer being assigned to the cooling device structure is an
action done by the thermal OF only and does not belong to the core
framework code. Move the node pointer assignation in the thermal OF
code. Consequently, the devm_thermal_of_cooling_device_register() can
call its non-devm version resulting in a more intuitive design of the
API.

Signed-off-by: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
---
 drivers/thermal/thermal_core.c | 51 +++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 5c954bcae4a4..7867e6bc0a6c 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1040,26 +1040,11 @@ static void thermal_cooling_device_init_complete(struct thermal_cooling_device *
 		thermal_zone_cdev_bind(tz, cdev);
 }
 
-/**
- * __thermal_cooling_device_register() - register a new thermal cooling device
- * @np:		a pointer to a device tree node.
- * @type:	the thermal cooling device type.
- * @devdata:	device private data.
- * @ops:	standard thermal cooling devices callbacks.
- *
- * This interface function adds a new thermal cooling device (fan/processor/...)
- * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
- * to all the thermal zone devices registered at the same time.
- * It also gives the opportunity to link the cooling device to a device tree
- * node, so that it can be bound to a thermal zone created out of device tree.
- *
- * Return: a pointer to the created struct thermal_cooling_device or an
- * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
- */
 static struct thermal_cooling_device *
-__thermal_cooling_device_register(struct device_node *np,
-				  const char *type, void *devdata,
-				  const struct thermal_cooling_device_ops *ops)
+__thermal_cooling_device_register(const char *type, void *devdata,
+				  const struct thermal_cooling_device_ops *ops,
+				  void (*initcb)(struct thermal_cooling_device *,
+						 void *), void *data)
 {
 	struct thermal_cooling_device *cdev;
 	unsigned long current_state;
@@ -1089,7 +1074,6 @@ __thermal_cooling_device_register(struct device_node *np,
 
 	mutex_init(&cdev->lock);
 	INIT_LIST_HEAD(&cdev->thermal_instances);
-	cdev->np = np;
 	cdev->ops = ops;
 	cdev->updated = false;
 	cdev->device.class = &thermal_class;
@@ -1127,6 +1111,9 @@ __thermal_cooling_device_register(struct device_node *np,
 	if (current_state <= cdev->max_state)
 		thermal_debug_cdev_add(cdev, current_state);
 
+	if (initcb)
+		initcb(cdev, data);
+
 	thermal_cooling_device_init_complete(cdev);
 
 	return cdev;
@@ -1146,7 +1133,7 @@ __thermal_cooling_device_register(struct device_node *np,
  * thermal_cooling_device_register() - register a new thermal cooling device
  * @type:	the thermal cooling device type.
  * @devdata:	device private data.
- * @ops:		standard thermal cooling devices callbacks.
+ * @ops:	standard thermal cooling devices callbacks.
  *
  * This interface function adds a new thermal cooling device (fan/processor/...)
  * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
@@ -1159,10 +1146,17 @@ struct thermal_cooling_device *
 thermal_cooling_device_register(const char *type, void *devdata,
 				const struct thermal_cooling_device_ops *ops)
 {
-	return __thermal_cooling_device_register(NULL, type, devdata, ops);
+	return __thermal_cooling_device_register(type, devdata, ops, NULL, NULL);
 }
 EXPORT_SYMBOL_GPL(thermal_cooling_device_register);
 
+static void thermal_of_cooling_device_init(struct thermal_cooling_device *cdev, void *data)
+{
+	struct device_node *np = data;
+
+	cdev->np = np;
+}
+
 /**
  * thermal_of_cooling_device_register() - register an OF thermal cooling device
  * @np:		a pointer to a device tree node.
@@ -1183,7 +1177,14 @@ thermal_of_cooling_device_register(struct device_node *np,
 				   const char *type, void *devdata,
 				   const struct thermal_cooling_device_ops *ops)
 {
-	return __thermal_cooling_device_register(np, type, devdata, ops);
+	struct thermal_cooling_device *cdev;
+
+	cdev = __thermal_cooling_device_register(type, devdata, ops,
+						 thermal_of_cooling_device_init, np);
+	if (IS_ERR(cdev))
+		return cdev;
+
+	return cdev;
 }
 EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register);
 
@@ -1217,7 +1218,7 @@ devm_thermal_cooling_device_register(struct device *dev,
 	struct thermal_cooling_device *cdev;
 	int ret;
 
-	cdev = __thermal_cooling_device_register(NULL, type, devdata, ops);
+	cdev = thermal_cooling_device_register(type, devdata, ops);
 	if (IS_ERR(cdev))
 		return cdev;
 
@@ -1255,7 +1256,7 @@ devm_thermal_of_cooling_device_register(struct device *dev,
 	struct thermal_cooling_device *cdev;
 	int ret;
 
-	cdev = __thermal_cooling_device_register(np, type, devdata, ops);
+	cdev = thermal_of_cooling_device_register(np, type, devdata, ops);
 	if (IS_ERR(cdev))
 		return cdev;
 
-- 
2.43.0


  parent reply	other threads:[~2026-04-29 16:14 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-29 16:14 [PATCH v3 00/11] Support cooling device with ID in the OF Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 01/11] thermal/core: Use devm_add_action_or_reset() when registering a cooling device Daniel Lezcano
2026-04-30 19:57   ` Rafael J. Wysocki
2026-04-29 16:14 ` [PATCH v3 02/11] thermal/core: Add a non-OF registering function Daniel Lezcano
2026-04-30 20:04   ` Rafael J. Wysocki
2026-04-29 16:14 ` Daniel Lezcano [this message]
2026-04-29 16:14 ` [PATCH v3 04/11] hwmon:: Use non-OF thermal cooling device register function Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 05/11] thermal/core: Put of_node field cooling device structure under Kconfig option Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 06/11] thermal/of: Move OF code where it belongs to Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 07/11] thermal/of: Rename the devm_thermal_of_cooling_device_register() function Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 08/11] thermal/of: Introduce cooling device of_index Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 09/11] thermal/of: Pass the of_index and add a function to register with an index Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 10/11] thermal/of: Process cooling device index in cooling-spec Daniel Lezcano
2026-04-29 16:14 ` [PATCH v3 11/11] dt-bindings: thermal: cooling-devices: Update support for 3 cells cooling device Daniel Lezcano

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=20260429161430.3802970-4-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=gaurav.kohli@oss.qualcomm.com \
    --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