[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180802101341epcms1p53ee79776dbcbeaf6f1e7910b20095220@epcms1p5>
Date: Thu, 02 Aug 2018 19:13:41 +0900
From: MyungJoo Ham <myungjoo.ham@...sung.com>
To: Kyungmin Park <kyungmin.park@...sung.com>,
Chanwoo Choi <cw00.choi@...sung.com>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>
CC: Saravana Kannan <skannan@...eaurora.org>,
"georgi.djakov@...aro.org" <georgi.djakov@...aro.org>,
"vincent.guittot@...aro.org" <vincent.guittot@...aro.org>,
"daidavid1@...eaurora.org" <daidavid1@...eaurora.org>,
"bjorn.andersson@...aro.org" <bjorn.andersson@...aro.org>,
"linux-pm@...r.kernel.org" <linux-pm@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v3 2/2] PM / devfreq: Add devfreq driver for
interconnect bandwidth voting
>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
Powered by blists - more mailing lists