[2/3] dt-bindings: opp: opp-v2-kryo-cpu: add opp-microvolt nvmem based

Message ID 20230121000146.7809-2-ansuelsmth@gmail.com
State New
Headers
Series [1/3] dt-bindings: cpufreq: qcom-cpufreq-nvmem: make cpr bindings optional |

Commit Message

Christian Marangi Jan. 21, 2023, 12:01 a.m. UTC
  The operating-points-v2-kryo-cpu driver supports defining multiple
opp-microvolt based on the blown efuses in the soc. It consist of 3
values that are parsed: speedbin, psv and version. They are all
appended to the opp-microvolt name and selected by the nvmem driver and
loaded dynamically at runtime.

Example:

opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;

Add support for this and reject these special binding if we don't have a
nvmem-cell to read data from.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
 .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
  

Comments

Krzysztof Kozlowski Jan. 22, 2023, 2 p.m. UTC | #1
On 21/01/2023 01:01, Christian Marangi wrote:
> The operating-points-v2-kryo-cpu driver supports defining multiple
> opp-microvolt based on the blown efuses in the soc. It consist of 3
> values that are parsed: speedbin, psv and version. They are all
> appended to the opp-microvolt name and selected by the nvmem driver and
> loaded dynamically at runtime.
> 
> Example:
> 
> opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
> opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
> opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
> opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
> 
> Add support for this and reject these special binding if we don't have a
> nvmem-cell to read data from.
> 
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
>  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> index b4947b326773..cea932339faf 100644
> --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> @@ -61,6 +61,17 @@ patternProperties:
>  
>        required-opps: true
>  
> +    patternProperties:
> +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':

This does not end with correct unit suffix. Should be
opp-speed-.....-microvolt

> +        description: |
> +          Assign a microvolt value to the opp hz based on the efuses value from
> +          speedbin, pvs and vers

Where is the DTS change?

Best regards,
Krzysztof
  
Christian Marangi Jan. 22, 2023, 2:15 p.m. UTC | #2
On Sun, Jan 22, 2023 at 03:00:22PM +0100, Krzysztof Kozlowski wrote:
> On 21/01/2023 01:01, Christian Marangi wrote:
> > The operating-points-v2-kryo-cpu driver supports defining multiple
> > opp-microvolt based on the blown efuses in the soc. It consist of 3
> > values that are parsed: speedbin, psv and version. They are all
> > appended to the opp-microvolt name and selected by the nvmem driver and
> > loaded dynamically at runtime.
> > 
> > Example:
> > 
> > opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
> > opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
> > opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
> > opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
> > 
> > Add support for this and reject these special binding if we don't have a
> > nvmem-cell to read data from.
> > 
> > Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> > ---
> >  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> > index b4947b326773..cea932339faf 100644
> > --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> > +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> > @@ -61,6 +61,17 @@ patternProperties:
> >  
> >        required-opps: true
> >  
> > +    patternProperties:
> > +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
> 
> This does not end with correct unit suffix. Should be
> opp-speed-.....-microvolt
>

I think I didn't understand this?

From opp-v2-base and from what we are using downstream, the named
opp-micrvolt works correctly.

(speed[0-9]-pvs[0-9]-v[0-9] is the entire name of the named
opp-microvolt- binding)

This is the reference I always used for the pattern. [1]
Here the pattern used by the driver. [2]

[1] https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/opp/opp-v2-base.yaml#L209
[2] https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/qcom-cpufreq-nvmem.c#L238

> > +        description: |
> > +          Assign a microvolt value to the opp hz based on the efuses value from
> > +          speedbin, pvs and vers
> 
> Where is the DTS change?

You mean an additional example that use this additional binding? This
may be difficult to add since the current example in this schema is a
root one and I can't put multiple root example.

Is it acceptable to add a dummy opp table with some comments explaining
the dummy node is not supported in the current compatible? (apq8096)

> 
> Best regards,
> Krzysztof
>
  
