* NXP LPC1850 Clock Control Unit (CCU)

Each CGU base clock has several clock branches which can be turned on
or off independently by the Clock Control Units CCU1 or CCU2. The
branch clocks are distributed between CCU1 and CCU2.

 - Above text taken from NXP LPC1850 User Manual.

This binding uses the common clock binding:
    Documentation/devicetree/bindings/clock/clock-bindings.txt

Required properties:
- compatible:
	Should be "nxp,lpc1850-ccu"
- reg:
	Shall define the base and range of the address space
	containing clock control registers
- #clock-cells:
	Shall have value <1>.  The permitted clock-specifier values
	are the branch clock names defined in table below.
- clocks:
	Shall contain a list of phandles for the base clocks routed
	from the CGU to the specific CCU. See mapping of base clocks
	and CCU in table below.
- clock-names:
	Shall contain a list of names for the base clock routed
	from the CGU to the specific CCU. Valid CCU clock names:
	"base_usb0_clk",  "base_periph_clk", "base_usb1_clk",
	"base_cpu_clk",   "base_spifi_clk",  "base_spi_clk",
	"base_apb1_clk",  "base_apb3_clk",   "base_adchs_clk",
	"base_sdio_clk",  "base_ssp0_clk",   "base_ssp1_clk",
	"base_uart0_clk", "base_uart1_clk",  "base_uart2_clk",
	"base_uart3_clk", "base_audio_clk"

Which branch clocks that are available on the CCU depends on the
specific LPC part. Check the user manual for your specific part.

A list of CCU clocks can be found in dt-bindings/clock/lpc18xx-ccu.h.

Example board file:

soc {
	ccu1: clock-controller@40051000 {
		compatible = "nxp,lpc1850-ccu";
		reg = <0x40051000 0x1000>;
		#clock-cells = <1>;
		clocks = <&cgu BASE_APB3_CLK>,   <&cgu BASE_APB1_CLK>,
			 <&cgu BASE_SPIFI_CLK>,  <&cgu BASE_CPU_CLK>,
			 <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
			 <&cgu BASE_USB1_CLK>,   <&cgu BASE_SPI_CLK>;
		clock-names = "base_apb3_clk",   "base_apb1_clk",
			      "base_spifi_clk",  "base_cpu_clk",
			      "base_periph_clk", "base_usb0_clk",
			      "base_usb1_clk",   "base_spi_clk";
	};

	ccu2: clock-controller@40052000 {
		compatible = "nxp,lpc1850-ccu";
		reg = <0x40052000 0x1000>;
		#clock-cells = <1>;
		clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
			 <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
			 <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
			 <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
		clock-names = "base_audio_clk", "base_uart3_clk",
			      "base_uart2_clk", "base_uart1_clk",
			      "base_uart0_clk", "base_ssp1_clk",
			      "base_ssp0_clk",  "base_sdio_clk";
	};

	/* A user of CCU brach clocks */
	uart1: serial@40082000 {
		...
		clocks = <&ccu2 CLK_APB0_UART1>, <&ccu1 CLK_CPU_UART1>;
		...
	};
};
