Messages in this thread | | | Subject | RE: [PATCH v3 2/2] PM / devfreq: Add devfreq driver for interconnect bandwidth voting | From | MyungJoo Ham <> | Date | Thu, 02 Aug 2018 19:13:41 +0900 |
| |
>This driver registers itself as a devfreq device that allows devfreq >governors to make bandwidth votes for an interconnect path. This allows >applying various policies for different interconnect paths using devfreq >governors. >
First of all, the name, "devfreq_icbw", is not appropriate for a devfreq device driver. It confuses; it looks like a part of the framework itself.
>diff --git a/drivers/devfreq/devfreq_icbw.c b/drivers/devfreq/devfreq_icbw.c >new file mode 100644 >index 0000000..231fb21 >--- /dev/null >+++ b/drivers/devfreq/devfreq_icbw.c >@@ -0,0 +1,116 @@ >+// SPDX-License-Identifier: GPL-2.0 >+/* >+ * Copyright (c) 2013-2014, 2018, The Linux Foundation. All rights reserved. >+ */ >+ >+#define pr_fmt(fmt) "icbw: " fmt >+ >+#include <linux/kernel.h> >+#include <linux/module.h> >+#include <linux/init.h> >+#include <linux/err.h> >+#include <linux/errno.h> >+#include <linux/mutex.h> >+#include <linux/devfreq.h> >+#include <linux/platform_device.h> >+#include <linux/of.h> >+#include <linux/interconnect.h>
Where can I find this file?
>+ >+struct dev_data { >+ struct icc_path *path; >+ u32 cur_ab; >+ u32 cur_pb; >+ unsigned long gov_ab; >+ struct devfreq *df; >+ struct devfreq_dev_profile dp; >+}; >+ >+static int icbw_target(struct device *dev, unsigned long *freq, u32 flags) >+{ >+ struct dev_data *d = dev_get_drvdata(dev); >+ int ret; >+ u32 new_pb = *freq, new_ab = d->gov_ab; >+ >+ if (d->cur_pb == new_pb && d->cur_ab == new_ab) >+ return 0; >+ >+ dev_dbg(dev, "BW KBps: AB: %u PB: %u\n", new_ab, new_pb); >+ >+ ret = icc_set(d->path, new_ab, new_pb);
I'm not sure if icc_set is available.
Cheers, MyungJoo
| |