aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/clock/exynos4-clock.txt20
-rw-r--r--drivers/clk/samsung/clk-exynos4.c50
2 files changed, 53 insertions, 17 deletions
diff --git a/Documentation/devicetree/bindings/clock/exynos4-clock.txt b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
index 51c572a715bc..657b889bcc09 100644
--- a/Documentation/devicetree/bindings/clock/exynos4-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos4-clock.txt
@@ -198,6 +198,26 @@ Exynos4 SoC and this is specified where applicable.
198 audss 348 198 audss 348
199 mipi_hsi 349 Exynos4210 199 mipi_hsi 349 Exynos4210
200 mdma2 350 Exynos4210 200 mdma2 350 Exynos4210
201 pixelasyncm0 351
202 pixelasyncm1 352
203 fimc_lite0 353 Exynos4x12
204 fimc_lite1 354 Exynos4x12
205 ppmuispx 355 Exynos4x12
206 ppmuispmx 356 Exynos4x12
207
208 [Mux Clocks]
209
210 Clock ID SoC (if specific)
211 -----------------------------------------------
212
213 mout_fimc0 384
214 mout_fimc1 385
215 mout_fimc2 386
216 mout_fimc3 387
217 mout_cam0 388
218 mout_cam1 389
219 mout_csis0 390
220 mout_csis1 391
201 221
202Example 1: An example of a clock controller node is listed below. 222Example 1: An example of a clock controller node is listed below.
203 223
diff --git a/drivers/clk/samsung/clk-exynos4.c b/drivers/clk/samsung/clk-exynos4.c
index f81888dfc5c7..6d7fa82aab87 100644
--- a/drivers/clk/samsung/clk-exynos4.c
+++ b/drivers/clk/samsung/clk-exynos4.c
@@ -87,6 +87,7 @@
87#define E4210_MPLL_CON0 0x14108 87#define E4210_MPLL_CON0 0x14108
88#define SRC_CPU 0x14200 88#define SRC_CPU 0x14200
89#define DIV_CPU0 0x14500 89#define DIV_CPU0 0x14500
90#define E4X12_GATE_ISP0 0x18800
90 91
91/* the exynos4 soc type */ 92/* the exynos4 soc type */
92enum exynos4_soc { 93enum exynos4_soc {
@@ -136,7 +137,12 @@ enum exynos4_clks {
136 uart4, i2c0, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c_hdmi, tsadc, 137 uart4, i2c0, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c_hdmi, tsadc,
137 spi0, spi1, spi2, i2s1, i2s2, pcm0, i2s0, pcm1, pcm2, pwm, slimbus, 138 spi0, spi1, spi2, i2s1, i2s2, pcm0, i2s0, pcm1, pcm2, pwm, slimbus,
138 spdif, ac97, modemif, chipid, sysreg, hdmi_cec, mct, wdt, rtc, keyif, 139 spdif, ac97, modemif, chipid, sysreg, hdmi_cec, mct, wdt, rtc, keyif,
139 audss, mipi_hsi, mdma2, 140 audss, mipi_hsi, mdma2, pixelasyncm0, pixelasyncm1, fimc_lite0,
141 fimc_lite1, ppmuispx, ppmuispmx,
142
143 /* mux clocks */
144 mout_fimc0 = 384, mout_fimc1, mout_fimc2, mout_fimc3, mout_cam0,
145 mout_cam1, mout_csis0, mout_csis1,
140 146
141 nr_clks, 147 nr_clks,
142}; 148};
@@ -315,14 +321,14 @@ struct samsung_mux_clock exynos4210_mux_clks[] __initdata = {
315 SRC_CPU, 16, 1, "mout_core"), 321 SRC_CPU, 16, 1, "mout_core"),
316 MUX_A(sclk_vpll, "sclk_vpll", sclk_vpll_p4210, 322 MUX_A(sclk_vpll, "sclk_vpll", sclk_vpll_p4210,
317 SRC_TOP0, 8, 1, "sclk_vpll"), 323 SRC_TOP0, 8, 1, "sclk_vpll"),
318 MUX(none, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4), 324 MUX(mout_fimc0, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4),
319 MUX(none, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4), 325 MUX(mout_fimc1, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4),
320 MUX(none, "mout_fimc2", group1_p4210, SRC_CAM, 8, 4), 326 MUX(mout_fimc2, "mout_fimc2", group1_p4210, SRC_CAM, 8, 4),
321 MUX(none, "mout_fimc3", group1_p4210, SRC_CAM, 12, 4), 327 MUX(mout_fimc3, "mout_fimc3", group1_p4210, SRC_CAM, 12, 4),
322 MUX(none, "mout_cam0", group1_p4210, SRC_CAM, 16, 4), 328 MUX(mout_cam0, "mout_cam0", group1_p4210, SRC_CAM, 16, 4),
323 MUX(none, "mout_cam1", group1_p4210, SRC_CAM, 20, 4), 329 MUX(mout_cam1, "mout_cam1", group1_p4210, SRC_CAM, 20, 4),
324 MUX(none, "mout_csis0", group1_p4210, SRC_CAM, 24, 4), 330 MUX(mout_csis0, "mout_csis0", group1_p4210, SRC_CAM, 24, 4),
325 MUX(none, "mout_csis1", group1_p4210, SRC_CAM, 28, 4), 331 MUX(mout_csis1, "mout_csis1", group1_p4210, SRC_CAM, 28, 4),
326 MUX(none, "mout_mfc0", sclk_ampll_p4210, SRC_MFC, 0, 1), 332 MUX(none, "mout_mfc0", sclk_ampll_p4210, SRC_MFC, 0, 1),
327 MUX(none, "mout_g3d0", sclk_ampll_p4210, SRC_G3D, 0, 1), 333 MUX(none, "mout_g3d0", sclk_ampll_p4210, SRC_G3D, 0, 1),
328 MUX(none, "mout_fimd0", group1_p4210, SRC_LCD0, 0, 4), 334 MUX(none, "mout_fimd0", group1_p4210, SRC_LCD0, 0, 4),
@@ -366,14 +372,14 @@ struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = {
366 MUX_A(sclk_vpll, "sclk_vpll", mout_vpll_p, 372 MUX_A(sclk_vpll, "sclk_vpll", mout_vpll_p,
367 SRC_TOP0, 8, 1, "sclk_vpll"), 373 SRC_TOP0, 8, 1, "sclk_vpll"),
368 MUX(mout_core, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1), 374 MUX(mout_core, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1),
369 MUX(none, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4), 375 MUX(mout_fimc0, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4),
370 MUX(none, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4), 376 MUX(mout_fimc1, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4),
371 MUX(none, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4), 377 MUX(mout_fimc2, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4),
372 MUX(none, "mout_fimc3", group1_p4x12, SRC_CAM, 12, 4), 378 MUX(mout_fimc3, "mout_fimc3", group1_p4x12, SRC_CAM, 12, 4),
373 MUX(none, "mout_cam0", group1_p4x12, SRC_CAM, 16, 4), 379 MUX(mout_cam0, "mout_cam0", group1_p4x12, SRC_CAM, 16, 4),
374 MUX(none, "mout_cam1", group1_p4x12, SRC_CAM, 20, 4), 380 MUX(mout_cam1, "mout_cam1", group1_p4x12, SRC_CAM, 20, 4),
375 MUX(none, "mout_csis0", group1_p4x12, SRC_CAM, 24, 4), 381 MUX(mout_csis0, "mout_csis0", group1_p4x12, SRC_CAM, 24, 4),
376 MUX(none, "mout_csis1", group1_p4x12, SRC_CAM, 28, 4), 382 MUX(mout_csis1, "mout_csis1", group1_p4x12, SRC_CAM, 28, 4),
377 MUX(none, "mout_mfc0", sclk_ampll_p4x12, SRC_MFC, 0, 1), 383 MUX(none, "mout_mfc0", sclk_ampll_p4x12, SRC_MFC, 0, 1),
378 MUX(none, "mout_g3d0", sclk_ampll_p4x12, SRC_G3D, 0, 1), 384 MUX(none, "mout_g3d0", sclk_ampll_p4x12, SRC_G3D, 0, 1),
379 MUX(none, "mout_fimd0", group1_p4x12, SRC_LCD0, 0, 4), 385 MUX(none, "mout_fimd0", group1_p4x12, SRC_LCD0, 0, 4),
@@ -588,6 +594,8 @@ struct samsung_gate_clock exynos4_gate_clks[] __initdata = {
588 GATE_IP_CAM, 10, 0, 0, "sysmmu"), 594 GATE_IP_CAM, 10, 0, 0, "sysmmu"),
589 GATE_DA(smmu_jpeg, "exynos-sysmmu.3", "smmu_jpeg", "aclk160", 595 GATE_DA(smmu_jpeg, "exynos-sysmmu.3", "smmu_jpeg", "aclk160",
590 GATE_IP_CAM, 11, 0, 0, "sysmmu"), 596 GATE_IP_CAM, 11, 0, 0, "sysmmu"),
597 GATE(pixelasyncm0, "pxl_async0", "aclk160", GATE_IP_CAM, 17, 0, 0),
598 GATE(pixelasyncm1, "pxl_async1", "aclk160", GATE_IP_CAM, 18, 0, 0),
591 GATE_DA(smmu_tv, "exynos-sysmmu.2", "smmu_tv", "aclk160", 599 GATE_DA(smmu_tv, "exynos-sysmmu.2", "smmu_tv", "aclk160",
592 GATE_IP_TV, 4, 0, 0, "sysmmu"), 600 GATE_IP_TV, 4, 0, 0, "sysmmu"),
593 GATE_DA(mfc, "s5p-mfc", "mfc", "aclk100", GATE_IP_MFC, 0, 0, 0, "mfc"), 601 GATE_DA(mfc, "s5p-mfc", "mfc", "aclk100", GATE_IP_MFC, 0, 0, 0, "mfc"),
@@ -722,6 +730,14 @@ struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = {
722 E4X12_GATE_IP_MAUDIO, 2, 0, 0, "pcm"), 730 E4X12_GATE_IP_MAUDIO, 2, 0, 0, "pcm"),
723 GATE_DA(i2s0, "samsung-i2s.0", "i2s0", "aclk100", 731 GATE_DA(i2s0, "samsung-i2s.0", "i2s0", "aclk100",
724 E4X12_GATE_IP_MAUDIO, 3, 0, 0, "iis"), 732 E4X12_GATE_IP_MAUDIO, 3, 0, 0, "iis"),
733 GATE(fimc_lite0, "lite0", "aclk200", E4X12_GATE_ISP0, 3,
734 CLK_IGNORE_UNUSED, 0),
735 GATE(fimc_lite1, "lite1", "aclk200", E4X12_GATE_ISP0, 4,
736 CLK_IGNORE_UNUSED, 0),
737 GATE(ppmuispmx, "ppmuispmx", "aclk200", E4X12_GATE_ISP0, 20,
738 CLK_IGNORE_UNUSED, 0),
739 GATE(ppmuispx, "ppmuispx", "aclk200", E4X12_GATE_ISP0, 21,
740 CLK_IGNORE_UNUSED, 0),
725}; 741};
726 742
727#ifdef CONFIG_OF 743#ifdef CONFIG_OF