Documentation / devicetree / bindings / clock / ti / ti,composite-clock.yaml


Based on kernel version 6.14. Page generated on 2025-04-02 08:20 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/ti/ti,composite-clock.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments composite clock

maintainers:
  - Tero Kristo <kristo@kernel.org>

description: |
  *Deprecated design pattern: one node per clock*
 
  This binding assumes a register-mapped composite clock with multiple
  different sub-types:

    a multiplexer clock with multiple input clock signals or parents, one
    of which can be selected as output, this behaves exactly as [1].
 
    an adjustable clock rate divider, this behaves exactly as [2].
 
    a gating function which can be used to enable and disable the output
    clock, this behaves exactly as [3].
 
  The binding must provide a list of the component clocks that shall be
  merged to this clock. The component clocks shall be of one of the
  "ti,*composite*-clock" types.
 
  [1] Documentation/devicetree/bindings/clock/ti/ti,mux-clock.yaml
  [2] Documentation/devicetree/bindings/clock/ti/ti,divider-clock.yaml
  [3] Documentation/devicetree/bindings/clock/ti/ti,gate-clock.yaml

properties:
  compatible:
    const: ti,composite-clock
 
  "#clock-cells":
    const: 0

  clocks: true

  clock-output-names:
    maxItems: 1

required:
  - compatible
  - "#clock-cells"
  - clocks

additionalProperties: false

examples:
  - |
    bus {
      #address-cells = <1>;
      #size-cells = <0>;
 
      usb_l4_gate_ick: clock-controller@a10 {
        #clock-cells = <0>;
        compatible = "ti,composite-gate-clock";
        clocks = <&l4_ick>;
        ti,bit-shift = <5>;
        reg = <0x0a10>;
      };
 
      usb_l4_div_ick: clock-controller@a40 {
        #clock-cells = <0>;
        compatible = "ti,composite-divider-clock";
        clocks = <&l4_ick>;
        ti,bit-shift = <4>;
        ti,max-div = <1>;
        reg = <0x0a40>;
        ti,index-starts-at-one;
      };
    };
 
    clock-controller {
      #clock-cells = <0>;
      compatible = "ti,composite-clock";
      clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>;
    };