]> Git Repo - linux.git/commitdiff
dt-bindings: clk: versaclock5: convert to yaml
authorLuca Ceresoli <[email protected]>
Thu, 23 Jul 2020 07:41:12 +0000 (09:41 +0200)
committerStephen Boyd <[email protected]>
Thu, 23 Jul 2020 22:33:43 +0000 (15:33 -0700)
Convert to yaml the VersaClock bindings document. The mapping between
clock specifier and physical pins cannot be described formally in yaml
schema, then keep it verbatim in the description field.

Signed-off-by: Luca Ceresoli <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
Documentation/devicetree/bindings/clock/idt,versaclock5.txt [deleted file]
Documentation/devicetree/bindings/clock/idt,versaclock5.yaml [new file with mode: 0644]
MAINTAINERS

diff --git a/Documentation/devicetree/bindings/clock/idt,versaclock5.txt b/Documentation/devicetree/bindings/clock/idt,versaclock5.txt
deleted file mode 100644 (file)
index 9656d4c..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-Binding for IDT VersaClock 5,6 programmable i2c clock generators.
-
-The IDT VersaClock 5 and VersaClock 6 are programmable i2c clock
-generators providing from 3 to 12 output clocks.
-
-==I2C device node==
-
-Required properties:
-- compatible:  shall be one of
-               "idt,5p49v5923"
-               "idt,5p49v5925"
-               "idt,5p49v5933"
-               "idt,5p49v5935"
-               "idt,5p49v6901"
-               "idt,5p49v6965"
-- reg:         i2c device address, shall be 0x68 or 0x6a.
-- #clock-cells:        from common clock binding; shall be set to 1.
-- clocks:      from common clock binding; list of parent clock handles,
-               - 5p49v5923 and
-                 5p49v5925 and
-                 5p49v6901: (required) either or both of XTAL or CLKIN
-                                       reference clock.
-               - 5p49v5933 and
-               - 5p49v5935: (optional) property not present (internal
-                                       Xtal used) or CLKIN reference
-                                       clock.
-- clock-names: from common clock binding; clock input names, can be
-               - 5p49v5923 and
-                 5p49v5925 and
-                 5p49v6901: (required) either or both of "xin", "clkin".
-               - 5p49v5933 and
-               - 5p49v5935: (optional) property not present or "clkin".
-
-For all output ports, a corresponding, optional child node named OUT1,
-OUT2, etc. can represent a each output, and the node can be used to
-specify the following:
-
-- idt,mode: can be one of the following:
-                 - VC5_LVPECL
-                 - VC5_CMOS
-                 - VC5_HCSL33
-                 - VC5_LVDS
-                 - VC5_CMOS2
-                 - VC5_CMOSD
-                 - VC5_HCSL25
-
-- idt,voltage-microvolts:  can be one of the following
-                 - 1800000
-                 - 2500000
-                 - 3300000
--  idt,slew-percent: Percent of normal, can be one of
-                 - 80
-                 - 85
-                 - 90
-                 - 100
-
-==Mapping between clock specifier and physical pins==
-
-When referencing the provided clock in the DT using phandle and
-clock specifier, the following mapping applies:
-
-5P49V5923:
-       0 -- OUT0_SEL_I2CB
-       1 -- OUT1
-       2 -- OUT2
-
-5P49V5933:
-       0 -- OUT0_SEL_I2CB
-       1 -- OUT1
-       2 -- OUT4
-
-5P49V5925 and
-5P49V5935:
-       0 -- OUT0_SEL_I2CB
-       1 -- OUT1
-       2 -- OUT2
-       3 -- OUT3
-       4 -- OUT4
-
-5P49V6901:
-       0 -- OUT0_SEL_I2CB
-       1 -- OUT1
-       2 -- OUT2
-       3 -- OUT3
-       4 -- OUT4
-
-==Example==
-
-/* 25MHz reference crystal */
-ref25: ref25m {
-       compatible = "fixed-clock";
-       #clock-cells = <0>;
-       clock-frequency = <25000000>;
-};
-
-i2c-master-node {
-
-       /* IDT 5P49V5923 i2c clock generator */
-       vc5: clock-generator@6a {
-               compatible = "idt,5p49v5923";
-               reg = <0x6a>;
-               #clock-cells = <1>;
-
-               /* Connect XIN input to 25MHz reference */
-               clocks = <&ref25m>;
-               clock-names = "xin";
-
-               OUT1 {
-                       idt,mode = <VC5_CMOS>;
-                       idt,voltage-microvolts = <1800000>;
-                       idt,slew-percent = <80>;
-               };
-               OUT2 {
-                       ...
-               };
-               ...
-       };
-};
-
-/* Consumer referencing the 5P49V5923 pin OUT1 */
-consumer {
-       ...
-       clocks = <&vc5 1>;
-       ...
-}
diff --git a/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml b/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
new file mode 100644 (file)
index 0000000..3d4e168
--- /dev/null
@@ -0,0 +1,154 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/idt,versaclock5.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Binding for IDT VersaClock 5 and 6 programmable I2C clock generators
+
+description: |
+  The IDT VersaClock 5 and VersaClock 6 are programmable I2C
+  clock generators providing from 3 to 12 output clocks.
+
+  When referencing the provided clock in the DT using phandle and clock
+  specifier, the following mapping applies:
+
+  - 5P49V5923:
+    0 -- OUT0_SEL_I2CB
+    1 -- OUT1
+    2 -- OUT2
+
+  - 5P49V5933:
+    0 -- OUT0_SEL_I2CB
+    1 -- OUT1
+    2 -- OUT4
+
+  - other parts:
+    0 -- OUT0_SEL_I2CB
+    1 -- OUT1
+    2 -- OUT2
+    3 -- OUT3
+    4 -- OUT4
+
+maintainers:
+  - Luca Ceresoli <[email protected]>
+
+properties:
+  compatible:
+    enum:
+      - idt,5p49v5923
+      - idt,5p49v5925
+      - idt,5p49v5933
+      - idt,5p49v5935
+      - idt,5p49v6901
+      - idt,5p49v6965
+
+  reg:
+    description: I2C device address
+    enum: [ 0x68, 0x6a ]
+
+  '#clock-cells':
+    const: 1
+
+patternProperties:
+  "^OUT[1-4]$":
+    type: object
+    description:
+      Description of one of the outputs (OUT1..OUT4). See "Clock1 Output
+      Configuration" in the Versaclock 5/6/6E Family Register Description
+      and Programming Guide.
+    properties:
+      idt,mode:
+        description:
+          The output drive mode. Values defined in dt-bindings/clk/versaclock.h
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 6
+      idt,voltage-microvolt:
+        description: The output drive voltage.
+        enum: [ 1800000, 2500000, 3300000 ]
+      idt,slew-percent:
+        description: The Slew rate control for CMOS single-ended.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [ 80, 85, 90, 100 ]
+
+required:
+  - compatible
+  - reg
+  - '#clock-cells'
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          enum:
+            - idt,5p49v5933
+            - idt,5p49v5935
+    then:
+      # Devices with builtin crystal + optional external input
+      properties:
+        clock-names:
+          const: clkin
+        clocks:
+          maxItems: 1
+    else:
+      # Devices without builtin crystal
+      properties:
+        clock-names:
+            minItems: 1
+            maxItems: 2
+            items:
+              enum: [ xin, clkin ]
+        clocks:
+          minItems: 1
+          maxItems: 2
+      required:
+        - clock-names
+        - clocks
+
+examples:
+  - |
+    #include <dt-bindings/clk/versaclock.h>
+
+    /* 25MHz reference crystal */
+    ref25: ref25m {
+        compatible = "fixed-clock";
+        #clock-cells = <0>;
+        clock-frequency = <25000000>;
+    };
+
+    i2c@0 {
+        reg = <0x0 0x100>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /* IDT 5P49V5923 I2C clock generator */
+        vc5: clock-generator@6a {
+            compatible = "idt,5p49v5923";
+            reg = <0x6a>;
+            #clock-cells = <1>;
+
+            /* Connect XIN input to 25MHz reference */
+            clocks = <&ref25m>;
+            clock-names = "xin";
+
+            OUT1 {
+                idt,drive-mode = <VC5_CMOSD>;
+                idt,voltage-microvolts = <1800000>;
+                idt,slew-percent = <80>;
+            };
+
+            OUT4 {
+                idt,drive-mode = <VC5_LVDS>;
+            };
+        };
+    };
+
+    /* Consumer referencing the 5P49V5923 pin OUT1 */
+    consumer {
+        /* ... */
+        clocks = <&vc5 1>;
+        /* ... */
+    };
+
+...
index 5aa16c245c63570e8d2c471cc169ae0a90fc44a3..09d6efd1d0d0e25cd45b5b8b77a354e8734e447a 100644 (file)
@@ -8326,6 +8326,7 @@ F:        drivers/input/misc/ideapad_slidebar.c
 IDT VersaClock 5 CLOCK DRIVER
 M:     Luca Ceresoli <[email protected]>
 S:     Maintained
+F:     Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
 F:     drivers/clk/clk-versaclock5.c
 
 IEEE 802.15.4 SUBSYSTEM
This page took 0.067606 seconds and 4 git commands to generate.