lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
SubjectRe: [PATCH 1/3] PM / devfreq: set min/max freq limit from freq table
From
On 14 January 2013 20:06, MyungJoo Ham <myungjoo.ham@samsung.com> wrote:
> On Tue, Jan 8, 2013 at 2:50 PM, Rajagopal Venkat
> <rajagopal.venkat@linaro.org> wrote:
>> Set devfreq device min and max frequency limits when device
>> is added to devfreq, provided frequency table is supplied.
>> This helps governors to suggest target frequency with in
>> limits.
>>
>> Signed-off-by: Rajagopal Venkat <rajagopal.venkat@linaro.org>
>
> Could you please elaborate the benefit of the patch?
>

When freq table is supplied, it's unreasonable to suggest the target frequency
which is - target_freq < min_freq and target_freq > max_freq. It avoids
unnecessary checks at devfreq drivers.

> The devfreq device drivers are required to choose proper frequencies
> anyway regardless which values the governors may give (hopefully by
> choosing the closest value that can support the required performance).
>

Yes. but then each driver needs to have conditional checks for choosing
closet value even though freq table is provided.

> Besides, the min/max values are to be set by userspace. Users may
> enter 0 in order to express that they do not want to limit the
> behaviors of governors.
>
>
> Cheers,
> MyungJoo.
>
>> ---
>> drivers/devfreq/devfreq.c | 24 ++++++++++++++++++++++++
>> 1 file changed, 24 insertions(+)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index a8f0173..5782c9b 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -69,6 +69,29 @@ static struct devfreq *find_device_devfreq(struct device *dev)
>> }
>>
>> /**
>> + * devfreq_set_freq_limits() - Set min and max frequency from freq_table
>> + * @devfreq: the devfreq instance
>> + */
>> +static void devfreq_set_freq_limits(struct devfreq *devfreq)
>> +{
>> + int idx;
>> + unsigned long min = ~0, max = 0;
>> +
>> + if (!devfreq->profile->freq_table)
>> + return;
>> +
>> + for (idx = 0; idx < devfreq->profile->max_state; idx++) {
>> + if (min > devfreq->profile->freq_table[idx])
>> + min = devfreq->profile->freq_table[idx];
>> + if (max < devfreq->profile->freq_table[idx])
>> + max = devfreq->profile->freq_table[idx];
>> + }
>> +
>> + devfreq->min_freq = min;
>> + devfreq->max_freq = max;
>> +}
>> +
>> +/**
>> * devfreq_get_freq_level() - Lookup freq_table for the frequency
>> * @devfreq: the devfreq instance
>> * @freq: the target frequency
>> @@ -476,6 +499,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
>> devfreq->profile->max_state,
>> GFP_KERNEL);
>> devfreq->last_stat_updated = jiffies;
>> + devfreq_set_freq_limits(devfreq);
>>
>> dev_set_name(&devfreq->dev, dev_name(dev));
>> err = device_register(&devfreq->dev);
>> --
>> 1.7.10.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> MyungJoo Ham, Ph.D.
> Mobile Software Platform Lab, DMC Business, Samsung Electronics



--
Regards,
Rajagopal

\
 
 \ /
  Last update: 2013-01-15 13:01    [W:0.107 / U:0.548 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site