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