dt-bindings: cpufreq: Convert ti-cpufreq to json schema
authorNishanth Menon <nm@ti.com>
Fri, 18 Aug 2023 12:45:04 +0000 (07:45 -0500)
committerViresh Kumar <viresh.kumar@linaro.org>
Mon, 21 Aug 2023 05:53:34 +0000 (11:23 +0530)
Move the ti-cpufreq binding over to opp and convert the free text
binding to json-schema.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt [deleted file]
Documentation/devicetree/bindings/opp/operating-points-v2-ti-cpu.yaml [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt b/Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
deleted file mode 100644 (file)
index 1758051..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-TI CPUFreq and OPP bindings
-================================
-
-Certain TI SoCs, like those in the am335x, am437x, am57xx, and dra7xx
-families support different OPPs depending on the silicon variant in use.
-The ti-cpufreq driver can use revision and an efuse value from the SoC to
-provide the OPP framework with supported hardware information. This is
-used to determine which OPPs from the operating-points-v2 table get enabled
-when it is parsed by the OPP framework.
-
-Required properties:
---------------------
-In 'cpus' nodes:
-- operating-points-v2: Phandle to the operating-points-v2 table to use.
-
-In 'operating-points-v2' table:
-- compatible: Should be
-       - 'operating-points-v2-ti-cpu' for am335x, am43xx, and dra7xx/am57xx,
-         omap34xx, omap36xx and am3517 SoCs
-- syscon: A phandle pointing to a syscon node representing the control module
-         register space of the SoC.
-
-Optional properties:
---------------------
-- "vdd-supply", "vbb-supply": to define two regulators for dra7xx
-- "cpu0-supply", "vbb-supply": to define two regulators for omap36xx
-
-For each opp entry in 'operating-points-v2' table:
-- opp-supported-hw: Two bitfields indicating:
-       1. Which revision of the SoC the OPP is supported by
-       2. Which eFuse bits indicate this OPP is available
-
-       A bitwise AND is performed against these values and if any bit
-       matches, the OPP gets enabled.
-
-Example:
---------
-
-/* From arch/arm/boot/dts/am33xx.dtsi */
-cpus {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       cpu@0 {
-               compatible = "arm,cortex-a8";
-               device_type = "cpu";
-               reg = <0>;
-
-               operating-points-v2 = <&cpu0_opp_table>;
-
-               clocks = <&dpll_mpu_ck>;
-               clock-names = "cpu";
-
-               clock-latency = <300000>; /* From omap-cpufreq driver */
-       };
-};
-
-/*
- * cpu0 has different OPPs depending on SoC revision and some on revisions
- * 0x2 and 0x4 have eFuse bits that indicate if they are available or not
- */
-cpu0_opp_table: opp-table {
-       compatible = "operating-points-v2-ti-cpu";
-       syscon = <&scm_conf>;
-
-       /*
-        * The three following nodes are marked with opp-suspend
-        * because they can not be enabled simultaneously on a
-        * single SoC.
-        */
-       opp50-300000000 {
-               opp-hz = /bits/ 64 <300000000>;
-               opp-microvolt = <950000 931000 969000>;
-               opp-supported-hw = <0x06 0x0010>;
-               opp-suspend;
-       };
-
-       opp100-275000000 {
-               opp-hz = /bits/ 64 <275000000>;
-               opp-microvolt = <1100000 1078000 1122000>;
-               opp-supported-hw = <0x01 0x00FF>;
-               opp-suspend;
-       };
-
-       opp100-300000000 {
-               opp-hz = /bits/ 64 <300000000>;
-               opp-microvolt = <1100000 1078000 1122000>;
-               opp-supported-hw = <0x06 0x0020>;
-               opp-suspend;
-       };
-
-       opp100-500000000 {
-               opp-hz = /bits/ 64 <500000000>;
-               opp-microvolt = <1100000 1078000 1122000>;
-               opp-supported-hw = <0x01 0xFFFF>;
-       };
-
-       opp100-600000000 {
-               opp-hz = /bits/ 64 <600000000>;
-               opp-microvolt = <1100000 1078000 1122000>;
-               opp-supported-hw = <0x06 0x0040>;
-       };
-
-       opp120-600000000 {
-               opp-hz = /bits/ 64 <600000000>;
-               opp-microvolt = <1200000 1176000 1224000>;
-               opp-supported-hw = <0x01 0xFFFF>;
-       };
-
-       opp120-720000000 {
-               opp-hz = /bits/ 64 <720000000>;
-               opp-microvolt = <1200000 1176000 1224000>;
-               opp-supported-hw = <0x06 0x0080>;
-       };
-
-       oppturbo-720000000 {
-               opp-hz = /bits/ 64 <720000000>;
-               opp-microvolt = <1260000 1234800 1285200>;
-               opp-supported-hw = <0x01 0xFFFF>;
-       };
-
-       oppturbo-800000000 {
-               opp-hz = /bits/ 64 <800000000>;
-               opp-microvolt = <1260000 1234800 1285200>;
-               opp-supported-hw = <0x06 0x0100>;
-       };
-
-       oppnitro-1000000000 {
-               opp-hz = /bits/ 64 <1000000000>;
-               opp-microvolt = <1325000 1298500 1351500>;
-               opp-supported-hw = <0x04 0x0200>;
-       };
-};
diff --git a/Documentation/devicetree/bindings/opp/operating-points-v2-ti-cpu.yaml b/Documentation/devicetree/bindings/opp/operating-points-v2-ti-cpu.yaml
new file mode 100644 (file)
index 0000000..02d1d2c
--- /dev/null
@@ -0,0 +1,92 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/opp/operating-points-v2-ti-cpu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI CPU OPP (Operating Performance Points)
+
+description:
+  TI SoCs, like those in the AM335x, AM437x, AM57xx, AM62x, and DRA7xx
+  families, the CPU frequencies subset and the voltage value of each
+  OPP vary based on the silicon variant used. The data sheet sections
+  corresponding to "Operating Performance Points" describe the frequency
+  and voltage values based on device type and speed bin information
+  blown in corresponding eFuse bits as referred to by the Technical
+  Reference Manual.
+
+  This document extends the operating-points-v2 binding by providing
+  the hardware description for the scheme mentioned above.
+
+maintainers:
+  - Nishanth Menon <nm@ti.com>
+
+allOf:
+  - $ref: opp-v2-base.yaml#
+
+properties:
+  compatible:
+    const: operating-points-v2-ti-cpu
+
+  syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      points to syscon node representing the control module
+      register space of the SoC.
+
+  opp-shared: true
+
+patternProperties:
+  '^opp(-?[0-9]+)*$':
+    type: object
+    additionalProperties: false
+
+    properties:
+      clock-latency-ns: true
+      opp-hz: true
+      opp-microvolt: true
+      opp-supported-hw: true
+      opp-suspend: true
+      turbo-mode: true
+
+    required:
+      - opp-hz
+      - opp-supported-hw
+
+required:
+  - compatible
+  - syscon
+
+additionalProperties: false
+
+examples:
+  - |
+    opp-table {
+        compatible = "operating-points-v2-ti-cpu";
+        syscon = <&scm_conf>;
+
+        opp-300000000 {
+            opp-hz = /bits/ 64 <300000000>;
+            opp-microvolt = <1100000 1078000 1122000>;
+            opp-supported-hw = <0x06 0x0020>;
+            opp-suspend;
+        };
+
+        opp-500000000 {
+            opp-hz = /bits/ 64 <500000000>;
+            opp-microvolt = <1100000 1078000 1122000>;
+            opp-supported-hw = <0x01 0xFFFF>;
+        };
+
+        opp-600000000 {
+            opp-hz = /bits/ 64 <600000000>;
+            opp-microvolt = <1100000 1078000 1122000>;
+            opp-supported-hw = <0x06 0x0040>;
+        };
+
+        opp-1000000000 {
+            opp-hz = /bits/ 64 <1000000000>;
+            opp-microvolt = <1325000 1298500 1351500>;
+            opp-supported-hw = <0x04 0x0200>;
+        };
+    };