On Tue, Jan 4, 2011 at 5:45 PM, Vincent Guittot
<vincent.guit...@linaro.org> wrote:
> On 4 January 2011 09:58, Amit Kucheria <amit.kuche...@linaro.org> wrote:
>> CC'ing linaro-dev
>>
>> On Tue, Jan 4, 2011 at 1:18 PM, Yong Shen <yong.s...@linaro.org> wrote:
>>> hi there,
>>>
>>> In last weekly meeting, we talked about the real time display of clock
>>> information in powerdebug.
>>
>> What do you mean by real-time display?
>>
>> powerdebug will only refresh it's information every 'n' seconds. At
>> that point, the 'show' function for the sysfs rate entry should call
>> get_rate() for the clock.
>>
>>> Actually, this feature can be easily supported. if you found some
>>> clocks' information stay unchanged after your drivers change clock
>>> setting, it may be caused by the wrong way of clock information
>>> exposing.
>>>
>>> In the last several weeks, Jeremy and I reviewed the clock debug code
>>> based on common clock struct. In this code, I used below code to
>>> expose clock information:
>>>
>
> ok for the clock rate but how do you manage a change of the clock's
> parent ? I mean , if a driver sets a new parent of a clock with
> clk_set_parent, we should also update the debugfs clock tree in order
> to reflect this modification. I'm not sure that we need to update the
> debugfs clock tree in a real time manner but we should be able to
> force a refresh of the clock debugfs.
>
True. So far, the whole clock tree is build up at clock registering
phase, which means it lacks of this ability to display parent change.
But IMHO, device drivers are unlikely to change clock's parent at run
time, so it is not that urgent to support this 'nice to have' feature.
We can put this new function into our future plan.
>>>
>>> +static int clk_debug_rate_get(void *data, u64 *val)
>>> +{
>>> +       struct clk *clk = data;
>>> +
>>> +       *val = (u64)clk_get_rate(clk);
>>> +       return 0;
>>> +}
>>> +DEFINE_SIMPLE_ATTRIBUTE(clk_debug_rate_fops, clk_debug_rate_get, NULL,
>>> +               "%llu\n");
>>> +
>>> .....
>>> +       d = debugfs_create_file("rate", S_IRUGO, clk->dentry, (void *)clk,
>>> +                       &clk_debug_rate_fops);
>>>
>>> Therefore, whenever the clock information is accessed, it can reflect
>>> the truth, since it calls clk interface like clk_get_rate() to get the
>>> right value.
>>
>> Why is it called clk_debug_rate_get()? Is there not a standard
>> clk_rate_get() that we can use?
>>
>>> Previously, some of you might use a variable to store clock
>>> information like rate or count, and expose these variable to sysfs,
>>> which is why they are not updated when the real clock information is
>>> changing.
>>
>> Right, storing in variables will give wrong results if you're in the
>> middle of a rate refresh.
>>
>> _______________________________________________
>> linaro-dev mailing list
>> linaro-dev@lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/linaro-dev
>>
>

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to