xref: /linux/Documentation/devicetree/bindings/clock/ti/ti,gate-clock.yaml (revision 502d45774af09f1c681c754c4b7cdfb5d7f72fd9)
1be7638a0SAndreas Kemnade# SPDX-License-Identifier: GPL-2.0-only
2be7638a0SAndreas Kemnade%YAML 1.2
3be7638a0SAndreas Kemnade---
4be7638a0SAndreas Kemnade$id: http://devicetree.org/schemas/clock/ti/ti,gate-clock.yaml#
5be7638a0SAndreas Kemnade$schema: http://devicetree.org/meta-schemas/core.yaml#
6be7638a0SAndreas Kemnade
7be7638a0SAndreas Kemnadetitle: Texas Instruments gate clock
8be7638a0SAndreas Kemnade
9be7638a0SAndreas Kemnademaintainers:
10be7638a0SAndreas Kemnade  - Tero Kristo <kristo@kernel.org>
11be7638a0SAndreas Kemnade
12be7638a0SAndreas Kemnadedescription: |
13be7638a0SAndreas Kemnade  *Deprecated design pattern: one node per clock*
14be7638a0SAndreas Kemnade
15be7638a0SAndreas Kemnade  This clock is quite much similar to the basic gate-clock [1], however,
16be7638a0SAndreas Kemnade  it supports a number of additional features. If no register
17be7638a0SAndreas Kemnade  is provided for this clock, the code assumes that a clockdomain
18be7638a0SAndreas Kemnade  will be controlled instead and the corresponding hw-ops for
19be7638a0SAndreas Kemnade  that is used.
20be7638a0SAndreas Kemnade
21be7638a0SAndreas Kemnade  [1] Documentation/devicetree/bindings/clock/gpio-gate-clock.yaml
22*3a6deb47SBhargav Joshi  [2] Documentation/devicetree/bindings/clock/ti/ti,clockdomain.yaml
23be7638a0SAndreas Kemnade
24be7638a0SAndreas Kemnadeproperties:
25be7638a0SAndreas Kemnade  compatible:
26be7638a0SAndreas Kemnade    enum:
27be7638a0SAndreas Kemnade      - ti,gate-clock           # basic gate clock
28be7638a0SAndreas Kemnade      - ti,wait-gate-clock      # gate clock which waits until clock is
29be7638a0SAndreas Kemnade                                # active before returning from clk_enable()
30be7638a0SAndreas Kemnade      - ti,dss-gate-clock       # gate clock with DSS specific hardware
31be7638a0SAndreas Kemnade                                # handling
32be7638a0SAndreas Kemnade      - ti,am35xx-gate-clock    # gate clock with AM35xx specific hardware
33be7638a0SAndreas Kemnade                                # handling
34be7638a0SAndreas Kemnade      - ti,clkdm-gate-clock     # clockdomain gate clock, which derives its
35be7638a0SAndreas Kemnade                                # functional clock directly from a
36be7638a0SAndreas Kemnade                                # clockdomain, see [2] how to map
37be7638a0SAndreas Kemnade                                # clockdomains properly
38be7638a0SAndreas Kemnade      - ti,hsdiv-gate-clock     # gate clock with OMAP36xx specific hardware
39be7638a0SAndreas Kemnade                                # handling, required for a hardware errata
40be7638a0SAndreas Kemnade      - ti,composite-gate-clock # composite gate clock, to be part of
41be7638a0SAndreas Kemnade                                # composite clock
42be7638a0SAndreas Kemnade      - ti,composite-no-wait-gate-clock # composite gate clock that does not
43be7638a0SAndreas Kemnade                                        # wait for clock to be active before
44be7638a0SAndreas Kemnade                                        # returning from clk_enable()
45be7638a0SAndreas Kemnade  "#clock-cells":
46be7638a0SAndreas Kemnade    const: 0
47be7638a0SAndreas Kemnade
48be7638a0SAndreas Kemnade  clocks: true
49be7638a0SAndreas Kemnade
50be7638a0SAndreas Kemnade  clock-output-names:
51be7638a0SAndreas Kemnade    maxItems: 1
52be7638a0SAndreas Kemnade
53be7638a0SAndreas Kemnade  reg:
54be7638a0SAndreas Kemnade    maxItems: 1
55be7638a0SAndreas Kemnade
56be7638a0SAndreas Kemnade  ti,bit-shift:
57be7638a0SAndreas Kemnade    $ref: /schemas/types.yaml#/definitions/uint32
58be7638a0SAndreas Kemnade    description:
59be7638a0SAndreas Kemnade      Number of bits to shift the bit-mask
60be7638a0SAndreas Kemnade    maximum: 31
61be7638a0SAndreas Kemnade    default: 0
62be7638a0SAndreas Kemnade
63be7638a0SAndreas Kemnade  ti,set-bit-to-disable:
64be7638a0SAndreas Kemnade    type: boolean
65be7638a0SAndreas Kemnade    description:
66be7638a0SAndreas Kemnade      Inverts default gate programming. Setting the bit
67be7638a0SAndreas Kemnade      gates the clock and clearing the bit ungates the clock.
68be7638a0SAndreas Kemnade
69be7638a0SAndreas Kemnade  ti,set-rate-parent:
70be7638a0SAndreas Kemnade    type: boolean
71be7638a0SAndreas Kemnade    description:
72be7638a0SAndreas Kemnade      clk_set_rate is propagated to parent clock,
73be7638a0SAndreas Kemnade
74be7638a0SAndreas Kemnadeif:
75be7638a0SAndreas Kemnade  properties:
76be7638a0SAndreas Kemnade    compatible:
77be7638a0SAndreas Kemnade      contains:
78be7638a0SAndreas Kemnade        const: ti,clkdm-gate-clock
79be7638a0SAndreas Kemnadethen:
80be7638a0SAndreas Kemnade  properties:
81be7638a0SAndreas Kemnade    reg: false
82be7638a0SAndreas Kemnade  required:
83be7638a0SAndreas Kemnade    - compatible
84be7638a0SAndreas Kemnade    - "#clock-cells"
85be7638a0SAndreas Kemnade    - clocks
86be7638a0SAndreas Kemnadeelse:
87be7638a0SAndreas Kemnade  required:
88be7638a0SAndreas Kemnade    - compatible
89be7638a0SAndreas Kemnade    - "#clock-cells"
90be7638a0SAndreas Kemnade    - clocks
91be7638a0SAndreas Kemnade    - reg
92be7638a0SAndreas Kemnade
93be7638a0SAndreas KemnadeadditionalProperties: false
94be7638a0SAndreas Kemnade
95be7638a0SAndreas Kemnadeexamples:
96be7638a0SAndreas Kemnade  - |
97be7638a0SAndreas Kemnade    bus {
98be7638a0SAndreas Kemnade      #address-cells = <1>;
99be7638a0SAndreas Kemnade      #size-cells = <0>;
100be7638a0SAndreas Kemnade
101be7638a0SAndreas Kemnade      clock-controller@a00 {
102be7638a0SAndreas Kemnade        #clock-cells = <0>;
103be7638a0SAndreas Kemnade        compatible = "ti,gate-clock";
104be7638a0SAndreas Kemnade        clocks = <&core_96m_fck>;
105be7638a0SAndreas Kemnade        reg = <0x0a00>;
106be7638a0SAndreas Kemnade        ti,bit-shift = <25>;
107be7638a0SAndreas Kemnade      };
108be7638a0SAndreas Kemnade
109be7638a0SAndreas Kemnade      clock-controller@d00 {
110be7638a0SAndreas Kemnade        compatible = "ti,hsdiv-gate-clock";
111be7638a0SAndreas Kemnade        reg = <0x0d00>;
112be7638a0SAndreas Kemnade        #clock-cells = <0>;
113be7638a0SAndreas Kemnade        clocks = <&dpll4_m2x2_mul_ck>;
114be7638a0SAndreas Kemnade        ti,bit-shift = <0x1b>;
115be7638a0SAndreas Kemnade        ti,set-bit-to-disable;
116be7638a0SAndreas Kemnade      };
117be7638a0SAndreas Kemnade    };
118be7638a0SAndreas Kemnade
119be7638a0SAndreas Kemnade  - |
120be7638a0SAndreas Kemnade    clock-controller {
121be7638a0SAndreas Kemnade      #clock-cells = <0>;
122be7638a0SAndreas Kemnade      compatible = "ti,clkdm-gate-clock";
123be7638a0SAndreas Kemnade      clocks = <&emu_src_mux_ck>;
124be7638a0SAndreas Kemnade    };
125be7638a0SAndreas Kemnade
126