xref: /linux/Documentation/devicetree/bindings/clock/ti/ti,composite-clock.yaml (revision 1260ed77798502de9c98020040d2995008de10cc)
1*dc39d7faSAndreas Kemnade# SPDX-License-Identifier: GPL-2.0-only
2*dc39d7faSAndreas Kemnade%YAML 1.2
3*dc39d7faSAndreas Kemnade---
4*dc39d7faSAndreas Kemnade$id: http://devicetree.org/schemas/clock/ti/ti,composite-clock.yaml#
5*dc39d7faSAndreas Kemnade$schema: http://devicetree.org/meta-schemas/core.yaml#
6*dc39d7faSAndreas Kemnade
7*dc39d7faSAndreas Kemnadetitle: Texas Instruments composite clock
8*dc39d7faSAndreas Kemnade
9*dc39d7faSAndreas Kemnademaintainers:
10*dc39d7faSAndreas Kemnade  - Tero Kristo <kristo@kernel.org>
11*dc39d7faSAndreas Kemnade
12*dc39d7faSAndreas Kemnadedescription: |
13*dc39d7faSAndreas Kemnade  *Deprecated design pattern: one node per clock*
14*dc39d7faSAndreas Kemnade
15*dc39d7faSAndreas Kemnade  This binding assumes a register-mapped composite clock with multiple
16*dc39d7faSAndreas Kemnade  different sub-types:
17*dc39d7faSAndreas Kemnade
18*dc39d7faSAndreas Kemnade    a multiplexer clock with multiple input clock signals or parents, one
19*dc39d7faSAndreas Kemnade    of which can be selected as output, this behaves exactly as [1].
20*dc39d7faSAndreas Kemnade
21*dc39d7faSAndreas Kemnade    an adjustable clock rate divider, this behaves exactly as [2].
22*dc39d7faSAndreas Kemnade
23*dc39d7faSAndreas Kemnade    a gating function which can be used to enable and disable the output
24*dc39d7faSAndreas Kemnade    clock, this behaves exactly as [3].
25*dc39d7faSAndreas Kemnade
26*dc39d7faSAndreas Kemnade  The binding must provide a list of the component clocks that shall be
27*dc39d7faSAndreas Kemnade  merged to this clock. The component clocks shall be of one of the
28*dc39d7faSAndreas Kemnade  "ti,*composite*-clock" types.
29*dc39d7faSAndreas Kemnade
30*dc39d7faSAndreas Kemnade  [1] Documentation/devicetree/bindings/clock/ti/ti,mux-clock.yaml
31*dc39d7faSAndreas Kemnade  [2] Documentation/devicetree/bindings/clock/ti/ti,divider-clock.yaml
32*dc39d7faSAndreas Kemnade  [3] Documentation/devicetree/bindings/clock/ti/ti,gate-clock.yaml
33*dc39d7faSAndreas Kemnade
34*dc39d7faSAndreas Kemnadeproperties:
35*dc39d7faSAndreas Kemnade  compatible:
36*dc39d7faSAndreas Kemnade    const: ti,composite-clock
37*dc39d7faSAndreas Kemnade
38*dc39d7faSAndreas Kemnade  "#clock-cells":
39*dc39d7faSAndreas Kemnade    const: 0
40*dc39d7faSAndreas Kemnade
41*dc39d7faSAndreas Kemnade  clocks: true
42*dc39d7faSAndreas Kemnade
43*dc39d7faSAndreas Kemnade  clock-output-names:
44*dc39d7faSAndreas Kemnade    maxItems: 1
45*dc39d7faSAndreas Kemnade
46*dc39d7faSAndreas Kemnaderequired:
47*dc39d7faSAndreas Kemnade  - compatible
48*dc39d7faSAndreas Kemnade  - "#clock-cells"
49*dc39d7faSAndreas Kemnade  - clocks
50*dc39d7faSAndreas Kemnade
51*dc39d7faSAndreas KemnadeadditionalProperties: false
52*dc39d7faSAndreas Kemnade
53*dc39d7faSAndreas Kemnadeexamples:
54*dc39d7faSAndreas Kemnade  - |
55*dc39d7faSAndreas Kemnade    bus {
56*dc39d7faSAndreas Kemnade      #address-cells = <1>;
57*dc39d7faSAndreas Kemnade      #size-cells = <0>;
58*dc39d7faSAndreas Kemnade
59*dc39d7faSAndreas Kemnade      usb_l4_gate_ick: clock-controller@a10 {
60*dc39d7faSAndreas Kemnade        #clock-cells = <0>;
61*dc39d7faSAndreas Kemnade        compatible = "ti,composite-gate-clock";
62*dc39d7faSAndreas Kemnade        clocks = <&l4_ick>;
63*dc39d7faSAndreas Kemnade        ti,bit-shift = <5>;
64*dc39d7faSAndreas Kemnade        reg = <0x0a10>;
65*dc39d7faSAndreas Kemnade      };
66*dc39d7faSAndreas Kemnade
67*dc39d7faSAndreas Kemnade      usb_l4_div_ick: clock-controller@a40 {
68*dc39d7faSAndreas Kemnade        #clock-cells = <0>;
69*dc39d7faSAndreas Kemnade        compatible = "ti,composite-divider-clock";
70*dc39d7faSAndreas Kemnade        clocks = <&l4_ick>;
71*dc39d7faSAndreas Kemnade        ti,bit-shift = <4>;
72*dc39d7faSAndreas Kemnade        ti,max-div = <1>;
73*dc39d7faSAndreas Kemnade        reg = <0x0a40>;
74*dc39d7faSAndreas Kemnade        ti,index-starts-at-one;
75*dc39d7faSAndreas Kemnade      };
76*dc39d7faSAndreas Kemnade    };
77*dc39d7faSAndreas Kemnade
78*dc39d7faSAndreas Kemnade    clock-controller {
79*dc39d7faSAndreas Kemnade      #clock-cells = <0>;
80*dc39d7faSAndreas Kemnade      compatible = "ti,composite-clock";
81*dc39d7faSAndreas Kemnade      clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>;
82*dc39d7faSAndreas Kemnade    };
83