Krzysztof Kozlowski Jan. 22, 2023, 2:17 p.m. UTC | #3
On 22/01/2023 15:15, Christian Marangi wrote:
> On Sun, Jan 22, 2023 at 03:00:22PM +0100, Krzysztof Kozlowski wrote:
>> On 21/01/2023 01:01, Christian Marangi wrote:
>>> The operating-points-v2-kryo-cpu driver supports defining multiple
>>> opp-microvolt based on the blown efuses in the soc. It consist of 3
>>> values that are parsed: speedbin, psv and version. They are all
>>> appended to the opp-microvolt name and selected by the nvmem driver and
>>> loaded dynamically at runtime.
>>>
>>> Example:
>>>
>>> opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
>>> opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
>>> opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
>>> opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
>>>
>>> Add support for this and reject these special binding if we don't have a
>>> nvmem-cell to read data from.
>>>
>>> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
>>> ---
>>>  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
>>>  1 file changed, 16 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>> index b4947b326773..cea932339faf 100644
>>> --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>> +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>> @@ -61,6 +61,17 @@ patternProperties:
>>>  
>>>        required-opps: true
>>>  
>>> +    patternProperties:
>>> +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
>>
>> This does not end with correct unit suffix. Should be
>> opp-speed-.....-microvolt
>>
> 
> I think I didn't understand this?
> 
> From opp-v2-base and from what we are using downstream, the named
> opp-micrvolt works correctly.
> 
> (speed[0-9]-pvs[0-9]-v[0-9] is the entire name of the named
> opp-microvolt- binding)
> 
> This is the reference I always used for the pattern. [1]
> Here the pattern used by the driver. [2]
> 
> [1] https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/opp/opp-v2-base.yaml#L209
> [2] https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/qcom-cpufreq-nvmem.c#L238

Are you documenting existing property or adding new? Commit msg suggests
you add new property, so what do you reference here? How is it related?

> 
>>> +        description: |
>>> +          Assign a microvolt value to the opp hz based on the efuses value from
>>> +          speedbin, pvs and vers
>>
>> Where is the DTS change?
> 
> You mean an additional example that use this additional binding? This
> may be difficult to add since the current example in this schema is a
> root one and I can't put multiple root example.

No, I mean, you DTS using it. We do not want empty (unused) bindings...

Best regards,
Krzysztof
  
Christian Marangi Jan. 22, 2023, 2:21 p.m. UTC | #4
On Sun, Jan 22, 2023 at 03:17:54PM +0100, Krzysztof Kozlowski wrote:
> On 22/01/2023 15:15, Christian Marangi wrote:
> > On Sun, Jan 22, 2023 at 03:00:22PM +0100, Krzysztof Kozlowski wrote:
> >> On 21/01/2023 01:01, Christian Marangi wrote:
> >>> The operating-points-v2-kryo-cpu driver supports defining multiple
> >>> opp-microvolt based on the blown efuses in the soc. It consist of 3
> >>> values that are parsed: speedbin, psv and version. They are all
> >>> appended to the opp-microvolt name and selected by the nvmem driver and
> >>> loaded dynamically at runtime.
> >>>
> >>> Example:
> >>>
> >>> opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
> >>> opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
> >>> opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
> >>> opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
> >>>
> >>> Add support for this and reject these special binding if we don't have a
> >>> nvmem-cell to read data from.
> >>>
> >>> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> >>> ---
> >>>  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
> >>>  1 file changed, 16 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>> index b4947b326773..cea932339faf 100644
> >>> --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>> +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>> @@ -61,6 +61,17 @@ patternProperties:
> >>>  
> >>>        required-opps: true
> >>>  
> >>> +    patternProperties:
> >>> +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
> >>
> >> This does not end with correct unit suffix. Should be
> >> opp-speed-.....-microvolt
> >>
> > 
> > I think I didn't understand this?
> > 
> > From opp-v2-base and from what we are using downstream, the named
> > opp-micrvolt works correctly.
> > 
> > (speed[0-9]-pvs[0-9]-v[0-9] is the entire name of the named
> > opp-microvolt- binding)
> > 
> > This is the reference I always used for the pattern. [1]
> > Here the pattern used by the driver. [2]
> > 
> > [1] https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/opp/opp-v2-base.yaml#L209
> > [2] https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/qcom-cpufreq-nvmem.c#L238
> 
> Are you documenting existing property or adding new? Commit msg suggests
> you add new property, so what do you reference here? How is it related?
>

It should have been added from the start when the schema was submitted
but I get what you mean with the other question.

