[PATCH] schemas: clock: Add protected-clock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Some platforms or firmwares may not fully expose all the clocks to the OS, such
as in situations where those clks are used by drivers running in ARM secure
execution levels. Such a configuration can be specified in device tree with the
protected-clocks property in the form of a clock specifier list. This property should
only be specified in the node that is providing the clocks being protected:

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

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

diff --git a/dtschema/lib.py b/dtschema/lib.py
index ae5a3bc..eada062 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 "protected-clocks" not in keys:
+        schema['properties']['protected-clocks'] = True
 
 
 def extract_node_compatibles(schema):
diff --git a/dtschema/meta-schemas/clocks.yaml b/dtschema/meta-schemas/clocks.yaml
index facad30..9057a4f 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"
+  protected-clocks:
+    $ref: "cell.yaml#/array"
 
   clock-frequency:
     $ref: "cell.yaml#/single"
@@ -35,3 +37,4 @@ dependentRequired:
   assigned-clocks: [clocks]
   assigned-clock-parents: [assigned-clocks]
   assigned-clock-rates: [assigned-clocks]
+  protected-clocks: [clocks]
diff --git a/dtschema/schemas/clock/clock.yaml b/dtschema/schemas/clock/clock.yaml
index a530f67..6e0f9d0 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"
+  protected-clocks:
+    $ref: "/schemas/types.yaml#/definitions/phandle-array"
 
 dependencies:
   clock-names: [clocks]
@@ -98,5 +100,6 @@ dependencies:
   assigned-clocks: [clocks]
   assigned-clock-parents: [assigned-clocks]
   assigned-clock-rates: [assigned-clocks]
+  protected-clocks: [clocks]
 
 additionalProperties: true
-- 
2.34.1




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux