162306a36Sopenharmony_ciBinding for a type of flexgen structure found on certain
262306a36Sopenharmony_ciSTMicroelectronics consumer electronics SoC devices
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciThis structure includes:
562306a36Sopenharmony_ci- a clock cross bar (represented by a mux element)
662306a36Sopenharmony_ci- a pre and final dividers (represented by a divider and gate elements)
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciFlexgen structure is a part of Clockgen[1].
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciPlease find an example below:
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci    Clockgen block diagram
1362306a36Sopenharmony_ci    -------------------------------------------------------------------
1462306a36Sopenharmony_ci   |                     Flexgen structure                             |
1562306a36Sopenharmony_ci   |                  ---------------------------------------------    |
1662306a36Sopenharmony_ci   |                 |    -------       --------       --------    |   |
1762306a36Sopenharmony_ciclk_sysin            |   |       |     |        |     |        |   |   |
1862306a36Sopenharmony_ci---|-----------------|-->|       |     |        |     |        |   |   |
1962306a36Sopenharmony_ci   | |               |   |       |     |        |     |        |   |   |
2062306a36Sopenharmony_ci   | |   -------     |   |       |     |Pre     |     |Final   |   |   |
2162306a36Sopenharmony_ci   | |  |PLL0   |    |   |       |     |Dividers|     |Dividers|   |   |
2262306a36Sopenharmony_ci   | |->|       |    |   |       |     |  x32   |     |  x32   |   |   |
2362306a36Sopenharmony_ci   | |  |  odf_0|----|-->|       |     |        |     |        |   |   |
2462306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
2562306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
2662306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
2762306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
2862306a36Sopenharmony_ci   | |   -------     |   |       |     |        |     |        |   |   |
2962306a36Sopenharmony_ci   | |               |   |       |     |        |     |        |   |   |
3062306a36Sopenharmony_ci   | |   -------     |   | Clock |     |        |     |        |   |   |
3162306a36Sopenharmony_ci   | |  |PLL1   |    |   |       |     |        |     |        |   |   |
3262306a36Sopenharmony_ci   | |->|       |    |   | Cross |     |        |     |        |   |   |
3362306a36Sopenharmony_ci   | |  |  odf_0|----|-->|       |     |        |     |        | CLK_DIV[31:0]
3462306a36Sopenharmony_ci   | |  |       |    |   | Bar   |====>|        |====>|        |===|=========>
3562306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
3662306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
3762306a36Sopenharmony_ci   | |  |       |    |   |       |     |        |     |        |   |   |
3862306a36Sopenharmony_ci   | |   -------     |   |       |     |        |     |        |   |   |
3962306a36Sopenharmony_ci   | |               |   |       |     |        |     |        |   |   |
4062306a36Sopenharmony_ci   | |   -------     |   |       |     |        |     |        |   |   |
4162306a36Sopenharmony_ci   | |  |QUADFS |    |   |       |     |        |     |        |   |   |
4262306a36Sopenharmony_ci   | |->|    ch0|----|-->|       |     |        |     |        |   |   |
4362306a36Sopenharmony_ci   |    |       |    |   |       |     |        |     |        |   |   |
4462306a36Sopenharmony_ci   |    |    ch1|----|-->|       |     |        |     |        |   |   |
4562306a36Sopenharmony_ci   |    |       |    |   |       |     |        |     |        |   |   |
4662306a36Sopenharmony_ci   |    |    ch2|----|-->|       |     | DIV    |     | DIV    |   |   |
4762306a36Sopenharmony_ci   |    |       |    |   |       |     |  1 to  |     |  1 to  |   |   |
4862306a36Sopenharmony_ci   |    |    ch3|----|-->|       |     |   1024 |     |     64 |   |   |
4962306a36Sopenharmony_ci   |     -------     |   |       |     |        |     |        |   |   |
5062306a36Sopenharmony_ci   |                 |    -------       --------       --------    |   |
5162306a36Sopenharmony_ci   |                   --------------------------------------------    |
5262306a36Sopenharmony_ci   |                                                                   |
5362306a36Sopenharmony_ci    -------------------------------------------------------------------
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciThis binding uses the common clock binding[2].
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci[1] Documentation/devicetree/bindings/clock/st/st,clkgen.txt
5862306a36Sopenharmony_ci[2] Documentation/devicetree/bindings/clock/clock-bindings.txt
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciRequired properties:
6162306a36Sopenharmony_ci- compatible : shall be:
6262306a36Sopenharmony_ci  "st,flexgen"
6362306a36Sopenharmony_ci  "st,flexgen-audio", "st,flexgen" (enable clock propagation on parent for
6462306a36Sopenharmony_ci  audio use case)
6562306a36Sopenharmony_ci  "st,flexgen-video", "st,flexgen" (enable clock propagation on parent
6662306a36Sopenharmony_ci					and activate synchronous mode)
6762306a36Sopenharmony_ci  "st,flexgen-stih407-a0"
6862306a36Sopenharmony_ci  "st,flexgen-stih410-a0"
6962306a36Sopenharmony_ci  "st,flexgen-stih407-c0"
7062306a36Sopenharmony_ci  "st,flexgen-stih410-c0"
7162306a36Sopenharmony_ci  "st,flexgen-stih418-c0"
7262306a36Sopenharmony_ci  "st,flexgen-stih407-d0"
7362306a36Sopenharmony_ci  "st,flexgen-stih410-d0"
7462306a36Sopenharmony_ci  "st,flexgen-stih407-d2"
7562306a36Sopenharmony_ci  "st,flexgen-stih418-d2"
7662306a36Sopenharmony_ci  "st,flexgen-stih407-d3"
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci- #clock-cells : from common clock binding; shall be set to 1 (multiple clock
7962306a36Sopenharmony_ci  outputs).
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci- clocks : must be set to the parent's phandle. it could be output clocks of
8262306a36Sopenharmony_ci  a quadsfs or/and a pll or/and clk_sysin (up to 7 clocks)
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci- clock-output-names : List of strings used to name the clock outputs.
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciExample:
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci	clk_s_c0_flexgen: clk-s-c0-flexgen {
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci		#clock-cells = <1>;
9162306a36Sopenharmony_ci		compatible = "st,flexgen";
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci		clocks = <&clk_s_c0_pll0 0>,
9462306a36Sopenharmony_ci			 <&clk_s_c0_pll1 0>,
9562306a36Sopenharmony_ci			 <&clk_s_c0_quadfs 0>,
9662306a36Sopenharmony_ci			 <&clk_s_c0_quadfs 1>,
9762306a36Sopenharmony_ci			 <&clk_s_c0_quadfs 2>,
9862306a36Sopenharmony_ci			 <&clk_s_c0_quadfs 3>,
9962306a36Sopenharmony_ci			 <&clk_sysin>;
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci		clock-output-names = "clk-icn-gpu",
10262306a36Sopenharmony_ci				     "clk-fdma",
10362306a36Sopenharmony_ci				     "clk-nand",
10462306a36Sopenharmony_ci				     "clk-hva",
10562306a36Sopenharmony_ci				     "clk-proc-stfe",
10662306a36Sopenharmony_ci				     "clk-proc-tp",
10762306a36Sopenharmony_ci				     "clk-rx-icn-dmu",
10862306a36Sopenharmony_ci				     "clk-rx-icn-hva",
10962306a36Sopenharmony_ci				     "clk-icn-cpu",
11062306a36Sopenharmony_ci				     "clk-tx-icn-dmu",
11162306a36Sopenharmony_ci				     "clk-mmc-0",
11262306a36Sopenharmony_ci				     "clk-mmc-1",
11362306a36Sopenharmony_ci				     "clk-jpegdec",
11462306a36Sopenharmony_ci				     "clk-ext2fa9",
11562306a36Sopenharmony_ci				     "clk-ic-bdisp-0",
11662306a36Sopenharmony_ci				     "clk-ic-bdisp-1",
11762306a36Sopenharmony_ci				     "clk-pp-dmu",
11862306a36Sopenharmony_ci				     "clk-vid-dmu",
11962306a36Sopenharmony_ci				     "clk-dss-lpc",
12062306a36Sopenharmony_ci				     "clk-st231-aud-0",
12162306a36Sopenharmony_ci				     "clk-st231-gp-1",
12262306a36Sopenharmony_ci				     "clk-st231-dmu",
12362306a36Sopenharmony_ci				     "clk-icn-lmi",
12462306a36Sopenharmony_ci				     "clk-tx-icn-disp-1",
12562306a36Sopenharmony_ci				     "clk-icn-sbc",
12662306a36Sopenharmony_ci				     "clk-stfe-frc2",
12762306a36Sopenharmony_ci				     "clk-eth-phy",
12862306a36Sopenharmony_ci				     "clk-eth-ref-phyclk",
12962306a36Sopenharmony_ci				     "clk-flash-promip",
13062306a36Sopenharmony_ci				     "clk-main-disp",
13162306a36Sopenharmony_ci				     "clk-aux-disp",
13262306a36Sopenharmony_ci				     "clk-compo-dvp";
13362306a36Sopenharmony_ci	};
134