On Thu, Jan 26, 2023 at 12:17:56PM +0100, Krzysztof Kozlowski wrote: > 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. > Hi, the required-opps needs to be part of this patch since they are only needed for genpd based devices. I will split the additional if parts in another patch since they are not related. -- Ansuel