diff options
Diffstat (limited to 'Documentation/devicetree')
10 files changed, 595 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/clock/ti/apll.txt b/Documentation/devicetree/bindings/clock/ti/apll.txt new file mode 100644 index 000000000000..7faf5a68b3be --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/apll.txt | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | Binding for Texas Instruments APLL clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped APLL with usually two selectable input clocks | ||
| 7 | (reference clock and bypass clock), with analog phase locked | ||
| 8 | loop logic for multiplying the input clock to a desired output | ||
| 9 | clock. This clock also typically supports different operation | ||
| 10 | modes (locked, low power stop etc.) APLL mostly behaves like | ||
| 11 | a subtype of a DPLL [2], although a simplified one at that. | ||
| 12 | |||
| 13 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 14 | [2] Documentation/devicetree/bindings/clock/ti/dpll.txt | ||
| 15 | |||
| 16 | Required properties: | ||
| 17 | - compatible : shall be "ti,dra7-apll-clock" | ||
| 18 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 19 | - clocks : link phandles of parent clocks (clk-ref and clk-bypass) | ||
| 20 | - reg : address and length of the register set for controlling the APLL. | ||
| 21 | It contains the information of registers in the following order: | ||
| 22 | "control" - contains the control register base address | ||
| 23 | "idlest" - contains the idlest register base address | ||
| 24 | |||
| 25 | Examples: | ||
| 26 | apll_pcie_ck: apll_pcie_ck@4a008200 { | ||
| 27 | #clock-cells = <0>; | ||
| 28 | clocks = <&apll_pcie_in_clk_mux>, <&dpll_pcie_ref_ck>; | ||
| 29 | reg = <0x4a00821c 0x4>, <0x4a008220 0x4>; | ||
| 30 | compatible = "ti,dra7-apll-clock"; | ||
| 31 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/autoidle.txt b/Documentation/devicetree/bindings/clock/ti/autoidle.txt new file mode 100644 index 000000000000..7c735dde9fe9 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/autoidle.txt | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | Binding for Texas Instruments autoidle clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a register mapped | ||
| 6 | clock which can be put to idle automatically by hardware based on the usage | ||
| 7 | and a configuration bit setting. Autoidle clock is never an individual | ||
| 8 | clock, it is always a derivative of some basic clock like a gate, divider, | ||
| 9 | or fixed-factor. | ||
| 10 | |||
| 11 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 12 | |||
| 13 | Required properties: | ||
| 14 | - reg : offset for the register controlling the autoidle | ||
| 15 | - ti,autoidle-shift : bit shift of the autoidle enable bit | ||
| 16 | - ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0 | ||
| 17 | |||
| 18 | Examples: | ||
| 19 | dpll_core_m4_ck: dpll_core_m4_ck { | ||
| 20 | #clock-cells = <0>; | ||
| 21 | compatible = "ti,divider-clock"; | ||
| 22 | clocks = <&dpll_core_x2_ck>; | ||
| 23 | ti,max-div = <31>; | ||
| 24 | ti,autoidle-shift = <8>; | ||
| 25 | reg = <0x2d38>; | ||
| 26 | ti,index-starts-at-one; | ||
| 27 | ti,invert-autoidle-bit; | ||
| 28 | }; | ||
| 29 | |||
| 30 | dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { | ||
| 31 | #clock-cells = <0>; | ||
| 32 | compatible = "ti,fixed-factor-clock"; | ||
| 33 | clocks = <&dpll_usb_ck>; | ||
| 34 | ti,clock-div = <1>; | ||
| 35 | ti,autoidle-shift = <8>; | ||
| 36 | reg = <0x01b4>; | ||
| 37 | ti,clock-mult = <1>; | ||
| 38 | ti,invert-autoidle-bit; | ||
| 39 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/clockdomain.txt b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt new file mode 100644 index 000000000000..cb76b3f2b341 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | Binding for Texas Instruments clockdomain. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1] in consumer role. | ||
| 6 | Every clock on TI SoC belongs to one clockdomain, but software | ||
| 7 | only needs this information for specific clocks which require | ||
| 8 | their parent clockdomain to be controlled when the clock is | ||
| 9 | enabled/disabled. This binding doesn't define a new clock | ||
| 10 | binding type, it is used to group existing clock nodes under | ||
| 11 | hardware hierarchy. | ||
| 12 | |||
| 13 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 14 | |||
| 15 | Required properties: | ||
| 16 | - compatible : shall be "ti,clockdomain" | ||
| 17 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 18 | - clocks : link phandles of clocks within this domain | ||
| 19 | |||
| 20 | Examples: | ||
| 21 | dss_clkdm: dss_clkdm { | ||
| 22 | compatible = "ti,clockdomain"; | ||
| 23 | clocks = <&dss1_alwon_fck_3430es2>, <&dss_ick_3430es2>; | ||
| 24 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/composite.txt b/Documentation/devicetree/bindings/clock/ti/composite.txt new file mode 100644 index 000000000000..5f43c4706b09 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/composite.txt | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | Binding for TI composite clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped composite clock with multiple different sub-types; | ||
| 7 | |||
| 8 | a multiplexer clock with multiple input clock signals or parents, one | ||
| 9 | of which can be selected as output, this behaves exactly as [2] | ||
| 10 | |||
| 11 | an adjustable clock rate divider, this behaves exactly as [3] | ||
| 12 | |||
| 13 | a gating function which can be used to enable and disable the output | ||
| 14 | clock, this behaves exactly as [4] | ||
| 15 | |||
| 16 | The binding must provide a list of the component clocks that shall be | ||
| 17 | merged to this clock. The component clocks shall be of one of the | ||
| 18 | "ti,*composite*-clock" types. | ||
| 19 | |||
| 20 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 21 | [2] Documentation/devicetree/bindings/clock/ti/mux.txt | ||
| 22 | [3] Documentation/devicetree/bindings/clock/ti/divider.txt | ||
| 23 | [4] Documentation/devicetree/bindings/clock/ti/gate.txt | ||
| 24 | |||
| 25 | Required properties: | ||
| 26 | - compatible : shall be: "ti,composite-clock" | ||
| 27 | - clocks : link phandles of component clocks | ||
| 28 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 29 | |||
| 30 | Examples: | ||
| 31 | |||
| 32 | usb_l4_gate_ick: usb_l4_gate_ick { | ||
| 33 | #clock-cells = <0>; | ||
| 34 | compatible = "ti,composite-interface-clock"; | ||
| 35 | clocks = <&l4_ick>; | ||
| 36 | ti,bit-shift = <5>; | ||
| 37 | reg = <0x0a10>; | ||
| 38 | }; | ||
| 39 | |||
| 40 | usb_l4_div_ick: usb_l4_div_ick { | ||
| 41 | #clock-cells = <0>; | ||
| 42 | compatible = "ti,composite-divider-clock"; | ||
| 43 | clocks = <&l4_ick>; | ||
| 44 | ti,bit-shift = <4>; | ||
| 45 | ti,max-div = <1>; | ||
| 46 | reg = <0x0a40>; | ||
| 47 | ti,index-starts-at-one; | ||
| 48 | }; | ||
| 49 | |||
| 50 | usb_l4_ick: usb_l4_ick { | ||
| 51 | #clock-cells = <0>; | ||
| 52 | compatible = "ti,composite-clock"; | ||
| 53 | clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>; | ||
| 54 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/divider.txt b/Documentation/devicetree/bindings/clock/ti/divider.txt new file mode 100644 index 000000000000..35a6f5c7e5c2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/divider.txt | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | Binding for TI divider clock | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped adjustable clock rate divider that does not gate and has | ||
| 7 | only one input clock or parent. By default the value programmed into | ||
| 8 | the register is one less than the actual divisor value. E.g: | ||
| 9 | |||
| 10 | register value actual divisor value | ||
| 11 | 0 1 | ||
| 12 | 1 2 | ||
| 13 | 2 3 | ||
| 14 | |||
| 15 | This assumption may be modified by the following optional properties: | ||
| 16 | |||
| 17 | ti,index-starts-at-one - valid divisor values start at 1, not the default | ||
| 18 | of 0. E.g: | ||
| 19 | register value actual divisor value | ||
| 20 | 1 1 | ||
| 21 | 2 2 | ||
| 22 | 3 3 | ||
| 23 | |||
| 24 | ti,index-power-of-two - valid divisor values are powers of two. E.g: | ||
| 25 | register value actual divisor value | ||
| 26 | 0 1 | ||
| 27 | 1 2 | ||
| 28 | 2 4 | ||
| 29 | |||
| 30 | Additionally an array of valid dividers may be supplied like so: | ||
| 31 | |||
| 32 | ti,dividers = <4>, <8>, <0>, <16>; | ||
| 33 | |||
| 34 | Which will map the resulting values to a divisor table by their index: | ||
| 35 | register value actual divisor value | ||
| 36 | 0 4 | ||
| 37 | 1 8 | ||
| 38 | 2 <invalid divisor, skipped> | ||
| 39 | 3 16 | ||
| 40 | |||
| 41 | Any zero value in this array means the corresponding bit-value is invalid | ||
| 42 | and must not be used. | ||
| 43 | |||
| 44 | The binding must also provide the register to control the divider and | ||
| 45 | unless the divider array is provided, min and max dividers. Optionally | ||
| 46 | the number of bits to shift that mask, if necessary. If the shift value | ||
| 47 | is missing it is the same as supplying a zero shift. | ||
| 48 | |||
| 49 | This binding can also optionally provide support to the hardware autoidle | ||
| 50 | feature, see [2]. | ||
| 51 | |||
| 52 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 53 | [2] Documentation/devicetree/bindings/clock/ti/autoidle.txt | ||
| 54 | |||
| 55 | Required properties: | ||
| 56 | - compatible : shall be "ti,divider-clock" or "ti,composite-divider-clock". | ||
| 57 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 58 | - clocks : link to phandle of parent clock | ||
| 59 | - reg : offset for register controlling adjustable divider | ||
| 60 | |||
| 61 | Optional properties: | ||
| 62 | - clock-output-names : from common clock binding. | ||
| 63 | - ti,dividers : array of integers defining divisors | ||
| 64 | - ti,bit-shift : number of bits to shift the divider value, defaults to 0 | ||
| 65 | - ti,min-div : min divisor for dividing the input clock rate, only | ||
| 66 | needed if the first divisor is offset from the default value (1) | ||
| 67 | - ti,max-div : max divisor for dividing the input clock rate, only needed | ||
| 68 | if ti,dividers is not defined. | ||
| 69 | - ti,index-starts-at-one : valid divisor programming starts at 1, not zero, | ||
| 70 | only valid if ti,dividers is not defined. | ||
| 71 | - ti,index-power-of-two : valid divisor programming must be a power of two, | ||
| 72 | only valid if ti,dividers is not defined. | ||
| 73 | - ti,autoidle-shift : bit shift of the autoidle enable bit for the clock, | ||
| 74 | see [2] | ||
| 75 | - ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0, | ||
| 76 | see [2] | ||
| 77 | - ti,set-rate-parent : clk_set_rate is propagated to parent | ||
| 78 | |||
| 79 | Examples: | ||
| 80 | dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 { | ||
| 81 | #clock-cells = <0>; | ||
| 82 | compatible = "ti,divider-clock"; | ||
| 83 | clocks = <&dpll_usb_ck>; | ||
| 84 | ti,max-div = <127>; | ||
| 85 | reg = <0x190>; | ||
| 86 | ti,index-starts-at-one; | ||
| 87 | }; | ||
| 88 | |||
| 89 | aess_fclk: aess_fclk@4a004528 { | ||
| 90 | #clock-cells = <0>; | ||
| 91 | compatible = "ti,divider-clock"; | ||
| 92 | clocks = <&abe_clk>; | ||
| 93 | ti,bit-shift = <24>; | ||
| 94 | reg = <0x528>; | ||
| 95 | ti,max-div = <2>; | ||
| 96 | }; | ||
| 97 | |||
| 98 | dpll_core_m3x2_div_ck: dpll_core_m3x2_div_ck { | ||
| 99 | #clock-cells = <0>; | ||
| 100 | compatible = "ti,composite-divider-clock"; | ||
| 101 | clocks = <&dpll_core_x2_ck>; | ||
| 102 | ti,max-div = <31>; | ||
| 103 | reg = <0x0134>; | ||
| 104 | ti,index-starts-at-one; | ||
| 105 | }; | ||
| 106 | |||
| 107 | ssi_ssr_div_fck_3430es2: ssi_ssr_div_fck_3430es2 { | ||
| 108 | #clock-cells = <0>; | ||
| 109 | compatible = "ti,composite-divider-clock"; | ||
| 110 | clocks = <&corex2_fck>; | ||
| 111 | ti,bit-shift = <8>; | ||
| 112 | reg = <0x0a40>; | ||
| 113 | ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>; | ||
| 114 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/dpll.txt b/Documentation/devicetree/bindings/clock/ti/dpll.txt new file mode 100644 index 000000000000..30bfdb7c9f18 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/dpll.txt | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | Binding for Texas Instruments DPLL clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped DPLL with usually two selectable input clocks | ||
| 7 | (reference clock and bypass clock), with digital phase locked | ||
| 8 | loop logic for multiplying the input clock to a desired output | ||
| 9 | clock. This clock also typically supports different operation | ||
| 10 | modes (locked, low power stop etc.) This binding has several | ||
| 11 | sub-types, which effectively result in slightly different setup | ||
| 12 | for the actual DPLL clock. | ||
| 13 | |||
| 14 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 15 | |||
| 16 | Required properties: | ||
| 17 | - compatible : shall be one of: | ||
| 18 | "ti,omap3-dpll-clock", | ||
| 19 | "ti,omap3-dpll-core-clock", | ||
| 20 | "ti,omap3-dpll-per-clock", | ||
| 21 | "ti,omap3-dpll-per-j-type-clock", | ||
| 22 | "ti,omap4-dpll-clock", | ||
| 23 | "ti,omap4-dpll-x2-clock", | ||
| 24 | "ti,omap4-dpll-core-clock", | ||
| 25 | "ti,omap4-dpll-m4xen-clock", | ||
| 26 | "ti,omap4-dpll-j-type-clock", | ||
| 27 | "ti,am3-dpll-no-gate-clock", | ||
| 28 | "ti,am3-dpll-j-type-clock", | ||
| 29 | "ti,am3-dpll-no-gate-j-type-clock", | ||
| 30 | "ti,am3-dpll-clock", | ||
| 31 | "ti,am3-dpll-core-clock", | ||
| 32 | "ti,am3-dpll-x2-clock", | ||
| 33 | |||
| 34 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 35 | - clocks : link phandles of parent clocks, first entry lists reference clock | ||
| 36 | and second entry bypass clock | ||
| 37 | - reg : offsets for the register set for controlling the DPLL. | ||
| 38 | Registers are listed in following order: | ||
| 39 | "control" - contains the control register base address | ||
| 40 | "idlest" - contains the idle status register base address | ||
| 41 | "mult-div1" - contains the multiplier / divider register base address | ||
| 42 | "autoidle" - contains the autoidle register base address (optional) | ||
| 43 | ti,am3-* dpll types do not have autoidle register | ||
| 44 | |||
| 45 | Optional properties: | ||
| 46 | - DPLL mode setting - defining any one or more of the following overrides | ||
| 47 | default setting. | ||
| 48 | - ti,low-power-stop : DPLL supports low power stop mode, gating output | ||
| 49 | - ti,low-power-bypass : DPLL output matches rate of parent bypass clock | ||
| 50 | - ti,lock : DPLL locks in programmed rate | ||
| 51 | |||
| 52 | Examples: | ||
| 53 | dpll_core_ck: dpll_core_ck@44e00490 { | ||
| 54 | #clock-cells = <0>; | ||
| 55 | compatible = "ti,omap4-dpll-core-clock"; | ||
| 56 | clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; | ||
| 57 | reg = <0x490>, <0x45c>, <0x488>, <0x468>; | ||
| 58 | }; | ||
| 59 | |||
| 60 | dpll2_ck: dpll2_ck@48004004 { | ||
| 61 | #clock-cells = <0>; | ||
| 62 | compatible = "ti,omap3-dpll-clock"; | ||
| 63 | clocks = <&sys_ck>, <&dpll2_fck>; | ||
| 64 | ti,low-power-stop; | ||
| 65 | ti,low-power-bypass; | ||
| 66 | ti,lock; | ||
| 67 | reg = <0x4>, <0x24>, <0x34>, <0x40>; | ||
| 68 | }; | ||
| 69 | |||
| 70 | dpll_core_ck: dpll_core_ck@44e00490 { | ||
| 71 | #clock-cells = <0>; | ||
| 72 | compatible = "ti,am3-dpll-core-clock"; | ||
| 73 | clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; | ||
| 74 | reg = <0x90>, <0x5c>, <0x68>; | ||
| 75 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt new file mode 100644 index 000000000000..662b36d53bf0 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | Binding for TI fixed factor rate clock sources. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1], and also uses the autoidle | ||
| 6 | support from TI autoidle clock [2]. | ||
| 7 | |||
| 8 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 9 | [2] Documentation/devicetree/bindings/clock/ti/autoidle.txt | ||
| 10 | |||
| 11 | Required properties: | ||
| 12 | - compatible : shall be "ti,fixed-factor-clock". | ||
| 13 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 14 | - ti,clock-div: fixed divider. | ||
| 15 | - ti,clock-mult: fixed multiplier. | ||
| 16 | - clocks: parent clock. | ||
| 17 | |||
| 18 | Optional properties: | ||
| 19 | - ti,autoidle-shift: bit shift of the autoidle enable bit for the clock, | ||
| 20 | see [2] | ||
| 21 | - reg: offset for the autoidle register of this clock, see [2] | ||
| 22 | - ti,invert-autoidle-bit: autoidle is enabled by setting the bit to 0, see [2] | ||
| 23 | - ti,set-rate-parent: clk_set_rate is propagated to parent | ||
| 24 | |||
| 25 | Example: | ||
| 26 | clock { | ||
| 27 | compatible = "ti,fixed-factor-clock"; | ||
| 28 | clocks = <&parentclk>; | ||
| 29 | #clock-cells = <0>; | ||
| 30 | ti,clock-div = <2>; | ||
| 31 | ti,clock-mult = <1>; | ||
| 32 | }; | ||
| 33 | |||
| 34 | dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { | ||
| 35 | #clock-cells = <0>; | ||
| 36 | compatible = "ti,fixed-factor-clock"; | ||
| 37 | clocks = <&dpll_usb_ck>; | ||
| 38 | ti,clock-div = <1>; | ||
| 39 | ti,autoidle-shift = <8>; | ||
| 40 | reg = <0x01b4>; | ||
| 41 | ti,clock-mult = <1>; | ||
| 42 | ti,invert-autoidle-bit; | ||
| 43 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/gate.txt b/Documentation/devicetree/bindings/clock/ti/gate.txt new file mode 100644 index 000000000000..125281aaa4ca --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/gate.txt | |||
| @@ -0,0 +1,85 @@ | |||
| 1 | Binding for Texas Instruments gate clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. This clock is | ||
| 6 | quite much similar to the basic gate-clock [2], however, | ||
| 7 | it supports a number of additional features. If no register | ||
| 8 | is provided for this clock, the code assumes that a clockdomain | ||
| 9 | will be controlled instead and the corresponding hw-ops for | ||
| 10 | that is used. | ||
| 11 | |||
| 12 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 13 | [2] Documentation/devicetree/bindings/clock/gate-clock.txt | ||
| 14 | [3] Documentation/devicetree/bindings/clock/ti/clockdomain.txt | ||
| 15 | |||
| 16 | Required properties: | ||
| 17 | - compatible : shall be one of: | ||
| 18 | "ti,gate-clock" - basic gate clock | ||
| 19 | "ti,wait-gate-clock" - gate clock which waits until clock is active before | ||
| 20 | returning from clk_enable() | ||
| 21 | "ti,dss-gate-clock" - gate clock with DSS specific hardware handling | ||
| 22 | "ti,am35xx-gate-clock" - gate clock with AM35xx specific hardware handling | ||
| 23 | "ti,clkdm-gate-clock" - clockdomain gate clock, which derives its functional | ||
| 24 | clock directly from a clockdomain, see [3] how | ||
| 25 | to map clockdomains properly | ||
| 26 | "ti,hsdiv-gate-clock" - gate clock with OMAP36xx specific hardware handling, | ||
| 27 | required for a hardware errata | ||
| 28 | - #clock-cells : from common clock binding; shall be set to 0 | ||
| 29 | - clocks : link to phandle of parent clock | ||
| 30 | - reg : offset for register controlling adjustable gate, not needed for | ||
| 31 | ti,clkdm-gate-clock type | ||
| 32 | |||
| 33 | Optional properties: | ||
| 34 | - ti,bit-shift : bit shift for programming the clock gate, invalid for | ||
| 35 | ti,clkdm-gate-clock type | ||
| 36 | - ti,set-bit-to-disable : inverts default gate programming. Setting the bit | ||
| 37 | gates the clock and clearing the bit ungates the clock. | ||
| 38 | |||
| 39 | Examples: | ||
| 40 | mmchs2_fck: mmchs2_fck@48004a00 { | ||
| 41 | #clock-cells = <0>; | ||
| 42 | compatible = "ti,gate-clock"; | ||
| 43 | clocks = <&core_96m_fck>; | ||
| 44 | reg = <0x48004a00 0x4>; | ||
| 45 | ti,bit-shift = <25>; | ||
| 46 | }; | ||
| 47 | |||
| 48 | uart4_fck_am35xx: uart4_fck_am35xx { | ||
| 49 | #clock-cells = <0>; | ||
| 50 | compatible = "ti,wait-gate-clock"; | ||
| 51 | clocks = <&core_48m_fck>; | ||
| 52 | reg = <0x0a00>; | ||
| 53 | ti,bit-shift = <23>; | ||
| 54 | }; | ||
| 55 | |||
| 56 | dss1_alwon_fck_3430es2: dss1_alwon_fck_3430es2@48004e00 { | ||
| 57 | #clock-cells = <0>; | ||
| 58 | compatible = "ti,dss-gate-clock"; | ||
| 59 | clocks = <&dpll4_m4x2_ck>; | ||
| 60 | reg = <0x48004e00 0x4>; | ||
| 61 | ti,bit-shift = <0>; | ||
| 62 | }; | ||
| 63 | |||
| 64 | emac_ick: emac_ick@4800259c { | ||
| 65 | #clock-cells = <0>; | ||
| 66 | compatible = "ti,am35xx-gate-clock"; | ||
| 67 | clocks = <&ipss_ick>; | ||
| 68 | reg = <0x4800259c 0x4>; | ||
| 69 | ti,bit-shift = <1>; | ||
| 70 | }; | ||
| 71 | |||
| 72 | emu_src_ck: emu_src_ck { | ||
| 73 | #clock-cells = <0>; | ||
| 74 | compatible = "ti,clkdm-gate-clock"; | ||
| 75 | clocks = <&emu_src_mux_ck>; | ||
| 76 | }; | ||
| 77 | |||
| 78 | dpll4_m2x2_ck: dpll4_m2x2_ck@48004d00 { | ||
| 79 | #clock-cells = <0>; | ||
| 80 | compatible = "ti,hsdiv-gate-clock"; | ||
| 81 | clocks = <&dpll4_m2x2_mul_ck>; | ||
| 82 | ti,bit-shift = <0x1b>; | ||
| 83 | reg = <0x48004d00 0x4>; | ||
| 84 | ti,set-bit-to-disable; | ||
| 85 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/interface.txt b/Documentation/devicetree/bindings/clock/ti/interface.txt new file mode 100644 index 000000000000..064e8caccac3 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/interface.txt | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | Binding for Texas Instruments interface clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. This clock is | ||
| 6 | quite much similar to the basic gate-clock [2], however, | ||
| 7 | it supports a number of additional features, including | ||
| 8 | companion clock finding (match corresponding functional gate | ||
| 9 | clock) and hardware autoidle enable / disable. | ||
| 10 | |||
| 11 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 12 | [2] Documentation/devicetree/bindings/clock/gate-clock.txt | ||
| 13 | |||
| 14 | Required properties: | ||
| 15 | - compatible : shall be one of: | ||
| 16 | "ti,omap3-interface-clock" - basic OMAP3 interface clock | ||
| 17 | "ti,omap3-no-wait-interface-clock" - interface clock which has no hardware | ||
| 18 | capability for waiting clock to be ready | ||
| 19 | "ti,omap3-hsotgusb-interface-clock" - interface clock with USB specific HW | ||
| 20 | handling | ||
| 21 | "ti,omap3-dss-interface-clock" - interface clock with DSS specific HW handling | ||
| 22 | "ti,omap3-ssi-interface-clock" - interface clock with SSI specific HW handling | ||
| 23 | "ti,am35xx-interface-clock" - interface clock with AM35xx specific HW handling | ||
| 24 | - #clock-cells : from common clock binding; shall be set to 0 | ||
| 25 | - clocks : link to phandle of parent clock | ||
| 26 | - reg : base address for the control register | ||
| 27 | |||
| 28 | Optional properties: | ||
| 29 | - ti,bit-shift : bit shift for the bit enabling/disabling the clock (default 0) | ||
| 30 | |||
| 31 | Examples: | ||
| 32 | aes1_ick: aes1_ick@48004a14 { | ||
| 33 | #clock-cells = <0>; | ||
| 34 | compatible = "ti,omap3-interface-clock"; | ||
| 35 | clocks = <&security_l4_ick2>; | ||
| 36 | reg = <0x48004a14 0x4>; | ||
| 37 | ti,bit-shift = <3>; | ||
| 38 | }; | ||
| 39 | |||
| 40 | cam_ick: cam_ick@48004f10 { | ||
| 41 | #clock-cells = <0>; | ||
| 42 | compatible = "ti,omap3-no-wait-interface-clock"; | ||
| 43 | clocks = <&l4_ick>; | ||
| 44 | reg = <0x48004f10 0x4>; | ||
| 45 | ti,bit-shift = <0>; | ||
| 46 | }; | ||
| 47 | |||
| 48 | ssi_ick_3430es2: ssi_ick_3430es2@48004a10 { | ||
| 49 | #clock-cells = <0>; | ||
| 50 | compatible = "ti,omap3-ssi-interface-clock"; | ||
| 51 | clocks = <&ssi_l4_ick>; | ||
| 52 | reg = <0x48004a10 0x4>; | ||
| 53 | ti,bit-shift = <0>; | ||
| 54 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/ti/mux.txt b/Documentation/devicetree/bindings/clock/ti/mux.txt new file mode 100644 index 000000000000..2d0d170f8001 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/mux.txt | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | Binding for TI mux clock. | ||
| 2 | |||
| 3 | Binding status: Unstable - ABI compatibility may be broken in the future | ||
| 4 | |||
| 5 | This binding uses the common clock binding[1]. It assumes a | ||
| 6 | register-mapped multiplexer with multiple input clock signals or | ||
| 7 | parents, one of which can be selected as output. This clock does not | ||
| 8 | gate or adjust the parent rate via a divider or multiplier. | ||
| 9 | |||
| 10 | By default the "clocks" property lists the parents in the same order | ||
| 11 | as they are programmed into the regster. E.g: | ||
| 12 | |||
| 13 | clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>; | ||
| 14 | |||
| 15 | results in programming the register as follows: | ||
| 16 | |||
| 17 | register value selected parent clock | ||
| 18 | 0 foo_clock | ||
| 19 | 1 bar_clock | ||
| 20 | 2 baz_clock | ||
| 21 | |||
| 22 | Some clock controller IPs do not allow a value of zero to be programmed | ||
| 23 | into the register, instead indexing begins at 1. The optional property | ||
| 24 | "index-starts-at-one" modified the scheme as follows: | ||
| 25 | |||
| 26 | register value selected clock parent | ||
| 27 | 1 foo_clock | ||
| 28 | 2 bar_clock | ||
| 29 | 3 baz_clock | ||
| 30 | |||
| 31 | The binding must provide the register to control the mux. Optionally | ||
| 32 | the number of bits to shift the control field in the register can be | ||
| 33 | supplied. If the shift value is missing it is the same as supplying | ||
| 34 | a zero shift. | ||
| 35 | |||
| 36 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
| 37 | |||
| 38 | Required properties: | ||
| 39 | - compatible : shall be "ti,mux-clock" or "ti,composite-mux-clock". | ||
| 40 | - #clock-cells : from common clock binding; shall be set to 0. | ||
| 41 | - clocks : link phandles of parent clocks | ||
| 42 | - reg : register offset for register controlling adjustable mux | ||
| 43 | |||
| 44 | Optional properties: | ||
| 45 | - ti,bit-shift : number of bits to shift the bit-mask, defaults to | ||
| 46 | 0 if not present | ||
| 47 | - ti,index-starts-at-one : valid input select programming starts at 1, not | ||
| 48 | zero | ||
| 49 | - ti,set-rate-parent : clk_set_rate is propagated to parent clock, | ||
| 50 | not supported by the composite-mux-clock subtype | ||
| 51 | |||
| 52 | Examples: | ||
| 53 | |||
| 54 | sys_clkin_ck: sys_clkin_ck@4a306110 { | ||
| 55 | #clock-cells = <0>; | ||
| 56 | compatible = "ti,mux-clock"; | ||
| 57 | clocks = <&virt_12000000_ck>, <&virt_13000000_ck>, <&virt_16800000_ck>, <&virt_19200000_ck>, <&virt_26000000_ck>, <&virt_27000000_ck>, <&virt_38400000_ck>; | ||
| 58 | reg = <0x0110>; | ||
| 59 | ti,index-starts-at-one; | ||
| 60 | }; | ||
| 61 | |||
| 62 | abe_dpll_bypass_clk_mux_ck: abe_dpll_bypass_clk_mux_ck@4a306108 { | ||
| 63 | #clock-cells = <0>; | ||
| 64 | compatible = "ti,mux-clock"; | ||
| 65 | clocks = <&sys_clkin_ck>, <&sys_32k_ck>; | ||
| 66 | ti,bit-shift = <24>; | ||
| 67 | reg = <0x0108>; | ||
| 68 | }; | ||
| 69 | |||
| 70 | mcbsp5_mux_fck: mcbsp5_mux_fck { | ||
| 71 | #clock-cells = <0>; | ||
| 72 | compatible = "ti,composite-mux-clock"; | ||
| 73 | clocks = <&core_96m_fck>, <&mcbsp_clks>; | ||
| 74 | ti,bit-shift = <4>; | ||
| 75 | reg = <0x02d8>; | ||
| 76 | }; | ||
