|  | 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 | 
|  |  | 
|  | 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>; | 
|  | }; |