> > 
> >>> +        description: |
> >>> +          Assign a microvolt value to the opp hz based on the efuses value from
> >>> +          speedbin, pvs and vers
> >>
> >> Where is the DTS change?
> > 
> > You mean an additional example that use this additional binding? This
> > may be difficult to add since the current example in this schema is a
> > root one and I can't put multiple root example.
> 
> No, I mean, you DTS using it. We do not want empty (unused) bindings...
> 

Ok, will drop this and make it part of the ipq8064 opp series that will use
this binding.
  
Krzysztof Kozlowski Jan. 22, 2023, 2:31 p.m. UTC | #5
On 22/01/2023 15:21, Christian Marangi wrote:
> On Sun, Jan 22, 2023 at 03:17:54PM +0100, Krzysztof Kozlowski wrote:
>> On 22/01/2023 15:15, Christian Marangi wrote:
>>> On Sun, Jan 22, 2023 at 03:00:22PM +0100, Krzysztof Kozlowski wrote:
>>>> On 21/01/2023 01:01, Christian Marangi wrote:
>>>>> The operating-points-v2-kryo-cpu driver supports defining multiple
>>>>> opp-microvolt based on the blown efuses in the soc. It consist of 3
>>>>> values that are parsed: speedbin, psv and version. They are all
>>>>> appended to the opp-microvolt name and selected by the nvmem driver and
>>>>> loaded dynamically at runtime.
>>>>>
>>>>> Example:
>>>>>
>>>>> opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
>>>>> opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
>>>>> opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
>>>>> opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
>>>>>
>>>>> Add support for this and reject these special binding if we don't have a
>>>>> nvmem-cell to read data from.
>>>>>
>>>>> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
>>>>> ---
>>>>>  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
>>>>>  1 file changed, 16 insertions(+)
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>>>> index b4947b326773..cea932339faf 100644
>>>>> --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>>>> +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
>>>>> @@ -61,6 +61,17 @@ patternProperties:
>>>>>  
>>>>>        required-opps: true
>>>>>  
>>>>> +    patternProperties:
>>>>> +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
>>>>
>>>> This does not end with correct unit suffix. Should be
>>>> opp-speed-.....-microvolt
>>>>
>>>
>>> I think I didn't understand this?
>>>
>>> From opp-v2-base and from what we are using downstream, the named
>>> opp-micrvolt works correctly.
>>>
>>> (speed[0-9]-pvs[0-9]-v[0-9] is the entire name of the named
>>> opp-microvolt- binding)
>>>
>>> This is the reference I always used for the pattern. [1]
>>> Here the pattern used by the driver. [2]
>>>
>>> [1] https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/opp/opp-v2-base.yaml#L209
>>> [2] https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/qcom-cpufreq-nvmem.c#L238
>>
>> Are you documenting existing property or adding new? Commit msg suggests
>> you add new property, so what do you reference here? How is it related?
>>
> 
> It should have been added from the start when the schema was submitted
> but I get what you mean with the other question.
> 
>>>
>>>>> +        description: |
>>>>> +          Assign a microvolt value to the opp hz based on the efuses value from
>>>>> +          speedbin, pvs and vers
>>>>
>>>> Where is the DTS change?
>>>
>>> You mean an additional example that use this additional binding? This
>>> may be difficult to add since the current example in this schema is a
>>> root one and I can't put multiple root example.
>>
>> No, I mean, you DTS using it. We do not want empty (unused) bindings...
>>
> 
> Ok, will drop this and make it part of the ipq8064 opp series that will use
> this binding.

You can also link the DTS changes, it's also fine.

Best regards,
Krzysztof
  
