xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/clock/st/st,flexgen.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunBinding for a type of flexgen structure found on certain
2*4882a593SmuzhiyunSTMicroelectronics consumer electronics SoC devices
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunThis structure includes:
5*4882a593Smuzhiyun- a clock cross bar (represented by a mux element)
6*4882a593Smuzhiyun- a pre and final dividers (represented by a divider and gate elements)
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunFlexgen structure is a part of Clockgen[1].
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunPlease find an example below:
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun    Clockgen block diagram
13*4882a593Smuzhiyun    -------------------------------------------------------------------
14*4882a593Smuzhiyun   |                     Flexgen structure                             |
15*4882a593Smuzhiyun   |                  ---------------------------------------------    |
16*4882a593Smuzhiyun   |                 |    -------       --------       --------    |   |
17*4882a593Smuzhiyunclk_sysin            |   |       |     |        |     |        |   |   |
18*4882a593Smuzhiyun---|-----------------|-->|       |     |        |     |        |   |   |
19*4882a593Smuzhiyun   | |               |   |       |     |        |     |        |   |   |
20*4882a593Smuzhiyun   | |   -------     |   |       |     |Pre     |     |Final   |   |   |
21*4882a593Smuzhiyun   | |  |PLL0   |    |   |       |     |Dividers|     |Dividers|   |   |
22*4882a593Smuzhiyun   | |->|       |    |   |       |     |  x32   |     |  x32   |   |   |
23*4882a593Smuzhiyun   | |  |  odf_0|----|-->|       |     |        |     |        |   |   |
24*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
25*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
26*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
27*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
28*4882a593Smuzhiyun   | |   -------     |   |       |     |        |     |        |   |   |
29*4882a593Smuzhiyun   | |               |   |       |     |        |     |        |   |   |
30*4882a593Smuzhiyun   | |   -------     |   | Clock |     |        |     |        |   |   |
31*4882a593Smuzhiyun   | |  |PLL1   |    |   |       |     |        |     |        |   |   |
32*4882a593Smuzhiyun   | |->|       |    |   | Cross |     |        |     |        |   |   |
33*4882a593Smuzhiyun   | |  |  odf_0|----|-->|       |     |        |     |        | CLK_DIV[31:0]
34*4882a593Smuzhiyun   | |  |       |    |   | Bar   |====>|        |====>|        |===|=========>
35*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
36*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
37*4882a593Smuzhiyun   | |  |       |    |   |       |     |        |     |        |   |   |
38*4882a593Smuzhiyun   | |   -------     |   |       |     |        |     |        |   |   |
39*4882a593Smuzhiyun   | |               |   |       |     |        |     |        |   |   |
40*4882a593Smuzhiyun   | |   -------     |   |       |     |        |     |        |   |   |
41*4882a593Smuzhiyun   | |  |QUADFS |    |   |       |     |        |     |        |   |   |
42*4882a593Smuzhiyun   | |->|    ch0|----|-->|       |     |        |     |        |   |   |
43*4882a593Smuzhiyun   |    |       |    |   |       |     |        |     |        |   |   |
44*4882a593Smuzhiyun   |    |    ch1|----|-->|       |     |        |     |        |   |   |
45*4882a593Smuzhiyun   |    |       |    |   |       |     |        |     |        |   |   |
46*4882a593Smuzhiyun   |    |    ch2|----|-->|       |     | DIV    |     | DIV    |   |   |
47*4882a593Smuzhiyun   |    |       |    |   |       |     |  1 to  |     |  1 to  |   |   |
48*4882a593Smuzhiyun   |    |    ch3|----|-->|       |     |   1024 |     |     64 |   |   |
49*4882a593Smuzhiyun   |     -------     |   |       |     |        |     |        |   |   |
50*4882a593Smuzhiyun   |                 |    -------       --------       --------    |   |
51*4882a593Smuzhiyun   |                   --------------------------------------------    |
52*4882a593Smuzhiyun   |                                                                   |
53*4882a593Smuzhiyun    -------------------------------------------------------------------
54*4882a593Smuzhiyun
55*4882a593SmuzhiyunThis binding uses the common clock binding[2].
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun[1] Documentation/devicetree/bindings/clock/st/st,clkgen.txt
58*4882a593Smuzhiyun[2] Documentation/devicetree/bindings/clock/clock-bindings.txt
59*4882a593Smuzhiyun
60*4882a593SmuzhiyunRequired properties:
61*4882a593Smuzhiyun- compatible : shall be:
62*4882a593Smuzhiyun  "st,flexgen"
63*4882a593Smuzhiyun  "st,flexgen-audio", "st,flexgen" (enable clock propagation on parent for
64*4882a593Smuzhiyun  audio use case)
65*4882a593Smuzhiyun  "st,flexgen-video", "st,flexgen" (enable clock propagation on parent
66*4882a593Smuzhiyun					and activate synchronous mode)
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun- #clock-cells : from common clock binding; shall be set to 1 (multiple clock
69*4882a593Smuzhiyun  outputs).
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun- clocks : must be set to the parent's phandle. it's could be output clocks of
72*4882a593Smuzhiyun  a quadsfs or/and a pll or/and clk_sysin (up to 7 clocks)
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun- clock-output-names : List of strings used to name the clock outputs.
75*4882a593Smuzhiyun
76*4882a593SmuzhiyunExample:
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun	clk_s_c0_flexgen: clk-s-c0-flexgen {
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun		#clock-cells = <1>;
81*4882a593Smuzhiyun		compatible = "st,flexgen";
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun		clocks = <&clk_s_c0_pll0 0>,
84*4882a593Smuzhiyun			 <&clk_s_c0_pll1 0>,
85*4882a593Smuzhiyun			 <&clk_s_c0_quadfs 0>,
86*4882a593Smuzhiyun			 <&clk_s_c0_quadfs 1>,
87*4882a593Smuzhiyun			 <&clk_s_c0_quadfs 2>,
88*4882a593Smuzhiyun			 <&clk_s_c0_quadfs 3>,
89*4882a593Smuzhiyun			 <&clk_sysin>;
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun		clock-output-names = "clk-icn-gpu",
92*4882a593Smuzhiyun				     "clk-fdma",
93*4882a593Smuzhiyun				     "clk-nand",
94*4882a593Smuzhiyun				     "clk-hva",
95*4882a593Smuzhiyun				     "clk-proc-stfe",
96*4882a593Smuzhiyun				     "clk-proc-tp",
97*4882a593Smuzhiyun				     "clk-rx-icn-dmu",
98*4882a593Smuzhiyun				     "clk-rx-icn-hva",
99*4882a593Smuzhiyun				     "clk-icn-cpu",
100*4882a593Smuzhiyun				     "clk-tx-icn-dmu",
101*4882a593Smuzhiyun				     "clk-mmc-0",
102*4882a593Smuzhiyun				     "clk-mmc-1",
103*4882a593Smuzhiyun				     "clk-jpegdec",
104*4882a593Smuzhiyun				     "clk-ext2fa9",
105*4882a593Smuzhiyun				     "clk-ic-bdisp-0",
106*4882a593Smuzhiyun				     "clk-ic-bdisp-1",
107*4882a593Smuzhiyun				     "clk-pp-dmu",
108*4882a593Smuzhiyun				     "clk-vid-dmu",
109*4882a593Smuzhiyun				     "clk-dss-lpc",
110*4882a593Smuzhiyun				     "clk-st231-aud-0",
111*4882a593Smuzhiyun				     "clk-st231-gp-1",
112*4882a593Smuzhiyun				     "clk-st231-dmu",
113*4882a593Smuzhiyun				     "clk-icn-lmi",
114*4882a593Smuzhiyun				     "clk-tx-icn-disp-1",
115*4882a593Smuzhiyun				     "clk-icn-sbc",
116*4882a593Smuzhiyun				     "clk-stfe-frc2",
117*4882a593Smuzhiyun				     "clk-eth-phy",
118*4882a593Smuzhiyun				     "clk-eth-ref-phyclk",
119*4882a593Smuzhiyun				     "clk-flash-promip",
120*4882a593Smuzhiyun				     "clk-main-disp",
121*4882a593Smuzhiyun				     "clk-aux-disp",
122*4882a593Smuzhiyun				     "clk-compo-dvp";
123*4882a593Smuzhiyun	};
124