aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJie Zhan <zhanjie9@hisilicon.com>2025-06-23 22:34:00 +0800
committerChanwoo Choi <cw00.choi@samsung.com>2025-07-14 20:22:59 +0900
commit45b9d1da6ca0d0285140f8779793b537e4560d45 (patch)
tree2fce41c0c35257dbdd565c9ec99810b993cc0d38
parentPM / devfreq: sun8i-a33-mbus: Simplify by using more devm functions (diff)
downloadlinux-45b9d1da6ca0d0285140f8779793b537e4560d45.tar.gz
linux-45b9d1da6ca0d0285140f8779793b537e4560d45.zip
PM / devfreq: Allow devfreq driver to add custom sysfs ABIs
Extend the devfreq_dev_profile to allow drivers optionally create device-specific sysfs ABIs together with other common devfreq ABIs under the devfreq device path. Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Reviewed-by: Huisong Li <lihuisong@huawei.com> Signed-off-by: Jie Zhan <zhanjie9@hisilicon.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Link: https://patchwork.kernel.org/project/linux-pm/patch/20250623143401.4095045-2-zhanjie9@hisilicon.com/
-rw-r--r--drivers/devfreq/devfreq.c1
-rw-r--r--include/linux/devfreq.h4
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index c5f5960e643b..2e8d01d47f69 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -831,6 +831,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
mutex_lock(&devfreq->lock);
devfreq->dev.parent = dev;
devfreq->dev.class = devfreq_class;
+ devfreq->dev.groups = profile->dev_groups;
devfreq->dev.release = devfreq_dev_release;
INIT_LIST_HEAD(&devfreq->node);
devfreq->profile = profile;
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index d312ffbac4dd..dc1075dc3446 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -103,6 +103,8 @@ struct devfreq_dev_status {
*
* @is_cooling_device: A self-explanatory boolean giving the device a
* cooling effect property.
+ * @dev_groups: Optional device-specific sysfs attribute groups that to
+ * be attached to the devfreq device.
*/
struct devfreq_dev_profile {
unsigned long initial_freq;
@@ -119,6 +121,8 @@ struct devfreq_dev_profile {
unsigned int max_state;
bool is_cooling_device;
+
+ const struct attribute_group **dev_groups;
};
/**