Binding for TI divider clock 
 | 
  
 | 
Binding status: Unstable - ABI compatibility may be broken in the future 
 | 
  
 | 
This binding uses the common clock binding[1].  It assumes a 
 | 
register-mapped adjustable clock rate divider that does not gate and has 
 | 
only one input clock or parent.  By default the value programmed into 
 | 
the register is one less than the actual divisor value.  E.g: 
 | 
  
 | 
register value        actual divisor value 
 | 
0            1 
 | 
1            2 
 | 
2            3 
 | 
  
 | 
This assumption may be modified by the following optional properties: 
 | 
  
 | 
ti,index-starts-at-one - valid divisor values start at 1, not the default 
 | 
of 0.  E.g: 
 | 
register value        actual divisor value 
 | 
1            1 
 | 
2            2 
 | 
3            3 
 | 
  
 | 
ti,index-power-of-two - valid divisor values are powers of two.  E.g: 
 | 
register value        actual divisor value 
 | 
0            1 
 | 
1            2 
 | 
2            4 
 | 
  
 | 
Additionally an array of valid dividers may be supplied like so: 
 | 
  
 | 
    ti,dividers = <4>, <8>, <0>, <16>; 
 | 
  
 | 
Which will map the resulting values to a divisor table by their index: 
 | 
register value        actual divisor value 
 | 
0            4 
 | 
1            8 
 | 
2            <invalid divisor, skipped> 
 | 
3            16 
 | 
  
 | 
Any zero value in this array means the corresponding bit-value is invalid 
 | 
and must not be used. 
 | 
  
 | 
The binding must also provide the register to control the divider and 
 | 
unless the divider array is provided, min and max dividers. Optionally 
 | 
the number of bits to shift that mask, if necessary. If the shift value 
 | 
is missing it is the same as supplying a zero shift. 
 | 
  
 | 
This binding can also optionally provide support to the hardware autoidle 
 | 
feature, see [2]. 
 | 
  
 | 
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt 
 | 
[2] Documentation/devicetree/bindings/clock/ti/autoidle.txt 
 | 
  
 | 
Required properties: 
 | 
- compatible : shall be "ti,divider-clock" or "ti,composite-divider-clock". 
 | 
- #clock-cells : from common clock binding; shall be set to 0. 
 | 
- clocks : link to phandle of parent clock 
 | 
- reg : offset for register controlling adjustable divider 
 | 
  
 | 
Optional properties: 
 | 
- clock-output-names : from common clock binding. 
 | 
- ti,dividers : array of integers defining divisors 
 | 
- ti,bit-shift : number of bits to shift the divider value, defaults to 0 
 | 
- ti,min-div : min divisor for dividing the input clock rate, only 
 | 
  needed if the first divisor is offset from the default value (1) 
 | 
- ti,max-div : max divisor for dividing the input clock rate, only needed 
 | 
  if ti,dividers is not defined. 
 | 
- ti,index-starts-at-one : valid divisor programming starts at 1, not zero, 
 | 
  only valid if ti,dividers is not defined. 
 | 
- ti,index-power-of-two : valid divisor programming must be a power of two, 
 | 
  only valid if ti,dividers is not defined. 
 | 
- ti,autoidle-shift : bit shift of the autoidle enable bit for the clock, 
 | 
  see [2] 
 | 
- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0, 
 | 
  see [2] 
 | 
- ti,set-rate-parent : clk_set_rate is propagated to parent 
 | 
- ti,latch-bit : latch the divider value to HW, only needed if the register 
 | 
  access requires this. As an example dra76x DPLL_GMAC H14 divider implements 
 | 
  such behavior. 
 | 
  
 | 
Examples: 
 | 
dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 { 
 | 
    #clock-cells = <0>; 
 | 
    compatible = "ti,divider-clock"; 
 | 
    clocks = <&dpll_usb_ck>; 
 | 
    ti,max-div = <127>; 
 | 
    reg = <0x190>; 
 | 
    ti,index-starts-at-one; 
 | 
}; 
 | 
  
 | 
aess_fclk: aess_fclk@4a004528 { 
 | 
    #clock-cells = <0>; 
 | 
    compatible = "ti,divider-clock"; 
 | 
    clocks = <&abe_clk>; 
 | 
    ti,bit-shift = <24>; 
 | 
    reg = <0x528>; 
 | 
    ti,max-div = <2>; 
 | 
}; 
 | 
  
 | 
dpll_core_m3x2_div_ck: dpll_core_m3x2_div_ck { 
 | 
    #clock-cells = <0>; 
 | 
    compatible = "ti,composite-divider-clock"; 
 | 
    clocks = <&dpll_core_x2_ck>; 
 | 
    ti,max-div = <31>; 
 | 
    reg = <0x0134>; 
 | 
    ti,index-starts-at-one; 
 | 
}; 
 | 
  
 | 
ssi_ssr_div_fck_3430es2: ssi_ssr_div_fck_3430es2 { 
 | 
    #clock-cells = <0>; 
 | 
    compatible = "ti,composite-divider-clock"; 
 | 
    clocks = <&corex2_fck>; 
 | 
    ti,bit-shift = <8>; 
 | 
    reg = <0x0a40>; 
 | 
    ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>; 
 | 
}; 
 |