xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/clock/lpc1850-ccu.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun* NXP LPC1850 Clock Control Unit (CCU)
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunEach CGU base clock has several clock branches which can be turned on
4*4882a593Smuzhiyunor off independently by the Clock Control Units CCU1 or CCU2. The
5*4882a593Smuzhiyunbranch clocks are distributed between CCU1 and CCU2.
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun - Above text taken from NXP LPC1850 User Manual.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunThis binding uses the common clock binding:
10*4882a593Smuzhiyun    Documentation/devicetree/bindings/clock/clock-bindings.txt
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunRequired properties:
13*4882a593Smuzhiyun- compatible:
14*4882a593Smuzhiyun	Should be "nxp,lpc1850-ccu"
15*4882a593Smuzhiyun- reg:
16*4882a593Smuzhiyun	Shall define the base and range of the address space
17*4882a593Smuzhiyun	containing clock control registers
18*4882a593Smuzhiyun- #clock-cells:
19*4882a593Smuzhiyun	Shall have value <1>.  The permitted clock-specifier values
20*4882a593Smuzhiyun	are the branch clock names defined in table below.
21*4882a593Smuzhiyun- clocks:
22*4882a593Smuzhiyun	Shall contain a list of phandles for the base clocks routed
23*4882a593Smuzhiyun	from the CGU to the specific CCU. See mapping of base clocks
24*4882a593Smuzhiyun	and CCU in table below.
25*4882a593Smuzhiyun- clock-names:
26*4882a593Smuzhiyun	Shall contain a list of names for the base clock routed
27*4882a593Smuzhiyun	from the CGU to the specific CCU. Valid CCU clock names:
28*4882a593Smuzhiyun	"base_usb0_clk",  "base_periph_clk", "base_usb1_clk",
29*4882a593Smuzhiyun	"base_cpu_clk",   "base_spifi_clk",  "base_spi_clk",
30*4882a593Smuzhiyun	"base_apb1_clk",  "base_apb3_clk",   "base_adchs_clk",
31*4882a593Smuzhiyun	"base_sdio_clk",  "base_ssp0_clk",   "base_ssp1_clk",
32*4882a593Smuzhiyun	"base_uart0_clk", "base_uart1_clk",  "base_uart2_clk",
33*4882a593Smuzhiyun	"base_uart3_clk", "base_audio_clk"
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunWhich branch clocks that are available on the CCU depends on the
36*4882a593Smuzhiyunspecific LPC part. Check the user manual for your specific part.
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunA list of CCU clocks can be found in dt-bindings/clock/lpc18xx-ccu.h.
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunExample board file:
41*4882a593Smuzhiyun
42*4882a593Smuzhiyunsoc {
43*4882a593Smuzhiyun	ccu1: clock-controller@40051000 {
44*4882a593Smuzhiyun		compatible = "nxp,lpc1850-ccu";
45*4882a593Smuzhiyun		reg = <0x40051000 0x1000>;
46*4882a593Smuzhiyun		#clock-cells = <1>;
47*4882a593Smuzhiyun		clocks = <&cgu BASE_APB3_CLK>,   <&cgu BASE_APB1_CLK>,
48*4882a593Smuzhiyun			 <&cgu BASE_SPIFI_CLK>,  <&cgu BASE_CPU_CLK>,
49*4882a593Smuzhiyun			 <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
50*4882a593Smuzhiyun			 <&cgu BASE_USB1_CLK>,   <&cgu BASE_SPI_CLK>;
51*4882a593Smuzhiyun		clock-names = "base_apb3_clk",   "base_apb1_clk",
52*4882a593Smuzhiyun			      "base_spifi_clk",  "base_cpu_clk",
53*4882a593Smuzhiyun			      "base_periph_clk", "base_usb0_clk",
54*4882a593Smuzhiyun			      "base_usb1_clk",   "base_spi_clk";
55*4882a593Smuzhiyun	};
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun	ccu2: clock-controller@40052000 {
58*4882a593Smuzhiyun		compatible = "nxp,lpc1850-ccu";
59*4882a593Smuzhiyun		reg = <0x40052000 0x1000>;
60*4882a593Smuzhiyun		#clock-cells = <1>;
61*4882a593Smuzhiyun		clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
62*4882a593Smuzhiyun			 <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
63*4882a593Smuzhiyun			 <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
64*4882a593Smuzhiyun			 <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
65*4882a593Smuzhiyun		clock-names = "base_audio_clk", "base_uart3_clk",
66*4882a593Smuzhiyun			      "base_uart2_clk", "base_uart1_clk",
67*4882a593Smuzhiyun			      "base_uart0_clk", "base_ssp1_clk",
68*4882a593Smuzhiyun			      "base_ssp0_clk",  "base_sdio_clk";
69*4882a593Smuzhiyun	};
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun	/* A user of CCU brach clocks */
72*4882a593Smuzhiyun	uart1: serial@40082000 {
73*4882a593Smuzhiyun		...
74*4882a593Smuzhiyun		clocks = <&ccu2 CLK_APB0_UART1>, <&ccu1 CLK_CPU_UART1>;
75*4882a593Smuzhiyun		...
76*4882a593Smuzhiyun	};
77*4882a593Smuzhiyun};
78