mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
thermal/of: Add cooling device ID support
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> Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org> Link: https://patch.msgid.link/20260526140802.1059293-19-daniel.lezcano@oss.qualcomm.com
This commit is contained in:
parent
8e1529e793
commit
37324803f0
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user