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