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