# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti,clkctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments clkctrl clock

maintainers:
  - Tony Lindgren <tony@atomide.com>
  - Andreas Kemnade <andreas@kemnade.info>

description: |
  Texas Instruments SoCs can have a clkctrl clock controller for each
  interconnect target module. The clkctrl clock controller manages functional
  and interface clocks for each module. Each clkctrl controller can also
  gate one or more optional functional clocks for a module, and can have one
  or more clock muxes. There is a clkctrl clock controller typically for each
  interconnect target module on omap4 and later variants.

  The clock consumers can specify the index of the clkctrl clock using
  the hardware offset from the clkctrl instance register space. The optional
  clocks can be specified by clkctrl hardware offset and the index of the
  optional clock.

properties:
  compatible:
    enum:
      - ti,clkctrl
      - ti,clkctrl-l4-cfg
      - ti,clkctrl-l4-per
      - ti,clkctrl-l4-secure
      - ti,clkctrl-l4-wkup

  "#clock-cells":
    const: 2

  clock-output-names:
    maxItems: 1

  reg:
    minItems: 1
    maxItems: 8 # arbitrary, should be enough

required:
  - compatible
  - "#clock-cells"
  - clock-output-names
  - reg

additionalProperties: false

examples:
  - |
    bus {
      #address-cells = <1>;
      #size-cells = <1>;

      clock@20 {
        compatible = "ti,clkctrl";
        clock-output-names = "l4_per";
        reg = <0x20 0x1b0>;
        #clock-cells = <2>;
      };
    };
