162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/opp/allwinner,sun50i-h6-operating-points.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Allwinner H6 CPU OPP
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Chen-Yu Tsai <wens@csie.org>
1162306a36Sopenharmony_ci  - Maxime Ripard <mripard@kernel.org>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  For some SoCs, the CPU frequency subset and voltage value of each
1562306a36Sopenharmony_ci  OPP varies based on the silicon variant in use. Allwinner Process
1662306a36Sopenharmony_ci  Voltage Scaling Tables defines the voltage and frequency value based
1762306a36Sopenharmony_ci  on the speedbin blown in the efuse combination. The
1862306a36Sopenharmony_ci  sun50i-cpufreq-nvmem driver reads the efuse value from the SoC to
1962306a36Sopenharmony_ci  provide the OPP framework with required information.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciallOf:
2262306a36Sopenharmony_ci  - $ref: opp-v2-base.yaml#
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    const: allwinner,sun50i-h6-operating-points
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  nvmem-cells:
2962306a36Sopenharmony_ci    description: |
3062306a36Sopenharmony_ci      A phandle pointing to a nvmem-cells node representing the efuse
3162306a36Sopenharmony_ci      registers that has information about the speedbin that is used
3262306a36Sopenharmony_ci      to select the right frequency/voltage value pair. Please refer
3362306a36Sopenharmony_ci      the for nvmem-cells bindings
3462306a36Sopenharmony_ci      Documentation/devicetree/bindings/nvmem/nvmem.txt and also
3562306a36Sopenharmony_ci      examples below.
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  opp-shared: true
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cirequired:
4062306a36Sopenharmony_ci  - compatible
4162306a36Sopenharmony_ci  - nvmem-cells
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cipatternProperties:
4462306a36Sopenharmony_ci  "^opp-[0-9]+$":
4562306a36Sopenharmony_ci    type: object
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci    properties:
4862306a36Sopenharmony_ci      opp-hz: true
4962306a36Sopenharmony_ci      clock-latency-ns: true
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci    patternProperties:
5262306a36Sopenharmony_ci      "^opp-microvolt-speed[0-9]$": true
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci    required:
5562306a36Sopenharmony_ci      - opp-hz
5662306a36Sopenharmony_ci      - opp-microvolt-speed0
5762306a36Sopenharmony_ci      - opp-microvolt-speed1
5862306a36Sopenharmony_ci      - opp-microvolt-speed2
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci    unevaluatedProperties: false
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciadditionalProperties: false
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciexamples:
6562306a36Sopenharmony_ci  - |
6662306a36Sopenharmony_ci    cpu_opp_table: opp-table {
6762306a36Sopenharmony_ci        compatible = "allwinner,sun50i-h6-operating-points";
6862306a36Sopenharmony_ci        nvmem-cells = <&speedbin_efuse>;
6962306a36Sopenharmony_ci        opp-shared;
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci        opp-480000000 {
7262306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
7362306a36Sopenharmony_ci            opp-hz = /bits/ 64 <480000000>;
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci            opp-microvolt-speed0 = <880000>;
7662306a36Sopenharmony_ci            opp-microvolt-speed1 = <820000>;
7762306a36Sopenharmony_ci            opp-microvolt-speed2 = <800000>;
7862306a36Sopenharmony_ci        };
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci        opp-720000000 {
8162306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
8262306a36Sopenharmony_ci            opp-hz = /bits/ 64 <720000000>;
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci            opp-microvolt-speed0 = <880000>;
8562306a36Sopenharmony_ci            opp-microvolt-speed1 = <820000>;
8662306a36Sopenharmony_ci            opp-microvolt-speed2 = <800000>;
8762306a36Sopenharmony_ci        };
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        opp-816000000 {
9062306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
9162306a36Sopenharmony_ci            opp-hz = /bits/ 64 <816000000>;
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci            opp-microvolt-speed0 = <880000>;
9462306a36Sopenharmony_ci            opp-microvolt-speed1 = <820000>;
9562306a36Sopenharmony_ci            opp-microvolt-speed2 = <800000>;
9662306a36Sopenharmony_ci        };
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci        opp-888000000 {
9962306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
10062306a36Sopenharmony_ci            opp-hz = /bits/ 64 <888000000>;
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci            opp-microvolt-speed0 = <940000>;
10362306a36Sopenharmony_ci            opp-microvolt-speed1 = <820000>;
10462306a36Sopenharmony_ci            opp-microvolt-speed2 = <800000>;
10562306a36Sopenharmony_ci        };
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci        opp-1080000000 {
10862306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
10962306a36Sopenharmony_ci            opp-hz = /bits/ 64 <1080000000>;
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci            opp-microvolt-speed0 = <1060000>;
11262306a36Sopenharmony_ci            opp-microvolt-speed1 = <880000>;
11362306a36Sopenharmony_ci            opp-microvolt-speed2 = <840000>;
11462306a36Sopenharmony_ci        };
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci        opp-1320000000 {
11762306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
11862306a36Sopenharmony_ci            opp-hz = /bits/ 64 <1320000000>;
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci            opp-microvolt-speed0 = <1160000>;
12162306a36Sopenharmony_ci            opp-microvolt-speed1 = <940000>;
12262306a36Sopenharmony_ci            opp-microvolt-speed2 = <900000>;
12362306a36Sopenharmony_ci        };
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci        opp-1488000000 {
12662306a36Sopenharmony_ci            clock-latency-ns = <244144>; /* 8 32k periods */
12762306a36Sopenharmony_ci            opp-hz = /bits/ 64 <1488000000>;
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci            opp-microvolt-speed0 = <1160000>;
13062306a36Sopenharmony_ci            opp-microvolt-speed1 = <1000000>;
13162306a36Sopenharmony_ci            opp-microvolt-speed2 = <960000>;
13262306a36Sopenharmony_ci        };
13362306a36Sopenharmony_ci    };
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci...
136