xref: /linux/Documentation/devicetree/bindings/clock/ti,clkctrl.yaml (revision bbfd5594756011167b8f8de9a00e0c946afda1e6)
1*944b074fSAndreas Kemnade# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*944b074fSAndreas Kemnade%YAML 1.2
3*944b074fSAndreas Kemnade---
4*944b074fSAndreas Kemnade$id: http://devicetree.org/schemas/clock/ti,clkctrl.yaml#
5*944b074fSAndreas Kemnade$schema: http://devicetree.org/meta-schemas/core.yaml#
6*944b074fSAndreas Kemnade
7*944b074fSAndreas Kemnadetitle: Texas Instruments clkctrl clock
8*944b074fSAndreas Kemnade
9*944b074fSAndreas Kemnademaintainers:
10*944b074fSAndreas Kemnade  - Tony Lindgren <tony@atomide.com>
11*944b074fSAndreas Kemnade  - Andreas Kemnade <andreas@kemnade.info>
12*944b074fSAndreas Kemnade
13*944b074fSAndreas Kemnadedescription: |
14*944b074fSAndreas Kemnade  Texas Instruments SoCs can have a clkctrl clock controller for each
15*944b074fSAndreas Kemnade  interconnect target module. The clkctrl clock controller manages functional
16*944b074fSAndreas Kemnade  and interface clocks for each module. Each clkctrl controller can also
17*944b074fSAndreas Kemnade  gate one or more optional functional clocks for a module, and can have one
18*944b074fSAndreas Kemnade  or more clock muxes. There is a clkctrl clock controller typically for each
19*944b074fSAndreas Kemnade  interconnect target module on omap4 and later variants.
20*944b074fSAndreas Kemnade
21*944b074fSAndreas Kemnade  The clock consumers can specify the index of the clkctrl clock using
22*944b074fSAndreas Kemnade  the hardware offset from the clkctrl instance register space. The optional
23*944b074fSAndreas Kemnade  clocks can be specified by clkctrl hardware offset and the index of the
24*944b074fSAndreas Kemnade  optional clock.
25*944b074fSAndreas Kemnade
26*944b074fSAndreas Kemnadeproperties:
27*944b074fSAndreas Kemnade  compatible:
28*944b074fSAndreas Kemnade    enum:
29*944b074fSAndreas Kemnade      - ti,clkctrl
30*944b074fSAndreas Kemnade      - ti,clkctrl-l4-cfg
31*944b074fSAndreas Kemnade      - ti,clkctrl-l4-per
32*944b074fSAndreas Kemnade      - ti,clkctrl-l4-secure
33*944b074fSAndreas Kemnade      - ti,clkctrl-l4-wkup
34*944b074fSAndreas Kemnade
35*944b074fSAndreas Kemnade  "#clock-cells":
36*944b074fSAndreas Kemnade    const: 2
37*944b074fSAndreas Kemnade
38*944b074fSAndreas Kemnade  clock-output-names:
39*944b074fSAndreas Kemnade    maxItems: 1
40*944b074fSAndreas Kemnade
41*944b074fSAndreas Kemnade  reg:
42*944b074fSAndreas Kemnade    minItems: 1
43*944b074fSAndreas Kemnade    maxItems: 8 # arbitrary, should be enough
44*944b074fSAndreas Kemnade
45*944b074fSAndreas Kemnaderequired:
46*944b074fSAndreas Kemnade  - compatible
47*944b074fSAndreas Kemnade  - "#clock-cells"
48*944b074fSAndreas Kemnade  - clock-output-names
49*944b074fSAndreas Kemnade  - reg
50*944b074fSAndreas Kemnade
51*944b074fSAndreas KemnadeadditionalProperties: false
52*944b074fSAndreas Kemnade
53*944b074fSAndreas Kemnadeexamples:
54*944b074fSAndreas Kemnade  - |
55*944b074fSAndreas Kemnade    bus {
56*944b074fSAndreas Kemnade      #address-cells = <1>;
57*944b074fSAndreas Kemnade      #size-cells = <1>;
58*944b074fSAndreas Kemnade
59*944b074fSAndreas Kemnade      clock@20 {
60*944b074fSAndreas Kemnade        compatible = "ti,clkctrl";
61*944b074fSAndreas Kemnade        clock-output-names = "l4_per";
62*944b074fSAndreas Kemnade        reg = <0x20 0x1b0>;
63*944b074fSAndreas Kemnade        #clock-cells = <2>;
64*944b074fSAndreas Kemnade      };
65*944b074fSAndreas Kemnade    };
66