Christian Marangi Jan. 22, 2023, 2:35 p.m. UTC | #6
On Sun, Jan 22, 2023 at 03:31:14PM +0100, Krzysztof Kozlowski wrote:
> On 22/01/2023 15:21, Christian Marangi wrote:
> > On Sun, Jan 22, 2023 at 03:17:54PM +0100, Krzysztof Kozlowski wrote:
> >> On 22/01/2023 15:15, Christian Marangi wrote:
> >>> On Sun, Jan 22, 2023 at 03:00:22PM +0100, Krzysztof Kozlowski wrote:
> >>>> On 21/01/2023 01:01, Christian Marangi wrote:
> >>>>> The operating-points-v2-kryo-cpu driver supports defining multiple
> >>>>> opp-microvolt based on the blown efuses in the soc. It consist of 3
> >>>>> values that are parsed: speedbin, psv and version. They are all
> >>>>> appended to the opp-microvolt name and selected by the nvmem driver and
> >>>>> loaded dynamically at runtime.
> >>>>>
> >>>>> Example:
> >>>>>
> >>>>> opp-microvolt-speed0-pvs0-v0 = <1050000 997500 1102500>;
> >>>>> opp-microvolt-speed0-pvs1-v0 = <975000 926250 1023750>;
> >>>>> opp-microvolt-speed0-pvs2-v0 = <925000 878750 971250>;
> >>>>> opp-microvolt-speed0-pvs3-v0 = <850000 807500 892500>;
> >>>>>
> >>>>> Add support for this and reject these special binding if we don't have a
> >>>>> nvmem-cell to read data from.
> >>>>>
> >>>>> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> >>>>> ---
> >>>>>  .../devicetree/bindings/opp/opp-v2-kryo-cpu.yaml | 16 ++++++++++++++++
> >>>>>  1 file changed, 16 insertions(+)
> >>>>>
> >>>>> diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>>>> index b4947b326773..cea932339faf 100644
> >>>>> --- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>>>> +++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
> >>>>> @@ -61,6 +61,17 @@ patternProperties:
> >>>>>  
> >>>>>        required-opps: true
> >>>>>  
> >>>>> +    patternProperties:
> >>>>> +      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
> >>>>
> >>>> This does not end with correct unit suffix. Should be
> >>>> opp-speed-.....-microvolt
> >>>>
> >>>
> >>> I think I didn't understand this?
> >>>
> >>> From opp-v2-base and from what we are using downstream, the named
> >>> opp-micrvolt works correctly.
> >>>
> >>> (speed[0-9]-pvs[0-9]-v[0-9] is the entire name of the named
> >>> opp-microvolt- binding)
> >>>
> >>> This is the reference I always used for the pattern. [1]
> >>> Here the pattern used by the driver. [2]
> >>>
> >>> [1] https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/opp/opp-v2-base.yaml#L209
> >>> [2] https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/qcom-cpufreq-nvmem.c#L238
> >>
> >> Are you documenting existing property or adding new? Commit msg suggests
> >> you add new property, so what do you reference here? How is it related?
> >>
> > 
> > It should have been added from the start when the schema was submitted
> > but I get what you mean with the other question.
> > 
> >>>
> >>>>> +        description: |
> >>>>> +          Assign a microvolt value to the opp hz based on the efuses value from
> >>>>> +          speedbin, pvs and vers
> >>>>
> >>>> Where is the DTS change?
> >>>
> >>> You mean an additional example that use this additional binding? This
> >>> may be difficult to add since the current example in this schema is a
> >>> root one and I can't put multiple root example.
> >>
> >> No, I mean, you DTS using it. We do not want empty (unused) bindings...
> >>
> > 
> > Ok, will drop this and make it part of the ipq8064 opp series that will use
> > this binding.
> 
> You can also link the DTS changes, it's also fine.
> 

There are some required changes to do on the driver so the opp series
still have to be submitted so I guess dropping this is the only way
currently. But it's not a problem the real important patch in the series
is the first one.
  

Patch

diff --git a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
index b4947b326773..cea932339faf 100644
--- a/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
+++ b/Documentation/devicetree/bindings/opp/opp-v2-kryo-cpu.yaml
@@ -61,6 +61,17 @@  patternProperties:
 
       required-opps: true
 
+    patternProperties:
+      '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$':
+        description: |
+          Assign a microvolt value to the opp hz based on the efuses value from
+          speedbin, pvs and version value read from the provided nvmem cell.
+        minItems: 1
+        maxItems: 8   # Should be enough regulators
+        items:
+          minItems: 1
+          maxItems: 3
+
     required:
       - opp-hz
 
@@ -75,6 +86,11 @@  then:
     '^opp-?[0-9]+$':
       required:
         - opp-supported-hw
+else:
+  patternProperties:
+    '^opp-?[0-9]+$':
+      patternProperties:
+        '^opp-microvolt-speed[0-9]-pvs[0-9]-v[0-9]$': false
 
 additionalProperties: false