From 32948d8b864c2a30cbd68c19c3400db7bdc1fbd4 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Wed, 16 Oct 2019 14:46:03 +0800 Subject: [PATCH] PM / devfreq: Add new device link for sysfs As the device name has been changed to devfreq(X), but user should find devfreq driver with their parent device name, so add a new link named with parent name. Change-Id: I5077ddecbcc8db8d59cb6f16f2be5107b391677d Signed-off-by: Finley Xiao --- drivers/devfreq/devfreq.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 504c28d18636..af7c8c30add6 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -27,6 +27,9 @@ #include #include #include "governor.h" +#ifdef CONFIG_ARCH_ROCKCHIP +#include "../base/base.h" +#endif static struct class *devfreq_class; @@ -634,6 +637,18 @@ struct devfreq *devfreq_add_device(struct device *dev, goto err_out; } +#ifdef CONFIG_ARCH_ROCKCHIP + if (sysfs_create_link(&devfreq->dev.class->p->subsys.kobj, + &devfreq->dev.kobj, dev_name(dev))) { + dev_err(dev, "failed to create devfreq %s link\n", + dev_name(dev)); + device_unregister(&devfreq->dev); + mutex_unlock(&devfreq->lock); + put_device(&devfreq->dev); + goto err_out; + } +#endif + devfreq->trans_table = devm_kzalloc(&devfreq->dev, array3_size(sizeof(unsigned int), @@ -699,6 +714,11 @@ int devfreq_remove_device(struct devfreq *devfreq) if (!devfreq) return -EINVAL; +#ifdef CONFIG_ARCH_ROCKCHIP + sysfs_delete_link(&devfreq->dev.class->p->subsys.kobj, + &devfreq->dev.kobj, dev_name(devfreq->dev.parent)); +#endif + device_unregister(&devfreq->dev); return 0;