Binding for a Clockgen hardware block found on
certain STMicroelectronics consumer electronics SoC devices.

A Clockgen node can contain pll, diviser or multiplexer nodes.

We will find only the base address of the Clockgen, this base
address is common of all subnode.

	clockgen_node {
		reg = <>;

		pll_node {
			...
		};

		prediv_node {
			...
		};

		divmux_node {
			...
		};

		quadfs_node {
			...
		};
		...
	};

This binding uses the common clock binding[1].
Each subnode should use the binding discribe in [2]..[4]

[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
[2] Documentation/devicetree/bindings/clock/st,quadfs.txt
[3] Documentation/devicetree/bindings/clock/st,quadfs.txt
[4] Documentation/devicetree/bindings/clock/st,quadfs.txt

Required properties:
- reg : A Base address and length of the register set.

Example:

	clockgenA@fee62000 {

		reg = <0xfee62000 0xb48>;

		CLK_S_A0_PLL: CLK_S_A0_PLL {
			#clock-cells = <1>;
			compatible = "st,clkgena-plls-c65";

			clocks = <&CLK_SYSIN>;

			clock-output-names = "CLK_S_A0_PLL0_HS",
					     "CLK_S_A0_PLL0_LS",
					     "CLK_S_A0_PLL1";
		};

		CLK_S_A0_OSC_PREDIV: CLK_S_A0_OSC_PREDIV {
			#clock-cells = <0>;
			compatible = "st,clkgena-prediv-c65",
				     "st,clkgena-prediv";

			clocks = <&CLK_SYSIN>;

			clock-output-names = "CLK_S_A0_OSC_PREDIV";
		};

		CLK_S_A0_HS: CLK_S_A0_HS {
			#clock-cells = <1>;
			compatible = "st,clkgena-divmux-c65-hs",
				     "st,clkgena-divmux";

			clocks = <&CLK_S_A0_OSC_PREDIV>,
				 <&CLK_S_A0_PLL 0>, /* PLL0 HS */
				 <&CLK_S_A0_PLL 2>; /* PLL1 */

			clock-output-names = "CLK_S_FDMA_0",
					     "CLK_S_FDMA_1",
					     ""; /* CLK_S_JIT_SENSE */
					     /* Fourth output unused */
		};
	};

