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