aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/devicetree')
-rw-r--r--Documentation/devicetree/bindings/clock/ti/apll.txt31
-rw-r--r--Documentation/devicetree/bindings/clock/ti/autoidle.txt39
-rw-r--r--Documentation/devicetree/bindings/clock/ti/clockdomain.txt24
-rw-r--r--Documentation/devicetree/bindings/clock/ti/composite.txt54
-rw-r--r--Documentation/devicetree/bindings/clock/ti/divider.txt114
-rw-r--r--Documentation/devicetree/bindings/clock/ti/dpll.txt75
-rw-r--r--Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt43
-rw-r--r--Documentation/devicetree/bindings/clock/ti/gate.txt85
-rw-r--r--Documentation/devicetree/bindings/clock/ti/interface.txt54
-rw-r--r--Documentation/devicetree/bindings/clock/ti/mux.txt76
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 @@
1Binding for Texas Instruments APLL clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a
6register-mapped APLL with usually two selectable input clocks
7(reference clock and bypass clock), with analog phase locked
8loop logic for multiplying the input clock to a desired output
9clock. This clock also typically supports different operation
10modes (locked, low power stop etc.) APLL mostly behaves like
11a 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
16Required 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
25Examples:
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 @@
1Binding for Texas Instruments autoidle clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a register mapped
6clock which can be put to idle automatically by hardware based on the usage
7and a configuration bit setting. Autoidle clock is never an individual
8clock, it is always a derivative of some basic clock like a gate, divider,
9or fixed-factor.
10
11[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
12
13Required 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
18Examples:
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 @@
1Binding for Texas Instruments clockdomain.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1] in consumer role.
6Every clock on TI SoC belongs to one clockdomain, but software
7only needs this information for specific clocks which require
8their parent clockdomain to be controlled when the clock is
9enabled/disabled. This binding doesn't define a new clock
10binding type, it is used to group existing clock nodes under
11hardware hierarchy.
12
13[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
14
15Required 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
20Examples:
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 @@
1Binding for TI composite clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a
6register-mapped composite clock with multiple different sub-types;
7
8a multiplexer clock with multiple input clock signals or parents, one
9of which can be selected as output, this behaves exactly as [2]
10
11an adjustable clock rate divider, this behaves exactly as [3]
12
13a gating function which can be used to enable and disable the output
14clock, this behaves exactly as [4]
15
16The binding must provide a list of the component clocks that shall be
17merged 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
25Required 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
30Examples:
31
32usb_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
40usb_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
50usb_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 @@
1Binding for TI divider clock
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a
6register-mapped adjustable clock rate divider that does not gate and has
7only one input clock or parent. By default the value programmed into
8the register is one less than the actual divisor value. E.g:
9
10register value actual divisor value
110 1
121 2
132 3
14
15This assumption may be modified by the following optional properties:
16
17ti,index-starts-at-one - valid divisor values start at 1, not the default
18of 0. E.g:
19register value actual divisor value
201 1
212 2
223 3
23
24ti,index-power-of-two - valid divisor values are powers of two. E.g:
25register value actual divisor value
260 1
271 2
282 4
29
30Additionally an array of valid dividers may be supplied like so:
31
32 ti,dividers = <4>, <8>, <0>, <16>;
33
34Which will map the resulting values to a divisor table by their index:
35register value actual divisor value
360 4
371 8
382 <invalid divisor, skipped>
393 16
40
41Any zero value in this array means the corresponding bit-value is invalid
42and must not be used.
43
44The binding must also provide the register to control the divider and
45unless the divider array is provided, min and max dividers. Optionally
46the number of bits to shift that mask, if necessary. If the shift value
47is missing it is the same as supplying a zero shift.
48
49This binding can also optionally provide support to the hardware autoidle
50feature, see [2].
51
52[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
53[2] Documentation/devicetree/bindings/clock/ti/autoidle.txt
54
55Required 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
61Optional 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
79Examples:
80dpll_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
89aess_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
98dpll_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
107ssi_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 @@
1Binding for Texas Instruments DPLL clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a
6register-mapped DPLL with usually two selectable input clocks
7(reference clock and bypass clock), with digital phase locked
8loop logic for multiplying the input clock to a desired output
9clock. This clock also typically supports different operation
10modes (locked, low power stop etc.) This binding has several
11sub-types, which effectively result in slightly different setup
12for the actual DPLL clock.
13
14[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
15
16Required 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
45Optional 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
52Examples:
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 @@
1Binding for TI fixed factor rate clock sources.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1], and also uses the autoidle
6support 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
11Required 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
18Optional 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
25Example:
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 @@
1Binding for Texas Instruments gate clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. This clock is
6quite much similar to the basic gate-clock [2], however,
7it supports a number of additional features. If no register
8is provided for this clock, the code assumes that a clockdomain
9will be controlled instead and the corresponding hw-ops for
10that 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
16Required 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
33Optional 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
39Examples:
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 @@
1Binding for Texas Instruments interface clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. This clock is
6quite much similar to the basic gate-clock [2], however,
7it supports a number of additional features, including
8companion clock finding (match corresponding functional gate
9clock) 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
14Required 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
28Optional properties:
29- ti,bit-shift : bit shift for the bit enabling/disabling the clock (default 0)
30
31Examples:
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 @@
1Binding for TI mux clock.
2
3Binding status: Unstable - ABI compatibility may be broken in the future
4
5This binding uses the common clock binding[1]. It assumes a
6register-mapped multiplexer with multiple input clock signals or
7parents, one of which can be selected as output. This clock does not
8gate or adjust the parent rate via a divider or multiplier.
9
10By default the "clocks" property lists the parents in the same order
11as they are programmed into the regster. E.g:
12
13 clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>;
14
15results in programming the register as follows:
16
17register value selected parent clock
180 foo_clock
191 bar_clock
202 baz_clock
21
22Some clock controller IPs do not allow a value of zero to be programmed
23into the register, instead indexing begins at 1. The optional property
24"index-starts-at-one" modified the scheme as follows:
25
26register value selected clock parent
271 foo_clock
282 bar_clock
293 baz_clock
30
31The binding must provide the register to control the mux. Optionally
32the number of bits to shift the control field in the register can be
33supplied. If the shift value is missing it is the same as supplying
34a zero shift.
35
36[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
37
38Required 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
44Optional 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
52Examples:
53
54sys_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
62abe_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
70mcbsp5_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};