Linux Tegra architecture development
 help / color / mirror / Atom feed
From: Armin Wolf <W_Armin@gmx.de>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
	 Daniel Lezcano <daniel.lezcano@linaro.org>,
	Zhang Rui <rui.zhang@intel.com>,
	 Lukasz Luba <lukasz.luba@arm.com>, Len Brown <lenb@kernel.org>,
	 Jonathan Corbet <corbet@lwn.net>,
	Ido Schimmel <idosch@nvidia.com>,
	 Petr Machata <petrm@nvidia.com>
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	 etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	 linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org,
	 linux-doc@vger.kernel.org, netdev@vger.kernel.org,
	 linux-wireless@vger.kernel.org, ath10k@lists.infradead.org,
	 ath11k@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	 linux-mediatek@lists.infradead.org,
	platform-driver-x86@vger.kernel.org,  linux-pci@vger.kernel.org,
	imx@lists.linux.dev,  linux-renesas-soc@vger.kernel.org
Subject: [PATCH RFC RESEND 1/8] thermal: core: Allow setting the parent device of cooling devices
Date: Thu, 20 Nov 2025 04:41:11 +0100	[thread overview]
Message-ID: <20251120-thermal-device-v1-1-bbdad594d57a@gmx.de> (raw)
In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de>

Currently, cooling devices have no parent device, potentially causing
issues with suspend ordering and making it impossible for consumers
(thermal zones and userspace appications) to associate a given cooling
device with its parent device.

Extend __thermal_cooling_device_register() to also accept a parent
device pointer. For now only devm_thermal_of_cooling_device_register()
uses this, as the other wrapper functions need to be extended first.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/thermal/thermal_core.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 17ca5c082643..c8b720194b44 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1040,6 +1040,7 @@ static void thermal_cooling_device_init_complete(struct thermal_cooling_device *
 
 /**
  * __thermal_cooling_device_register() - register a new thermal cooling device
+ * @parent:	parent device pointer.
  * @np:		a pointer to a device tree node.
  * @type:	the thermal cooling device type.
  * @devdata:	device private data.
@@ -1055,7 +1056,7 @@ static void thermal_cooling_device_init_complete(struct thermal_cooling_device *
  * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
  */
 static struct thermal_cooling_device *
-__thermal_cooling_device_register(struct device_node *np,
+__thermal_cooling_device_register(struct device *parent, struct device_node *np,
 				  const char *type, void *devdata,
 				  const struct thermal_cooling_device_ops *ops)
 {
@@ -1092,6 +1093,7 @@ __thermal_cooling_device_register(struct device_node *np,
 	cdev->ops = ops;
 	cdev->updated = false;
 	cdev->device.class = thermal_class;
+	cdev->device.parent = parent;
 	cdev->devdata = devdata;
 
 	ret = cdev->ops->get_max_state(cdev, &cdev->max_state);
@@ -1158,7 +1160,7 @@ 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(NULL, NULL, type, devdata, ops);
 }
 EXPORT_SYMBOL_GPL(thermal_cooling_device_register);
 
@@ -1182,7 +1184,7 @@ 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);
+	return __thermal_cooling_device_register(NULL, np, type, devdata, ops);
 }
 EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register);
 
@@ -1222,7 +1224,7 @@ devm_thermal_of_cooling_device_register(struct device *dev,
 	if (!ptr)
 		return ERR_PTR(-ENOMEM);
 
-	tcd = __thermal_cooling_device_register(np, type, devdata, ops);
+	tcd = __thermal_cooling_device_register(dev, np, type, devdata, ops);
 	if (IS_ERR(tcd)) {
 		devres_free(ptr);
 		return tcd;

-- 
2.39.5


  reply	other threads:[~2025-11-20  3:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-20  3:41 [PATCH RFC RESEND 0/8] thermal: core: Allow setting the parent device of thermal zone/cooling devices Armin Wolf
2025-11-20  3:41 ` Armin Wolf [this message]
2025-11-20  3:41 ` [PATCH RFC RESEND 2/8] thermal: core: Set parent device in thermal_of_cooling_device_register() Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 3/8] ACPI: processor: Stop creating "device" sysfs link Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 4/8] ACPI: fan: " Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 5/8] ACPI: video: " Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 6/8] thermal: core: Set parent device in thermal_cooling_device_register() Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 7/8] ACPI: thermal: Stop creating "device" sysfs link Armin Wolf
2025-11-20  3:41 ` [PATCH RFC RESEND 8/8] thermal: core: Allow setting the parent device of thermal zone devices Armin Wolf
2025-11-21 20:35 ` [PATCH RFC RESEND 0/8] thermal: core: Allow setting the parent device of thermal zone/cooling devices Rafael J. Wysocki
2025-11-22 14:18   ` Armin Wolf
2025-11-27 17:41     ` Rafael J. Wysocki
2025-11-27 20:06       ` Armin Wolf
2025-11-27 21:46         ` Rafael J. Wysocki
2025-11-27 23:49           ` Armin Wolf
2025-11-28 11:40             ` Rafael J. Wysocki
2025-11-29 11:35               ` Armin Wolf
2025-11-30 12:55                 ` Rafael J. Wysocki
2025-11-27 18:22     ` Rafael J. Wysocki
2025-11-27 20:29       ` Armin Wolf
2025-11-27 22:14         ` Rafael J. Wysocki
2025-11-27 23:52           ` Armin Wolf

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=20251120-thermal-device-v1-1-bbdad594d57a@gmx.de \
    --to=w_armin@gmx.de \
    --cc=ath10k@lists.infradead.org \
    --cc=ath11k@lists.infradead.org \
    --cc=corbet@lwn.net \
    --cc=daniel.lezcano@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=etnaviv@lists.freedesktop.org \
    --cc=idosch@nvidia.com \
    --cc=imx@lists.linux.dev \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=netdev@vger.kernel.org \
    --cc=petrm@nvidia.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rui.zhang@intel.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