All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chanwoo Choi <cw00.choi@samsung.com>
To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com,
	cw00.choi@samsung.com
Cc: rafael.j.wysocki@intel.com, chanwoo@kernel.org,
	inki.dae@samsung.com, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: [PATCH v4 5/8] PM / devfreq: Show the all available frequencies
Date: Fri, 13 Oct 2017 16:48:21 +0900	[thread overview]
Message-ID: <1507880904-31956-6-git-send-email-cw00.choi@samsung.com> (raw)
In-Reply-To: <1507880904-31956-1-git-send-email-cw00.choi@samsung.com>

The commit a76caf55e5b35 ("thermal: Add devfreq cooling") allows
the devfreq device to use the cooling device. When the cooling down
are required, the devfreq_cooling.c disables the OPP entry with
the dev_pm_opp_disable(). In result, 'available_frequencies'[1]
sysfs node never came to show the all available frequencies.
[1] /sys/class/devfreq/.../available_frequencies

So, this patch uses the 'freq_table' in the 'struct devfreq_dev_profile'
in order to show the all available frequencies.
- If 'freq_table' is NULL, devfreq core initializes them by using OPP values.
- If 'freq_table' is initialized, devfreq core just uses the 'freq_table'.

And this patch adds some comment about the sort way of 'freq_table'.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
---
 drivers/devfreq/devfreq.c | 16 +++++-----------
 include/linux/devfreq.h   |  5 +++--
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 909cedef7caa..534ead60d1cc 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -1190,22 +1190,16 @@ static ssize_t available_frequencies_show(struct device *d,
 					  char *buf)
 {
 	struct devfreq *df = to_devfreq(d);
-	struct device *dev = df->dev.parent;
-	struct dev_pm_opp *opp;
 	ssize_t count = 0;
-	unsigned long freq = 0;
+	int i;
 
-	do {
-		opp = dev_pm_opp_find_freq_ceil(dev, &freq);
-		if (IS_ERR(opp))
-			break;
+	mutex_lock(&df->lock);
 
-		dev_pm_opp_put(opp);
+	for (i = 0; i < df->profile->max_state; i++)
 		count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
-				   "%lu ", freq);
-		freq++;
-	} while (1);
+				"%lu ", df->profile->freq_table[i]);
 
+	mutex_unlock(&df->lock);
 	/* Truncate the trailing space */
 	if (count)
 		count--;
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index fe7862060945..5dc6190e479c 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -84,8 +84,9 @@ struct devfreq_dev_status {
  *			from devfreq_remove_device() call. If the user
  *			has registered devfreq->nb at a notifier-head,
  *			this is the time to unregister it.
- * @freq_table:	Optional list of frequencies to support statistics.
- * @max_state:	The size of freq_table.
+ * @freq_table:		Optional list of frequencies to support statistics
+ *			and freq_table must be generated in ascending order.
+ * @max_state:		The size of freq_table.
  */
 struct devfreq_dev_profile {
 	unsigned long initial_freq;
-- 
1.9.1

  parent reply	other threads:[~2017-10-13  7:49 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20171013074831epcas2p28bc5c380fb339650234037e9cd24fe27@epcas2p2.samsung.com>
2017-10-13  7:48 ` [PATCH v4 0/8] PM / devfreq: Use OPP interface to handle the frequency Chanwoo Choi
     [not found]   ` <CGME20171013074831epcas2p2d9120a18f746f2831057a1da1977394a@epcas2p2.samsung.com>
2017-10-13  7:48     ` [PATCH v4 1/8] PM / devfreq: Set min/max_freq when adding the devfreq device Chanwoo Choi
     [not found]   ` <CGME20171013074832epcas2p1eac142dd59d78667e9a98be78d9487b1@epcas2p1.samsung.com>
2017-10-13  7:48     ` [PATCH v4 2/8] Revert "PM / devfreq: Add show_one macro to delete the duplicate code" Chanwoo Choi
     [not found]   ` <CGME20171013074833epcas1p433f03287f42a5b6dc16e796efa2a3bf3@epcas1p4.samsung.com>
2017-10-13  7:48     ` [PATCH v4 3/8] PM / devfreq: Use the available min/max frequency Chanwoo Choi
2017-10-17 14:43       ` MyungJoo Ham
2017-10-18  1:31         ` Chanwoo Choi
2017-10-18  2:12           ` Chanwoo Choi
     [not found]   ` <CGME20171013074833epcas1p24b7e56770d8199dd12972de1c8447007@epcas1p2.samsung.com>
2017-10-13  7:48     ` [PATCH v4 4/8] PM / devfreq: Change return type of devfreq_set_freq_table() Chanwoo Choi
2017-10-17 14:45       ` MyungJoo Ham
     [not found]   ` <CGME20171013074834epcas2p2474f31a6521ae57d94618d4c79cff7b9@epcas2p2.samsung.com>
2017-10-13  7:48     ` Chanwoo Choi [this message]
2017-10-17 14:50       ` [PATCH v4 5/8] PM / devfreq: Show the all available frequencies MyungJoo Ham
     [not found]   ` <CGME20171013074835epcas1p378b24f20d4feb973aef5319445b81570@epcas1p3.samsung.com>
2017-10-13  7:48     ` [PATCH v4 6/8] PM / devfreq: Remove unneeded conditional statement Chanwoo Choi
2017-10-17 14:59       ` MyungJoo Ham
     [not found]   ` <CGME20171013074836epcas2p4e70bca2ebe9446353abf5c14a9d16460@epcas2p4.samsung.com>
2017-10-13  7:48     ` [PATCH v4 7/8] PM / devfreq: Define the constant governor name Chanwoo Choi
2017-10-13  7:48       ` Chanwoo Choi
2017-10-13  7:48       ` Chanwoo Choi
2017-10-17 15:02       ` MyungJoo Ham
2017-10-17 15:02         ` MyungJoo Ham
     [not found]   ` <CGME20171013074837epcas1p49957bd030fc1a27cc845d63c50ad0aba@epcas1p4.samsung.com>
2017-10-13  7:48     ` [PATCH v4 8/8] PM / devfreq: exynos-bus: Register cooling device Chanwoo Choi
2017-10-13  7:48       ` Chanwoo Choi
2017-10-17 15:11       ` MyungJoo Ham
2017-10-17 15:11         ` MyungJoo Ham
2017-10-18  2:08         ` Chanwoo Choi
2017-10-18  2:08           ` Chanwoo Choi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1507880904-31956-6-git-send-email-cw00.choi@samsung.com \
    --to=cw00.choi@samsung.com \
    --cc=chanwoo@kernel.org \
    --cc=inki.dae@samsung.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    --cc=rafael.j.wysocki@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.