On 23/01/2023 20:34, Christian Marangi wrote: > The qcom-cpufreq-nvmem driver supports 2 kind of devices: > - pre-cpr that doesn't have power-domains and base everything on nvmem > cells and multiple named microvolt bindings > - cpr-based that require power-domain in the cpu nodes and use various > source to decide the correct voltage and freq > > When the schema was introduced, it was wrongly set to always require these > binding but this is not the case for pre-cpr devices. > > Make the power-domain optional and set them required only for qcs404 > based devices. > > While at it also make more clear what the opp-table supports by adding > ref to the opp-v2-kryo-cpu and opp-v2-qcom-level schema. > > Fixes: ec24d1d55469 ("dt-bindings: opp: Convert qcom-nvmem-cpufreq to DT schema") > Signed-off-by: Christian Marangi <ansuelsmth@xxxxxxxxx> > --- > > Changes v2: > - Reword commit description > - Fix condition order > - Add allOf > > .../bindings/cpufreq/qcom-cpufreq-nvmem.yaml | 81 +++++++++++++------ > 1 file changed, 56 insertions(+), 25 deletions(-) > > diff --git a/Documentation/devicetree/bindings/cpufreq/qcom-cpufreq-nvmem.yaml b/Documentation/devicetree/bindings/cpufreq/qcom-cpufreq-nvmem.yaml > index 9c086eac6ca7..6f5e7904181f 100644 > --- a/Documentation/devicetree/bindings/cpufreq/qcom-cpufreq-nvmem.yaml > +++ b/Documentation/devicetree/bindings/cpufreq/qcom-cpufreq-nvmem.yaml > @@ -17,6 +17,9 @@ description: | > on the CPU OPP in use. The CPUFreq driver sets the CPR power domain level > according to the required OPPs defined in the CPU OPP tables. > > + For old implementation efuses are parsed to select the correct opp table and > + voltage and CPR is not supported/used. > + > select: > properties: > compatible: > @@ -33,37 +36,65 @@ select: > required: > - compatible > > -properties: > - cpus: > - type: object > - > - patternProperties: > - '^cpu@[0-9a-f]+$': > - type: object > - > - properties: > - power-domains: > - maxItems: 1 > - > - power-domain-names: > - items: > - - const: cpr > - > - required: > - - power-domains > - - power-domain-names > - > patternProperties: > '^opp-table(-[a-z0-9]+)?$': > - if: > + allOf: > + - if: > + properties: > + compatible: > + const: operating-points-v2-kryo-cpu > + then: > + $ref: /schemas/opp/opp-v2-kryo-cpu.yaml# > + > + - if: > + properties: > + compatible: > + const: operating-points-v2-qcom-level > + then: > + $ref: /schemas/opp/opp-v2-qcom-level.yaml# This entire part looks independent, please split it into separate patch with its own explanation. What I still miss here - why do you remove "required-opps" from required properties. It's not clear to me at all. Best regards, Krzysztof