Re: [PATCH v3 1/2] dt-bindings: cpufreq: qcom-cpufreq-nvmem: make cpr bindings optional

From: Krzysztof Kozlowski
Date: Thu Jan 26 2023 - 06:18:06 EST


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