From: Chanwoo Choi <cw00.choi@samsung.com>
To: "myungjoo.ham@samsung.com" <myungjoo.ham@samsung.com>
Cc: cwchoi00@gmail.com, Kyungmin Park <kyungmin.park@samsung.com>,
"rafael.j.wysocki@intel.com" <rafael.j.wysocki@intel.com>,
Inki Dae <inki.dae@samsung.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>
Subject: Re: [PATCH v3 3/8] PM / devfreq: Show the available min/max frequency through sysfs node
Date: Fri, 13 Oct 2017 15:47:25 +0900 [thread overview]
Message-ID: <59E0617D.10309@samsung.com> (raw)
In-Reply-To: <59DEEAA5.3050905@samsung.com>
Hi,
On 2017년 10월 12일 13:08, Chanwoo Choi wrote:
> On 2017년 10월 11일 21:57, Chanwoo Choi wrote:
>> On Wed, Oct 11, 2017 at 8:15 PM, MyungJoo Ham <myungjoo.ham@samsung.com> wrote:
>>>> The existing {min|max}_freq sysfs nodes don't consider whether min/max_freq
>>>> are available or not. Those sysfs nodes show just the stored value
>>>> in the struct devfreq.
>>>>
>>>> The devfreq uses the OPP interface and then dev_pm_opp_{disable|add}()
>>>> might change the state of the device's supported frequency. This patch
>>>> shows the available minimum and maximum frequency through sysfs node.
>>>>
>>>> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
>>>> ---
>>>> drivers/devfreq/devfreq.c | 18 ++++++++++++++++--
>>>> 1 file changed, 16 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>>>> index 2ce1fd0a1324..799a0cf75d39 100644
>>>> --- a/drivers/devfreq/devfreq.c
>>>> +++ b/drivers/devfreq/devfreq.c
>>>> @@ -1128,7 +1128,14 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr,
>>>> static ssize_t min_freq_show(struct device *dev, struct device_attribute *attr,
>>>> char *buf)
>>>> {
>>>> - return sprintf(buf, "%lu\n", to_devfreq(dev)->min_freq);
>>>> + struct devfreq *df = to_devfreq(dev);
>>>> + unsigned long min_freq = to_devfreq(dev)->min_freq;
>>>> + unsigned long available_min_freq = find_available_min_freq(df);
>>>> +
>>>> + if (available_min_freq != 0 && min_freq < available_min_freq)
>>>
>>> nitpick:
>>>
>>> If available_min_freq == 0,
>>> it can't be min_freq < available_min_freq anyway;
>>> it's unsigned.
>>
>> If the dev_pm_opp_find_*() return the error in the find_available_min_freq(),
>> avaiable_min_freq is zero. So, if available_min_freq is zero,
>> min_freq_show doesn't need to compare 'min_freq < available_min_freq'.
>>
>> In result, if 'available_min_freq' is zero, min_freq_show() only considers
>> the 'min_freq' variable.
>
> I'll modify this patch as following: How about that?
>
> + if (available_min_freq == 0)
> + goto out;
> + else if (min_freq < available_min_freq)
> + min_freq = available_min_freq;
> +
> +out:
> + return sprintf(buf, "%lu\n", min_freq);
>
Please ignore this approach because
I'll use the new 'scaling_min/max_freq' variables on v4.
>
>>>
>>>> + min_freq = available_min_freq;
>>>> +
>>>> + return sprintf(buf, "%lu\n", min_freq);
>>>> }
>>>>
>>>> static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr,
>>>> @@ -1162,7 +1169,14 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr,
>>>> static ssize_t max_freq_show(struct device *dev, struct device_attribute *attr,
>>>> char *buf)
>>>> {
>>>> - return sprintf(buf, "%lu\n", to_devfreq(dev)->max_freq);
>>>> + struct devfreq *df = to_devfreq(dev);
>>>> + unsigned long max_freq = to_devfreq(dev)->max_freq;
>>>> + unsigned long available_max_freq = find_available_max_freq(df);
>>>> +
>>>> + if (available_max_freq != 0 && max_freq > available_max_freq)
>>>> + max_freq = available_max_freq;
>>>
>>> similar here.
>>
>> ditto.
>>
>>>
>>>> +
>>>> + return sprintf(buf, "%lu\n", max_freq);
>>>> }
>>>> static DEVICE_ATTR_RW(max_freq);
>>
>>
>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
next prev parent reply other threads:[~2017-10-13 6:47 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20171011030946epcas1p1268ea2af497086ca64c373ea7367baaa@epcas1p1.samsung.com>
2017-10-11 3:09 ` [PATCH v3 0/8] PM / devfreq: Use OPP interface to handle the frequency Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 1/8] PM / devfreq: Set min/max_freq when adding the devfreq device Chanwoo Choi
2017-10-11 11:09 ` MyungJoo Ham
2017-10-11 11:22 ` FW: " MyungJoo Ham
2017-10-11 3:09 ` [PATCH v3 2/8] Revert "PM / devfreq: Add show_one macro to delete the duplicate code" Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 3/8] PM / devfreq: Show the available min/max frequency through sysfs node Chanwoo Choi
2017-10-11 11:15 ` MyungJoo Ham
2017-10-11 12:57 ` Chanwoo Choi
2017-10-12 4:08 ` Chanwoo Choi
2017-10-13 6:47 ` Chanwoo Choi [this message]
2017-10-11 3:09 ` [PATCH v3 4/8] PM / devfreq: Show the all available frequencies Chanwoo Choi
2017-10-11 11:26 ` MyungJoo Ham
2017-10-11 13:14 ` Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 5/8] PM / devfreq: Get the available next frequency on update_devfreq() Chanwoo Choi
2017-10-11 11:30 ` MyungJoo Ham
2017-10-11 13:33 ` Chanwoo Choi
2017-10-13 6:45 ` Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 6/8] PM / devfreq: Remove unneeded conditional statement Chanwoo Choi
2017-10-11 11:36 ` MyungJoo Ham
2017-10-11 13:45 ` Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 7/8] PM / devfreq: Define the constant governor name Chanwoo Choi
2017-10-11 3:09 ` Chanwoo Choi
2017-10-11 3:09 ` [PATCH v3 8/8] PM / devfreq: exynos-bus: Register cooling device Chanwoo Choi
2017-10-11 3:09 ` Chanwoo Choi
2017-10-11 3:09 ` 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=59E0617D.10309@samsung.com \
--to=cw00.choi@samsung.com \
--cc=cwchoi00@gmail.com \
--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.