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