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