Subject: Device tree binding for DVFS table

From: [email-masked] (Rob Herring)
Date: Sun, 15 Jul 2012 18:42:58 -0500

On 07/11/2012 11:08 PM, Prashant Gaikwad wrote:
> On Wednesday 11 July 2012 07:33 PM, Rob Herring wrote:
>> On 07/11/2012 07:56 AM, Prashant Gaikwad wrote:

>>> cpu-dvfs-table : dvfs-table {
>> This should be located with the node that the frequencies correspond to.
>>
> 
> With CAR node?

With the power domain it corresponds to or the cpu nodes.

> 
>>>                compatible = "nvidia,tegra30-dvfs-table";
>>>                reg_id =<&sm0>;
>>>                #address-cells =<1>;
>>>                #size-cells =<0>;
>>>                voltage-array =<750 775 800 825 850 875 900 925 950 975
>>> 1000 1025 1050 1100 1125>;
>> The SOC is really characterized at all these voltages?
> 
> Not really, but different processes of single SoC are characterized for
> different voltages and this array covers all those voltages.
> 
>>> };
>>>
>>> device {
>>>               dvfs =<&cpu-dvfs-table>;
>>>               frequency-table at 102 {
>>>                        reg =<0x102>;
>>>                        frequencies =<314 314 314 456 456 456 608 608 608
>>> 760 817 817 912 1000>;
>> I don't see the point of repeating frequencies.
>>>               };
>>>               frequency-table at 002 {
>>>                        reg =<0x002>;
>>>                        frequencies =<598 598 750 750 893 893 1000>;
>>>               };
>> How do you determine the voltage for a frequency on table 2?
>>
>> I'd expect a single property with freq/volt pairs or 2 properties for
>> freq and voltage where there is a 1:1 relationship (freq N uses
>> voltage N).
> 
> 
> How this will work:
> 
> voltage-array =<750 775 800 825 850 875 900  925 950 975 1000 1025 1050
> 1100 1125>
> frequencies-1 =<314 314 314 456 456 456 608  608 608 760 817  817  912 
> 1000>;
> frequencies-2 =<598 598 750 750 893 893 1000>;
>

I don't see the point trying to share a voltage range. Not sharing it is
fewer array elements (22 vs 36):

voltage-array-1 =<750 825 900 975 1000 1050 1100>;
frequencies-1   =<314 456 608 760  817  912 1000>;

voltage-array-2 =<750 800 850  900>
frequencies-2   =<598 750 893 1000>;

Rob

> 
> Freq and voltage has 1:1 relationship but as single voltage table is
> used for different processes we have more entries in voltage table than
> freq table.
> Frequency table 1 is mapped till 1100mV while frequency table 2 is
> mapped till 900mV only, it maintains 1:1 relationship.
> 
> About repeating frequencies, operating voltage for a frequency would be
> the highest one mapped in the table.
> For example, in frequency table 2 operating voltage for 750MHz would be
> 825mV while for 893MHz it would be 875mV. Unmapped entries could be
> replaced with 0 to make reading better.
> 
> Advantage it provides is single voltage table used for multiple
> frequency tables, as can be observed from above tables, operating
> voltage for 314MHz in freq table 1 is 800mV while there is no frequency
> in table 2 at that voltage.
> 
> I know this makes reading difficult but it provides flexibility,
> 
> I hope it explains the implementation.
> 
>> Rob
>>
>>> };
>>>
>>> Thanks&  Regards,
>>> Prashant G
>>>
>>> _______________________________________________
>>> linux-arm-kernel mailing list
>>> linux-arm-kernel at lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>
>