diff options
-rw-r--r-- | Documentation/devicetree/bindings/clock/exynos4-clock.txt | 20 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos4.c | 50 |
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 | ||
202 | Example 1: An example of a clock controller node is listed below. | 222 | Example 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 */ |
92 | enum exynos4_soc { | 93 | enum 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 |