Documentation / devicetree / bindings / clock / ti,lmk04832.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti,lmk04832.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments LMK04832 Clock Controller

maintainers:
  - Liam Beguin <liambeguin@gmail.com>

description: |
  Devicetree binding for the LMK04832, a clock conditioner with JEDEC JESD204B
  support. The LMK04832 is pin compatible with the LMK0482x family.
 
  Link to datasheet, https://www.ti.com/lit/ds/symlink/lmk04832.pdf

properties:
  compatible:
    enum:
      - ti,lmk04832

  reg:
    maxItems: 1
 
  '#address-cells':
    const: 1
 
  '#size-cells':
    const: 0
 
  '#clock-cells':
    const: 1

  spi-max-frequency:
    maximum: 5000000

  clocks:
    items:
      - description: PLL2 reference clock.

  clock-names:
    items:
      - const: oscin

  reset-gpios:
    maxItems: 1

  ti,spi-4wire-rdbk:
    description: |
      Select SPI 4wire readback pin configuration.
      Available readback pins are,
        CLKin_SEL0 0
        CLKin_SEL1 1
        RESET 2
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]
    default: 1

  ti,vco-hz:
    description: Optional to set VCO frequency of the PLL in Hertz.

  ti,sysref-ddly:
    description: SYSREF digital delay value.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 8
    maximum: 8191
    default: 8

  ti,sysref-mux:
    description: |
      SYSREF Mux configuration.
      Available options are,
        Normal SYNC 0
        Re-clocked 1
        SYSREF Pulser 2
        SYSREF Continuous 3
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2, 3]
    default: 3

  ti,sync-mode:
    description: SYNC pin configuration.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]
    default: 1

  ti,sysref-pulse-count:
    description:
      Number of SYSREF pulses to send when SYSREF is not in continuous mode.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 4, 8]
    default: 4

patternProperties:
  "@[0-9a-d]+$":
    type: object
    description:
      Child nodes used to configure output clocks.

    properties:
      reg:
        description:
          clock output identifier.
        minimum: 0
        maximum: 13

      ti,clkout-fmt:
        description:
          Clock output format.
          Available options are,
            Powerdown 0x00
            LVDS 0x01
            HSDS 6 mA 0x02
            HSDS 8 mA 0x03
            LVPECL 1600 mV 0x04
            LVPECL 2000 mV 0x05
            LCPECL 0x06
            CML 16 mA 0x07
            CML 24 mA 0x08
            CML 32 mA 0x09
            CMOS (Off/Inverted) 0x0a
            CMOS (Normal/Off) 0x0b
            CMOS (Inverted/Inverted) 0x0c
            CMOS (Inverted/Normal) 0x0d
            CMOS (Normal/Inverted) 0x0e
            CMOS (Normal/Normal) 0x0f
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 15

      ti,clkout-sysref:
        description:
          Select SYSREF clock path for output clock.
        type: boolean

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg
  - '#clock-cells'
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    clocks {
        lmk04832_oscin: oscin {
            compatible = "fixed-clock";
 
            #clock-cells = <0>;
            clock-frequency = <122880000>;
            clock-output-names = "lmk04832-oscin";
        };
    };
 
    spi {
        #address-cells = <1>;
        #size-cells = <0>;
 
        lmk04832: clock-controller@0 {
            #address-cells = <1>;
            #size-cells = <0>;
 
            reg = <0>;
 
            compatible = "ti,lmk04832";
            spi-max-frequency = <781250>;
 
            reset-gpios = <&gpio_lmk 0 0 0>;
 
            #clock-cells = <1>;
            clocks = <&lmk04832_oscin>;
            clock-names = "oscin";
 
            ti,spi-4wire-rdbk = <0>;
            ti,vco-hz = <2457600000>;
 
            assigned-clocks =
                <&lmk04832 0>, <&lmk04832 1>,
                <&lmk04832 2>, <&lmk04832 3>,
                <&lmk04832 4>,
                <&lmk04832 6>, <&lmk04832 7>,
                <&lmk04832 10>, <&lmk04832 11>;
            assigned-clock-rates =
                <122880000>, <384000>,
                <122880000>, <384000>,
                <122880000>,
                <153600000>, <384000>,
                <614400000>, <384000>;
 
            clkout0@0 {
                reg = <0>;
                ti,clkout-fmt = <0x01>; // LVDS
            };
 
            clkout1@1 {
                reg = <1>;
                ti,clkout-fmt = <0x01>; // LVDS
                ti,clkout-sysref;
            };
        };
    };