diff mbox series

[v2,2/3] dt-bindings: clock: amlogic: convert amlogic,gxbb-aoclkc.txt to dt-schema

Message ID 20230705-b4-amlogic-bindings-convert-take2-v2-2-22be915ddc3b@linaro.org (mailing list archive)
State New, archived
Headers show
Series dt-bindings: second batch of dt-schema conversions for Amlogic Meson bindings | expand

Commit Message

Neil Armstrong July 5, 2023, 11:41 a.m. UTC
Convert the Amlogic Always-On Clock Controller bindings to dt-schema.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
 .../bindings/clock/amlogic,gxbb-aoclkc.txt         |  64 -------------
 .../bindings/clock/amlogic,gxbb-aoclkc.yaml        | 101 +++++++++++++++++++++
 2 files changed, 101 insertions(+), 64 deletions(-)

Comments

Rob Herring (Arm) July 5, 2023, 7:56 p.m. UTC | #1
On Wed, Jul 05, 2023 at 01:41:52PM +0200, Neil Armstrong wrote:
> Convert the Amlogic Always-On Clock Controller bindings to dt-schema.
> 
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
>  .../bindings/clock/amlogic,gxbb-aoclkc.txt         |  64 -------------
>  .../bindings/clock/amlogic,gxbb-aoclkc.yaml        | 101 +++++++++++++++++++++
>  2 files changed, 101 insertions(+), 64 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
> deleted file mode 100644
> index c41f0be5d438..000000000000
> --- a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -* Amlogic GXBB AO Clock and Reset Unit
> -
> -The Amlogic GXBB AO clock controller generates and supplies clock to various
> -controllers within the Always-On part of the SoC.
> -
> -Required Properties:
> -
> -- compatible: value should be different for each SoC family as :
> -	- GXBB (S905) : "amlogic,meson-gxbb-aoclkc"
> -	- GXL (S905X, S905D) : "amlogic,meson-gxl-aoclkc"
> -	- GXM (S912) : "amlogic,meson-gxm-aoclkc"
> -	- AXG (A113D, A113X) : "amlogic,meson-axg-aoclkc"
> -	- G12A (S905X2, S905D2, S905Y2) : "amlogic,meson-g12a-aoclkc"
> -	followed by the common "amlogic,meson-gx-aoclkc"
> -- clocks: list of clock phandle, one for each entry clock-names.
> -- clock-names: should contain the following:
> -  * "xtal"     : the platform xtal
> -  * "mpeg-clk" : the main clock controller mother clock (aka clk81)
> -  * "ext-32k-0"  : external 32kHz reference #0 if any (optional)
> -  * "ext-32k-1"  : external 32kHz reference #1 if any (optional - gx only)
> -  * "ext-32k-2"  : external 32kHz reference #2 if any (optional - gx only)
> -
> -- #clock-cells: should be 1.
> -
> -Each clock is assigned an identifier and client nodes can use this identifier
> -to specify the clock which they consume. All available clocks are defined as
> -preprocessor macros in the dt-bindings/clock/gxbb-aoclkc.h header and can be
> -used in device tree sources.
> -
> -- #reset-cells: should be 1.
> -
> -Each reset is assigned an identifier and client nodes can use this identifier
> -to specify the reset which they consume. All available resets are defined as
> -preprocessor macros in the dt-bindings/reset/gxbb-aoclkc.h header and can be
> -used in device tree sources.
> -
> -Parent node should have the following properties :
> -- compatible: "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd"
> -- reg: base address and size of the AO system control register space.
> -
> -Example: AO Clock controller node:
> -
> -ao_sysctrl: sys-ctrl@0 {
> -	compatible = "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd";
> -	reg =  <0x0 0x0 0x0 0x100>;
> -
> -	clkc_AO: clock-controller {
> -		compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc";
> -		#clock-cells = <1>;
> -		#reset-cells = <1>;
> -		clocks = <&xtal>, <&clkc CLKID_CLK81>;
> -		clock-names = "xtal", "mpeg-clk";
> -	};
> -
> -Example: UART controller node that consumes the clock and reset generated
> -  by the clock controller:
> -
> -	uart_AO: serial@4c0 {
> -		compatible = "amlogic,meson-uart";
> -		reg = <0x4c0 0x14>;
> -		interrupts = <0 90 1>;
> -		clocks = <&clkc_AO CLKID_AO_UART1>;
> -		resets = <&clkc_AO RESET_AO_UART1>;
> -	};
> diff --git a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
> new file mode 100644
> index 000000000000..0adcfbcf5c85
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
> @@ -0,0 +1,101 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/amlogic,gxbb-aoclkc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Amlogic Always-On Clock Controller
> +
> +maintainers:
> +  - Neil Armstrong <neil.armstrong@linaro.org>
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:
> +          - enum:
> +              - amlogic,meson-gxbb-aoclkc
> +              - amlogic,meson-gxl-aoclkc
> +              - amlogic,meson-gxm-aoclkc
> +              - amlogic,meson-axg-aoclkc
> +          - const: amlogic,meson-gx-aoclkc
> +      - enum:
> +          - amlogic,meson-axg-aoclkc
> +          - amlogic,meson-g12a-aoclkc
> +
> +  clocks:
> +    minItems: 2
> +    maxItems: 5
> +
> +  clock-names:
> +    minItems: 2
> +    maxItems: 5
> +
> +  '#clock-cells':
> +    const: 1
> +
> +  '#reset-cells':
> +    const: 1
> +
> +required:
> +  - compatible
> +  - clocks
> +  - clock-names
> +  - '#clock-cells'
> +  - '#reset-cells'
> +
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - amlogic,meson-gxbb-aoclkc
> +
> +    then:
> +      properties:
> +        clock-names:
> +          minItems: 2
> +          items:
> +            - const: xtal 
> +            - const: mpeg-clk
> +            - const: ext-32k-0
> +            - const: ext-32k-1
> +            - const: ext-32k-2

As the names are always the same, move this to top-level and just set 
the length here (except the constraints are the same as top-level, so 
you can just drop this if/then).

> +
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - amlogic,meson-g12a-aoclkc
> +
> +    then:
> +      properties:
> +        clocks:
> +          maxItems: 3
> +
> +        clock-names:
> +          minItems: 2
> +          items:
> +            - const: xtal 
> +            - const: mpeg-clk
> +            - const: ext-32k-0

Just 'maxItems: 3'

> +
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - amlogic,meson-gxl-aoclkc
> +            - amlogic,meson-gxm-aoclkc
> +            - amlogic,meson-axg-aoclkc
> +
> +    then:
> +      properties:
> +        clocks:
> +          maxItems: 2
> +
> +        clock-names:
> +          items:
> +            - const: xtal 
> +            - const: mpeg-clk

maxItems: 2

> +
> +additionalProperties: false
> 
> -- 
> 2.34.1
>
Jerome Brunet July 6, 2023, 7:15 a.m. UTC | #2
On Wed 05 Jul 2023 at 13:56, Rob Herring <robh@kernel.org> wrote:

> On Wed, Jul 05, 2023 at 01:41:52PM +0200, Neil Armstrong wrote:
>> Convert the Amlogic Always-On Clock Controller bindings to dt-schema.
>> 
>> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
>> ---
>>  .../bindings/clock/amlogic,gxbb-aoclkc.txt         |  64 -------------
>>  .../bindings/clock/amlogic,gxbb-aoclkc.yaml        | 101 +++++++++++++++++++++
>>  2 files changed, 101 insertions(+), 64 deletions(-)
>> 
>> diff --git
>> a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
>> b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
>> deleted file mode 100644
>> index c41f0be5d438..000000000000
>> --- a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
>> +++ /dev/null
>> @@ -1,64 +0,0 @@
>> -* Amlogic GXBB AO Clock and Reset Unit
>> -
>> -The Amlogic GXBB AO clock controller generates and supplies clock to various
>> -controllers within the Always-On part of the SoC.
>> -
>> -Required Properties:
>> -
>> -- compatible: value should be different for each SoC family as :
>> -	- GXBB (S905) : "amlogic,meson-gxbb-aoclkc"
>> -	- GXL (S905X, S905D) : "amlogic,meson-gxl-aoclkc"
>> -	- GXM (S912) : "amlogic,meson-gxm-aoclkc"
>> -	- AXG (A113D, A113X) : "amlogic,meson-axg-aoclkc"
>> -	- G12A (S905X2, S905D2, S905Y2) : "amlogic,meson-g12a-aoclkc"
>> -	followed by the common "amlogic,meson-gx-aoclkc"
>> -- clocks: list of clock phandle, one for each entry clock-names.
>> -- clock-names: should contain the following:
>> -  * "xtal"     : the platform xtal
>> -  * "mpeg-clk" : the main clock controller mother clock (aka clk81)
>> -  * "ext-32k-0"  : external 32kHz reference #0 if any (optional)
>> -  * "ext-32k-1"  : external 32kHz reference #1 if any (optional - gx only)
>> -  * "ext-32k-2"  : external 32kHz reference #2 if any (optional - gx only)
>> -
>> -- #clock-cells: should be 1.
>> -
>> -Each clock is assigned an identifier and client nodes can use this identifier
>> -to specify the clock which they consume. All available clocks are defined as
>> -preprocessor macros in the dt-bindings/clock/gxbb-aoclkc.h header and can be
>> -used in device tree sources.
>> -
>> -- #reset-cells: should be 1.
>> -
>> -Each reset is assigned an identifier and client nodes can use this identifier
>> -to specify the reset which they consume. All available resets are defined as
>> -preprocessor macros in the dt-bindings/reset/gxbb-aoclkc.h header and can be
>> -used in device tree sources.
>> -
>> -Parent node should have the following properties :
>> -- compatible: "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd"
>> -- reg: base address and size of the AO system control register space.
>> -
>> -Example: AO Clock controller node:
>> -
>> -ao_sysctrl: sys-ctrl@0 {
>> -	compatible = "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd";
>> -	reg =  <0x0 0x0 0x0 0x100>;
>> -
>> -	clkc_AO: clock-controller {
>> -		compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc";
>> -		#clock-cells = <1>;
>> -		#reset-cells = <1>;
>> -		clocks = <&xtal>, <&clkc CLKID_CLK81>;
>> -		clock-names = "xtal", "mpeg-clk";
>> -	};
>> -
>> -Example: UART controller node that consumes the clock and reset generated
>> -  by the clock controller:
>> -
>> -	uart_AO: serial@4c0 {
>> -		compatible = "amlogic,meson-uart";
>> -		reg = <0x4c0 0x14>;
>> -		interrupts = <0 90 1>;
>> -		clocks = <&clkc_AO CLKID_AO_UART1>;
>> -		resets = <&clkc_AO RESET_AO_UART1>;
>> -	};
>> diff --git
>> a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
>> b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
>> new file mode 100644
>> index 000000000000..0adcfbcf5c85
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
>> @@ -0,0 +1,101 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/clock/amlogic,gxbb-aoclkc.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Amlogic Always-On Clock Controller
>> +
>> +maintainers:
>> +  - Neil Armstrong <neil.armstrong@linaro.org>
>> +
>> +properties:
>> +  compatible:
>> +    oneOf:
>> +      - items:
>> +          - enum:
>> +              - amlogic,meson-gxbb-aoclkc
>> +              - amlogic,meson-gxl-aoclkc
>> +              - amlogic,meson-gxm-aoclkc
>> +              - amlogic,meson-axg-aoclkc
>> +          - const: amlogic,meson-gx-aoclkc
>> +      - enum:
>> +          - amlogic,meson-axg-aoclkc
>> +          - amlogic,meson-g12a-aoclkc
>> +
>> +  clocks:
>> +    minItems: 2
>> +    maxItems: 5
>> +
>> +  clock-names:
>> +    minItems: 2
>> +    maxItems: 5
>> +
>> +  '#clock-cells':
>> +    const: 1
>> +
>> +  '#reset-cells':
>> +    const: 1
>> +
>> +required:
>> +  - compatible
>> +  - clocks
>> +  - clock-names
>> +  - '#clock-cells'
>> +  - '#reset-cells'
>> +
>> +allOf:
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum:
>> +            - amlogic,meson-gxbb-aoclkc
>> +
>> +    then:
>> +      properties:
>> +        clock-names:
>> +          minItems: 2
>> +          items:
>> +            - const: xtal 
>> +            - const: mpeg-clk
>> +            - const: ext-32k-0
>> +            - const: ext-32k-1
>> +            - const: ext-32k-2
>
> As the names are always the same, move this to top-level and just set 
> the length here (except the constraints are the same as top-level, so 
> you can just drop this if/then).

If this is done, aren't we losing information ?

For example, "ext-32k-1" would become valid with a g12a as long as the
number of clocks is alright, which it is not.

I'm not concerned by the automated verification, more the information
provided to the users, which we used to have in the txt format.

>
>> +
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum:
>> +            - amlogic,meson-g12a-aoclkc
>> +
>> +    then:
>> +      properties:
>> +        clocks:
>> +          maxItems: 3
>> +
>> +        clock-names:
>> +          minItems: 2
>> +          items:
>> +            - const: xtal 
>> +            - const: mpeg-clk
>> +            - const: ext-32k-0
>
> Just 'maxItems: 3'
>
>> +
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum:
>> +            - amlogic,meson-gxl-aoclkc
>> +            - amlogic,meson-gxm-aoclkc
>> +            - amlogic,meson-axg-aoclkc
>> +
>> +    then:
>> +      properties:
>> +        clocks:
>> +          maxItems: 2
>> +
>> +        clock-names:
>> +          items:
>> +            - const: xtal 
>> +            - const: mpeg-clk
>
> maxItems: 2
>
>> +
>> +additionalProperties: false
>> 
>> -- 
>> 2.34.1
>>
Krzysztof Kozlowski July 6, 2023, 7:51 a.m. UTC | #3
On 06/07/2023 09:15, Jerome Brunet wrote:
>>> +    then:
>>> +      properties:
>>> +        clock-names:
>>> +          minItems: 2
>>> +          items:
>>> +            - const: xtal 
>>> +            - const: mpeg-clk
>>> +            - const: ext-32k-0
>>> +            - const: ext-32k-1
>>> +            - const: ext-32k-2
>>
>> As the names are always the same, move this to top-level and just set 
>> the length here (except the constraints are the same as top-level, so 
>> you can just drop this if/then).
> 
> If this is done, aren't we losing information ?
> 
> For example, "ext-32k-1" would become valid with a g12a as long as the
> number of clocks is alright, which it is not.

How it would be valid? It would be fourth item but only three are allowed.

> 
> I'm not concerned by the automated verification, more the information
> provided to the users, which we used to have in the txt format.

No information is lost here, unless you claim that entries are entirely
different?


Best regards,
Krzysztof
Jerome Brunet July 6, 2023, 8:03 a.m. UTC | #4
On Thu 06 Jul 2023 at 09:51, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:

> On 06/07/2023 09:15, Jerome Brunet wrote:
>>>> +    then:
>>>> +      properties:
>>>> +        clock-names:
>>>> +          minItems: 2
>>>> +          items:
>>>> +            - const: xtal 
>>>> +            - const: mpeg-clk
>>>> +            - const: ext-32k-0
>>>> +            - const: ext-32k-1
>>>> +            - const: ext-32k-2
>>>
>>> As the names are always the same, move this to top-level and just set 
>>> the length here (except the constraints are the same as top-level, so 
>>> you can just drop this if/then).
>> 
>> If this is done, aren't we losing information ?
>> 
>> For example, "ext-32k-1" would become valid with a g12a as long as the
>> number of clocks is alright, which it is not.
>
> How it would be valid? It would be fourth item but only three are allowed.
>

I missed that the order in 'items' mattered. Thanks for the
clarification.

>> 
>> I'm not concerned by the automated verification, more the information
>> provided to the users, which we used to have in the txt format.
>
> No information is lost here, unless you claim that entries are entirely
> different?
>
>
> Best regards,
> Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
deleted file mode 100644
index c41f0be5d438..000000000000
--- a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
+++ /dev/null
@@ -1,64 +0,0 @@ 
-* Amlogic GXBB AO Clock and Reset Unit
-
-The Amlogic GXBB AO clock controller generates and supplies clock to various
-controllers within the Always-On part of the SoC.
-
-Required Properties:
-
-- compatible: value should be different for each SoC family as :
-	- GXBB (S905) : "amlogic,meson-gxbb-aoclkc"
-	- GXL (S905X, S905D) : "amlogic,meson-gxl-aoclkc"
-	- GXM (S912) : "amlogic,meson-gxm-aoclkc"
-	- AXG (A113D, A113X) : "amlogic,meson-axg-aoclkc"
-	- G12A (S905X2, S905D2, S905Y2) : "amlogic,meson-g12a-aoclkc"
-	followed by the common "amlogic,meson-gx-aoclkc"
-- clocks: list of clock phandle, one for each entry clock-names.
-- clock-names: should contain the following:
-  * "xtal"     : the platform xtal
-  * "mpeg-clk" : the main clock controller mother clock (aka clk81)
-  * "ext-32k-0"  : external 32kHz reference #0 if any (optional)
-  * "ext-32k-1"  : external 32kHz reference #1 if any (optional - gx only)
-  * "ext-32k-2"  : external 32kHz reference #2 if any (optional - gx only)
-
-- #clock-cells: should be 1.
-
-Each clock is assigned an identifier and client nodes can use this identifier
-to specify the clock which they consume. All available clocks are defined as
-preprocessor macros in the dt-bindings/clock/gxbb-aoclkc.h header and can be
-used in device tree sources.
-
-- #reset-cells: should be 1.
-
-Each reset is assigned an identifier and client nodes can use this identifier
-to specify the reset which they consume. All available resets are defined as
-preprocessor macros in the dt-bindings/reset/gxbb-aoclkc.h header and can be
-used in device tree sources.
-
-Parent node should have the following properties :
-- compatible: "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd"
-- reg: base address and size of the AO system control register space.
-
-Example: AO Clock controller node:
-
-ao_sysctrl: sys-ctrl@0 {
-	compatible = "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd";
-	reg =  <0x0 0x0 0x0 0x100>;
-
-	clkc_AO: clock-controller {
-		compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc";
-		#clock-cells = <1>;
-		#reset-cells = <1>;
-		clocks = <&xtal>, <&clkc CLKID_CLK81>;
-		clock-names = "xtal", "mpeg-clk";
-	};
-
-Example: UART controller node that consumes the clock and reset generated
-  by the clock controller:
-
-	uart_AO: serial@4c0 {
-		compatible = "amlogic,meson-uart";
-		reg = <0x4c0 0x14>;
-		interrupts = <0 90 1>;
-		clocks = <&clkc_AO CLKID_AO_UART1>;
-		resets = <&clkc_AO RESET_AO_UART1>;
-	};
diff --git a/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
new file mode 100644
index 000000000000..0adcfbcf5c85
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
@@ -0,0 +1,101 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/amlogic,gxbb-aoclkc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic Always-On Clock Controller
+
+maintainers:
+  - Neil Armstrong <neil.armstrong@linaro.org>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - amlogic,meson-gxbb-aoclkc
+              - amlogic,meson-gxl-aoclkc
+              - amlogic,meson-gxm-aoclkc
+              - amlogic,meson-axg-aoclkc
+          - const: amlogic,meson-gx-aoclkc
+      - enum:
+          - amlogic,meson-axg-aoclkc
+          - amlogic,meson-g12a-aoclkc
+
+  clocks:
+    minItems: 2
+    maxItems: 5
+
+  clock-names:
+    minItems: 2
+    maxItems: 5
+
+  '#clock-cells':
+    const: 1
+
+  '#reset-cells':
+    const: 1
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+  - '#clock-cells'
+  - '#reset-cells'
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          enum:
+            - amlogic,meson-gxbb-aoclkc
+
+    then:
+      properties:
+        clock-names:
+          minItems: 2
+          items:
+            - const: xtal 
+            - const: mpeg-clk
+            - const: ext-32k-0
+            - const: ext-32k-1
+            - const: ext-32k-2
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - amlogic,meson-g12a-aoclkc
+
+    then:
+      properties:
+        clocks:
+          maxItems: 3
+
+        clock-names:
+          minItems: 2
+          items:
+            - const: xtal 
+            - const: mpeg-clk
+            - const: ext-32k-0
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - amlogic,meson-gxl-aoclkc
+            - amlogic,meson-gxm-aoclkc
+            - amlogic,meson-axg-aoclkc
+
+    then:
+      properties:
+        clocks:
+          maxItems: 2
+
+        clock-names:
+          items:
+            - const: xtal 
+            - const: mpeg-clk
+
+additionalProperties: false