diff mbox series

schemas: clock: Add critical-clock

Message ID 20220215084513.8125-1-marex@denx.de (mailing list archive)
State Not Applicable, archived
Headers show
Series schemas: clock: Add critical-clock | expand

Commit Message

Marek Vasut Feb. 15, 2022, 8:45 a.m. UTC
Some platforms require clock to be always running, e.g. because those clock
supply devices which are not otherwise attached to the system. One example
is a system where the SoC serves as a crystal oscillator replacement for a
programmable logic device. The critical-clock property of a clock controller
allows listing clock which must never be turned off.

```
clock-controller@a000f000 {
     compatible = "vendor,clk95;
     reg = <0xa000f000 0x1000>
     #clocks-cells = <1>;
     ...
     critical-clocks = <UART3_CLK>, <SPI5_CLK>;
};
```

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org
To: devicetree@vger.kernel.org
---
 dtschema/lib.py                   | 2 ++
 dtschema/meta-schemas/clocks.yaml | 3 +++
 dtschema/schemas/clock/clock.yaml | 3 +++
 3 files changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/dtschema/lib.py b/dtschema/lib.py
index eada062..e74b7b9 100644
--- a/dtschema/lib.py
+++ b/dtschema/lib.py
@@ -471,6 +471,8 @@  def fixup_node_props(schema):
         schema['properties']['assigned-clocks'] = True
         schema['properties']['assigned-clock-rates'] = True
         schema['properties']['assigned-clock-parents'] = True
+    if "clocks" in keys and "critical-clocks" not in keys:
+        schema['properties']['critical-clocks'] = True
     if "clocks" in keys and "protected-clocks" not in keys:
         schema['properties']['protected-clocks'] = True
 
diff --git a/dtschema/meta-schemas/clocks.yaml b/dtschema/meta-schemas/clocks.yaml
index 9057a4f..1074f36 100644
--- a/dtschema/meta-schemas/clocks.yaml
+++ b/dtschema/meta-schemas/clocks.yaml
@@ -21,6 +21,8 @@  properties:
     $ref: "cell.yaml#/array"
   assigned-clock-rates:
     $ref: "cell.yaml#/array"
+  critical-clocks:
+    $ref: "cell.yaml#/array"
   protected-clocks:
     $ref: "cell.yaml#/array"
 
@@ -37,4 +39,5 @@  dependentRequired:
   assigned-clocks: [clocks]
   assigned-clock-parents: [assigned-clocks]
   assigned-clock-rates: [assigned-clocks]
+  critical-clocks: [clocks]
   protected-clocks: [clocks]
diff --git a/dtschema/schemas/clock/clock.yaml b/dtschema/schemas/clock/clock.yaml
index 6e0f9d0..7dbace4 100644
--- a/dtschema/schemas/clock/clock.yaml
+++ b/dtschema/schemas/clock/clock.yaml
@@ -89,6 +89,8 @@  properties:
     $ref: "/schemas/types.yaml#/definitions/phandle-array"
   assigned-clock-rates:
     $ref: "/schemas/types.yaml#/definitions/uint32-array"
+  critical-clocks:
+    $ref: "/schemas/types.yaml#/definitions/phandle-array"
   protected-clocks:
     $ref: "/schemas/types.yaml#/definitions/phandle-array"
 
@@ -100,6 +102,7 @@  dependencies:
   assigned-clocks: [clocks]
   assigned-clock-parents: [assigned-clocks]
   assigned-clock-rates: [assigned-clocks]
+  critical-clocks: [clocks]
   protected-clocks: [clocks]
 
 additionalProperties: true