xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/clock/exynos5260-clock.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun* Samsung Exynos5260 Clock Controller
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunExynos5260 has 13 clock controllers which are instantiated
4*4882a593Smuzhiyunindependently from the device-tree. These clock controllers
5*4882a593Smuzhiyungenerate and supply clocks to various hardware blocks within
6*4882a593Smuzhiyunthe SoC.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunEach clock is assigned an identifier and client nodes can use
9*4882a593Smuzhiyunthis identifier to specify the clock which they consume. All
10*4882a593Smuzhiyunavailable clocks are defined as preprocessor macros in
11*4882a593Smuzhiyundt-bindings/clock/exynos5260-clk.h header and can be used in
12*4882a593Smuzhiyundevice tree sources.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunExternal clocks:
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunThere are several clocks that are generated outside the SoC. It
17*4882a593Smuzhiyunis expected that they are defined using standard clock bindings
18*4882a593Smuzhiyunwith following clock-output-names:
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun - "fin_pll" - PLL input clock from XXTI
21*4882a593Smuzhiyun - "xrtcxti" - input clock from XRTCXTI
22*4882a593Smuzhiyun - "ioclk_pcm_extclk" - pcm external operation clock
23*4882a593Smuzhiyun - "ioclk_spdif_extclk" - spdif external operation clock
24*4882a593Smuzhiyun - "ioclk_i2s_cdclk" - i2s0 codec clock
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunPhy clocks:
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunThere are several clocks which are generated by specific PHYs.
29*4882a593SmuzhiyunThese clocks are fed into the clock controller and then routed to
30*4882a593Smuzhiyunthe hardware blocks. These clocks are defined as fixed clocks in the
31*4882a593Smuzhiyundriver with following names:
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun - "phyclk_dptx_phy_ch3_txd_clk" - dp phy clock for channel 3
34*4882a593Smuzhiyun - "phyclk_dptx_phy_ch2_txd_clk" - dp phy clock for channel 2
35*4882a593Smuzhiyun - "phyclk_dptx_phy_ch1_txd_clk" - dp phy clock for channel 1
36*4882a593Smuzhiyun - "phyclk_dptx_phy_ch0_txd_clk" - dp phy clock for channel 0
37*4882a593Smuzhiyun - "phyclk_hdmi_phy_tmds_clko" - hdmi phy tmds clock
38*4882a593Smuzhiyun - "phyclk_hdmi_phy_pixel_clko" - hdmi phy pixel clock
39*4882a593Smuzhiyun - "phyclk_hdmi_link_o_tmds_clkhi" - hdmi phy for hdmi link
40*4882a593Smuzhiyun - "phyclk_dptx_phy_o_ref_clk_24m" - dp phy reference clock
41*4882a593Smuzhiyun - "phyclk_dptx_phy_clk_div2"
42*4882a593Smuzhiyun - "phyclk_mipi_dphy_4l_m_rxclkesc0"
43*4882a593Smuzhiyun - "phyclk_usbhost20_phy_phyclock" - usb 2.0 phy clock
44*4882a593Smuzhiyun - "phyclk_usbhost20_phy_freeclk"
45*4882a593Smuzhiyun - "phyclk_usbhost20_phy_clk48mohci"
46*4882a593Smuzhiyun - "phyclk_usbdrd30_udrd30_pipe_pclk"
47*4882a593Smuzhiyun - "phyclk_usbdrd30_udrd30_phyclock" - usb 3.0 phy clock
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunRequired Properties for Clock Controller:
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun - compatible: should be one of the following.
52*4882a593Smuzhiyun	1) "samsung,exynos5260-clock-top"
53*4882a593Smuzhiyun	2) "samsung,exynos5260-clock-peri"
54*4882a593Smuzhiyun	3) "samsung,exynos5260-clock-egl"
55*4882a593Smuzhiyun	4) "samsung,exynos5260-clock-kfc"
56*4882a593Smuzhiyun	5) "samsung,exynos5260-clock-g2d"
57*4882a593Smuzhiyun	6) "samsung,exynos5260-clock-mif"
58*4882a593Smuzhiyun	7) "samsung,exynos5260-clock-mfc"
59*4882a593Smuzhiyun	8) "samsung,exynos5260-clock-g3d"
60*4882a593Smuzhiyun	9) "samsung,exynos5260-clock-fsys"
61*4882a593Smuzhiyun	10) "samsung,exynos5260-clock-aud"
62*4882a593Smuzhiyun	11) "samsung,exynos5260-clock-isp"
63*4882a593Smuzhiyun	12) "samsung,exynos5260-clock-gscl"
64*4882a593Smuzhiyun	13) "samsung,exynos5260-clock-disp"
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun - reg: physical base address of the controller and the length of
67*4882a593Smuzhiyun	memory mapped region.
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun - #clock-cells: should be 1.
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun - clocks: list of clock identifiers which are fed as the input to
72*4882a593Smuzhiyun	the given clock controller. Please refer the next section to find
73*4882a593Smuzhiyun	the input clocks for a given controller.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun - clock-names: list of names of clocks which are fed as the input
76*4882a593Smuzhiyun	to the given clock controller.
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunInput clocks for top clock controller:
79*4882a593Smuzhiyun	- fin_pll
80*4882a593Smuzhiyun	- dout_mem_pll
81*4882a593Smuzhiyun	- dout_bus_pll
82*4882a593Smuzhiyun	- dout_media_pll
83*4882a593Smuzhiyun
84*4882a593SmuzhiyunInput clocks for peri clock controller:
85*4882a593Smuzhiyun	- fin_pll
86*4882a593Smuzhiyun	- ioclk_pcm_extclk
87*4882a593Smuzhiyun	- ioclk_i2s_cdclk
88*4882a593Smuzhiyun	- ioclk_spdif_extclk
89*4882a593Smuzhiyun	- phyclk_hdmi_phy_ref_cko
90*4882a593Smuzhiyun	- dout_aclk_peri_66
91*4882a593Smuzhiyun	- dout_sclk_peri_uart0
92*4882a593Smuzhiyun	- dout_sclk_peri_uart1
93*4882a593Smuzhiyun	- dout_sclk_peri_uart2
94*4882a593Smuzhiyun	- dout_sclk_peri_spi0_b
95*4882a593Smuzhiyun	- dout_sclk_peri_spi1_b
96*4882a593Smuzhiyun	- dout_sclk_peri_spi2_b
97*4882a593Smuzhiyun	- dout_aclk_peri_aud
98*4882a593Smuzhiyun	- dout_sclk_peri_spi0_b
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunInput clocks for egl clock controller:
101*4882a593Smuzhiyun	- fin_pll
102*4882a593Smuzhiyun	- dout_bus_pll
103*4882a593Smuzhiyun
104*4882a593SmuzhiyunInput clocks for kfc clock controller:
105*4882a593Smuzhiyun	- fin_pll
106*4882a593Smuzhiyun	- dout_media_pll
107*4882a593Smuzhiyun
108*4882a593SmuzhiyunInput clocks for g2d clock controller:
109*4882a593Smuzhiyun	- fin_pll
110*4882a593Smuzhiyun	- dout_aclk_g2d_333
111*4882a593Smuzhiyun
112*4882a593SmuzhiyunInput clocks for mif clock controller:
113*4882a593Smuzhiyun	- fin_pll
114*4882a593Smuzhiyun
115*4882a593SmuzhiyunInput clocks for mfc clock controller:
116*4882a593Smuzhiyun	- fin_pll
117*4882a593Smuzhiyun	- dout_aclk_mfc_333
118*4882a593Smuzhiyun
119*4882a593SmuzhiyunInput clocks for g3d clock controller:
120*4882a593Smuzhiyun	- fin_pll
121*4882a593Smuzhiyun
122*4882a593SmuzhiyunInput clocks for fsys clock controller:
123*4882a593Smuzhiyun	- fin_pll
124*4882a593Smuzhiyun	- phyclk_usbhost20_phy_phyclock
125*4882a593Smuzhiyun	- phyclk_usbhost20_phy_freeclk
126*4882a593Smuzhiyun	- phyclk_usbhost20_phy_clk48mohci
127*4882a593Smuzhiyun	- phyclk_usbdrd30_udrd30_pipe_pclk
128*4882a593Smuzhiyun	- phyclk_usbdrd30_udrd30_phyclock
129*4882a593Smuzhiyun	- dout_aclk_fsys_200
130*4882a593Smuzhiyun
131*4882a593SmuzhiyunInput clocks for aud clock controller:
132*4882a593Smuzhiyun	- fin_pll
133*4882a593Smuzhiyun	- fout_aud_pll
134*4882a593Smuzhiyun	- ioclk_i2s_cdclk
135*4882a593Smuzhiyun	- ioclk_pcm_extclk
136*4882a593Smuzhiyun
137*4882a593SmuzhiyunInput clocks for isp clock controller:
138*4882a593Smuzhiyun	- fin_pll
139*4882a593Smuzhiyun	- dout_aclk_isp1_266
140*4882a593Smuzhiyun	- dout_aclk_isp1_400
141*4882a593Smuzhiyun	- mout_aclk_isp1_266
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunInput clocks for gscl clock controller:
144*4882a593Smuzhiyun	- fin_pll
145*4882a593Smuzhiyun	- dout_aclk_gscl_400
146*4882a593Smuzhiyun	- dout_aclk_gscl_333
147*4882a593Smuzhiyun
148*4882a593SmuzhiyunInput clocks for disp clock controller:
149*4882a593Smuzhiyun	- fin_pll
150*4882a593Smuzhiyun	- phyclk_dptx_phy_ch3_txd_clk
151*4882a593Smuzhiyun	- phyclk_dptx_phy_ch2_txd_clk
152*4882a593Smuzhiyun	- phyclk_dptx_phy_ch1_txd_clk
153*4882a593Smuzhiyun	- phyclk_dptx_phy_ch0_txd_clk
154*4882a593Smuzhiyun	- phyclk_hdmi_phy_tmds_clko
155*4882a593Smuzhiyun	- phyclk_hdmi_phy_ref_clko
156*4882a593Smuzhiyun	- phyclk_hdmi_phy_pixel_clko
157*4882a593Smuzhiyun	- phyclk_hdmi_link_o_tmds_clkhi
158*4882a593Smuzhiyun	- phyclk_mipi_dphy_4l_m_txbyte_clkhs
159*4882a593Smuzhiyun	- phyclk_dptx_phy_o_ref_clk_24m
160*4882a593Smuzhiyun	- phyclk_dptx_phy_clk_div2
161*4882a593Smuzhiyun	- phyclk_mipi_dphy_4l_m_rxclkesc0
162*4882a593Smuzhiyun	- phyclk_hdmi_phy_ref_cko
163*4882a593Smuzhiyun	- ioclk_spdif_extclk
164*4882a593Smuzhiyun	- dout_aclk_peri_aud
165*4882a593Smuzhiyun	- dout_aclk_disp_222
166*4882a593Smuzhiyun	- dout_sclk_disp_pixel
167*4882a593Smuzhiyun	- dout_aclk_disp_333
168*4882a593Smuzhiyun
169*4882a593SmuzhiyunExample 1: An example of a clock controller node is listed below.
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun	clock_mfc: clock-controller@11090000 {
172*4882a593Smuzhiyun		compatible = "samsung,exynos5260-clock-mfc";
173*4882a593Smuzhiyun		clock = <&fin_pll>, <&clock_top TOP_DOUT_ACLK_MFC_333>;
174*4882a593Smuzhiyun		clock-names = "fin_pll", "dout_aclk_mfc_333";
175*4882a593Smuzhiyun		reg = <0x11090000 0x10000>;
176*4882a593Smuzhiyun		#clock-cells = <1>;
177*4882a593Smuzhiyun	};
178*4882a593Smuzhiyun
179*4882a593SmuzhiyunExample 2: UART controller node that consumes the clock generated by the
180*4882a593Smuzhiyun		peri clock controller. Refer to the standard clock bindings for
181*4882a593Smuzhiyun		information about 'clocks' and 'clock-names' property.
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun	serial@12c00000 {
184*4882a593Smuzhiyun		compatible = "samsung,exynos4210-uart";
185*4882a593Smuzhiyun		reg = <0x12C00000 0x100>;
186*4882a593Smuzhiyun		interrupts = <0 146 0>;
187*4882a593Smuzhiyun		clocks = <&clock_peri PERI_PCLK_UART0>, <&clock_peri PERI_SCLK_UART0>;
188*4882a593Smuzhiyun		clock-names = "uart", "clk_uart_baud0";
189*4882a593Smuzhiyun	};
190*4882a593Smuzhiyun
191