aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChanwoo Choi <cw00.choi@samsung.com>2015-02-02 19:13:54 -0500
committerSylwester Nawrocki <s.nawrocki@samsung.com>2015-02-05 13:31:06 -0500
commit8e46c4b84faf317773d5a4ec6d807ceae2d0eb41 (patch)
treecdb7af210fdb36a90034e3b48f8dc1629d2e1ecf
parent45e58aa5f751fd861d46f7b6d438c1be147458c6 (diff)
clk: samsung: exynos5433: Add clocks for CMU_ISP domain
This patch adds the mux/divider/gate clocks for CMU_ISP domain which generates the clocks for FIMC-ISP/DRC/SCLC/DIS/3DNR IPs. Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Acked-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
-rw-r--r--Documentation/devicetree/bindings/clock/exynos5433-clock.txt20
-rw-r--r--drivers/clk/samsung/clk-exynos5433.c267
-rw-r--r--include/dt-bindings/clock/exynos5433.h89
3 files changed, 375 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
index acc1d8aac95c..4f3bfcd366a3 100644
--- a/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos5433-clock.txt
@@ -43,6 +43,8 @@ Required Properties:
43 which generates clocks for MFC(Multi-Format Codec) IP. 43 which generates clocks for MFC(Multi-Format Codec) IP.
44 - "samsung,exynos5433-cmu-hevc" - clock controller compatible for CMU_HEVC 44 - "samsung,exynos5433-cmu-hevc" - clock controller compatible for CMU_HEVC
45 which generates clocks for HEVC(High Efficiency Video Codec) decoder IP. 45 which generates clocks for HEVC(High Efficiency Video Codec) decoder IP.
46 - "samsung,exynos5433-cmu-isp" - clock controller compatible for CMU_ISP
47 which generates clocks for FIMC-ISP/DRC/SCLC/DIS/3DNR IPs.
46 48
47- reg: physical base address of the controller and length of memory mapped 49- reg: physical base address of the controller and length of memory mapped
48 region. 50 region.
@@ -137,6 +139,11 @@ Required Properties:
137 - oscclk 139 - oscclk
138 - aclk_hevc_400 140 - aclk_hevc_400
139 141
142 Input clocks for isp clock controller:
143 - oscclk
144 - aclk_isp_dis_400
145 - aclk_isp_400
146
140Each clock is assigned an identifier and client nodes can use this identifier 147Each clock is assigned an identifier and client nodes can use this identifier
141to specify the clock which they consume. 148to specify the clock which they consume.
142 149
@@ -370,6 +377,19 @@ Example 2: Examples of clock controller nodes are listed below.
370 clocks = <&xxti>, <&cmu_top CLK_ACLK_HEVC_400>; 377 clocks = <&xxti>, <&cmu_top CLK_ACLK_HEVC_400>;
371 }; 378 };
372 379
380 cmu_isp: clock-controller@146d0000 {
381 compatible = "samsung,exynos5433-cmu-isp";
382 reg = <0x146d0000 0x0b0c>;
383 #clock-cells = <1>;
384
385 clock-names = "oscclk",
386 "aclk_isp_dis_400",
387 "aclk_isp_400";
388 clocks = <&xxti>,
389 <&cmu_top CLK_ACLK_ISP_DIS_400>,
390 <&cmu_top CLK_ACLK_ISP_400>;
391 };
392
373Example 3: UART controller node that consumes the clock generated by the clock 393Example 3: UART controller node that consumes the clock generated by the clock
374 controller. 394 controller.
375 395
diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c
index 482a603c7e6b..a8ea6e1fbffc 100644
--- a/drivers/clk/samsung/clk-exynos5433.c
+++ b/drivers/clk/samsung/clk-exynos5433.c
@@ -404,6 +404,12 @@ static struct samsung_mux_clock top_mux_clks[] __initdata = {
404}; 404};
405 405
406static struct samsung_div_clock top_div_clks[] __initdata = { 406static struct samsung_div_clock top_div_clks[] __initdata = {
407 /* DIV_TOP0 */
408 DIV(CLK_DIV_ACLK_ISP_DIS_400, "div_aclk_isp_dis_400",
409 "mout_aclk_isp_dis_400", DIV_TOP0, 4, 4),
410 DIV(CLK_DIV_ACLK_ISP_400, "div_aclk_isp_400",
411 "mout_aclk_isp_400", DIV_TOP0, 0, 4),
412
407 /* DIV_TOP1 */ 413 /* DIV_TOP1 */
408 DIV(CLK_DIV_ACLK_GSCL_111, "div_aclk_gscl_111", "mout_aclk_gscl_333", 414 DIV(CLK_DIV_ACLK_GSCL_111, "div_aclk_gscl_111", "mout_aclk_gscl_333",
409 DIV_TOP1, 28, 3), 415 DIV_TOP1, 28, 3),
@@ -560,6 +566,12 @@ static struct samsung_gate_clock top_gate_clks[] __initdata = {
560 GATE(CLK_ACLK_GSCL_333, "aclk_gscl_333", "div_aclk_gscl_333", 566 GATE(CLK_ACLK_GSCL_333, "aclk_gscl_333", "div_aclk_gscl_333",
561 ENABLE_ACLK_TOP, 14, 567 ENABLE_ACLK_TOP, 14,
562 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), 568 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
569 GATE(CLK_ACLK_ISP_DIS_400, "aclk_isp_dis_400", "div_aclk_isp_dis_400",
570 ENABLE_ACLK_TOP, 7,
571 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
572 GATE(CLK_ACLK_ISP_400, "aclk_isp_400", "div_aclk_isp_400",
573 ENABLE_ACLK_TOP, 6,
574 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
563 GATE(CLK_ACLK_HEVC_400, "aclk_hevc_400", "div_aclk_hevc_400", 575 GATE(CLK_ACLK_HEVC_400, "aclk_hevc_400", "div_aclk_hevc_400",
564 ENABLE_ACLK_TOP, 5, 576 ENABLE_ACLK_TOP, 5,
565 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0), 577 CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
@@ -4218,3 +4230,258 @@ static void __init exynos5433_cmu_hevc_init(struct device_node *np)
4218} 4230}
4219CLK_OF_DECLARE(exynos5433_cmu_hevc, "samsung,exynos5433-cmu-hevc", 4231CLK_OF_DECLARE(exynos5433_cmu_hevc, "samsung,exynos5433-cmu-hevc",
4220 exynos5433_cmu_hevc_init); 4232 exynos5433_cmu_hevc_init);
4233
4234/*
4235 * Register offset definitions for CMU_ISP
4236 */
4237#define MUX_SEL_ISP 0x0200
4238#define MUX_ENABLE_ISP 0x0300
4239#define MUX_STAT_ISP 0x0400
4240#define DIV_ISP 0x0600
4241#define DIV_STAT_ISP 0x0700
4242#define ENABLE_ACLK_ISP0 0x0800
4243#define ENABLE_ACLK_ISP1 0x0804
4244#define ENABLE_ACLK_ISP2 0x0808
4245#define ENABLE_PCLK_ISP 0x0900
4246#define ENABLE_SCLK_ISP 0x0a00
4247#define ENABLE_IP_ISP0 0x0b00
4248#define ENABLE_IP_ISP1 0x0b04
4249#define ENABLE_IP_ISP2 0x0b08
4250#define ENABLE_IP_ISP3 0x0b0c
4251
4252static unsigned long isp_clk_regs[] __initdata = {
4253 MUX_SEL_ISP,
4254 MUX_ENABLE_ISP,
4255 MUX_STAT_ISP,
4256 DIV_ISP,
4257 DIV_STAT_ISP,
4258 ENABLE_ACLK_ISP0,
4259 ENABLE_ACLK_ISP1,
4260 ENABLE_ACLK_ISP2,
4261 ENABLE_PCLK_ISP,
4262 ENABLE_SCLK_ISP,
4263 ENABLE_IP_ISP0,
4264 ENABLE_IP_ISP1,
4265 ENABLE_IP_ISP2,
4266 ENABLE_IP_ISP3,
4267};
4268
4269PNAME(mout_aclk_isp_dis_400_user_p) = { "oscclk", "aclk_isp_dis_400", };
4270PNAME(mout_aclk_isp_400_user_p) = { "oscclk", "aclk_isp_400", };
4271
4272static struct samsung_mux_clock isp_mux_clks[] __initdata = {
4273 /* MUX_SEL_ISP */
4274 MUX(CLK_MOUT_ACLK_ISP_DIS_400_USER, "mout_aclk_isp_dis_400_user",
4275 mout_aclk_isp_dis_400_user_p, MUX_SEL_ISP, 4, 0),
4276 MUX(CLK_MOUT_ACLK_ISP_400_USER, "mout_aclk_isp_400_user",
4277 mout_aclk_isp_400_user_p, MUX_SEL_ISP, 0, 0),
4278};
4279
4280static struct samsung_div_clock isp_div_clks[] __initdata = {
4281 /* DIV_ISP */
4282 DIV(CLK_DIV_PCLK_ISP_DIS, "div_pclk_isp_dis",
4283 "mout_aclk_isp_dis_400_user", DIV_ISP, 12, 3),
4284 DIV(CLK_DIV_PCLK_ISP, "div_pclk_isp", "mout_aclk_isp_400_user",
4285 DIV_ISP, 8, 3),
4286 DIV(CLK_DIV_ACLK_ISP_D_200, "div_aclk_isp_d_200",
4287 "mout_aclk_isp_400_user", DIV_ISP, 4, 3),
4288 DIV(CLK_DIV_ACLK_ISP_C_200, "div_aclk_isp_c_200",
4289 "mout_aclk_isp_400_user", DIV_ISP, 0, 3),
4290};
4291
4292static struct samsung_gate_clock isp_gate_clks[] __initdata = {
4293 /* ENABLE_ACLK_ISP0 */
4294 GATE(CLK_ACLK_ISP_D_GLUE, "aclk_isp_d_glue", "mout_aclk_isp_400_user",
4295 ENABLE_ACLK_ISP0, 6, CLK_IGNORE_UNUSED, 0),
4296 GATE(CLK_ACLK_SCALERP, "aclk_scalerp", "mout_aclk_isp_400_user",
4297 ENABLE_ACLK_ISP0, 5, 0, 0),
4298 GATE(CLK_ACLK_3DNR, "aclk_3dnr", "mout_aclk_isp_400_user",
4299 ENABLE_ACLK_ISP0, 4, 0, 0),
4300 GATE(CLK_ACLK_DIS, "aclk_dis", "mout_aclk_isp_dis_400_user",
4301 ENABLE_ACLK_ISP0, 3, 0, 0),
4302 GATE(CLK_ACLK_SCALERC, "aclk_scalerc", "mout_aclk_isp_400_user",
4303 ENABLE_ACLK_ISP0, 2, 0, 0),
4304 GATE(CLK_ACLK_DRC, "aclk_drc", "mout_aclk_isp_400_user",
4305 ENABLE_ACLK_ISP0, 1, 0, 0),
4306 GATE(CLK_ACLK_ISP, "aclk_isp", "mout_aclk_isp_400_user",
4307 ENABLE_ACLK_ISP0, 0, 0, 0),
4308
4309 /* ENABLE_ACLK_ISP1 */
4310 GATE(CLK_ACLK_AXIUS_SCALERP, "aclk_axius_scalerp",
4311 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
4312 17, CLK_IGNORE_UNUSED, 0),
4313 GATE(CLK_ACLK_AXIUS_SCALERC, "aclk_axius_scalerc",
4314 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
4315 16, CLK_IGNORE_UNUSED, 0),
4316 GATE(CLK_ACLK_AXIUS_DRC, "aclk_axius_drc",
4317 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
4318 15, CLK_IGNORE_UNUSED, 0),
4319 GATE(CLK_ACLK_ASYNCAHBM_ISP2P, "aclk_asyncahbm_isp2p",
4320 "div_pclk_isp", ENABLE_ACLK_ISP1,
4321 14, CLK_IGNORE_UNUSED, 0),
4322 GATE(CLK_ACLK_ASYNCAHBM_ISP1P, "aclk_asyncahbm_isp1p",
4323 "div_pclk_isp", ENABLE_ACLK_ISP1,
4324 13, CLK_IGNORE_UNUSED, 0),
4325 GATE(CLK_ACLK_ASYNCAXIS_DIS1, "aclk_asyncaxis_dis1",
4326 "mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
4327 12, CLK_IGNORE_UNUSED, 0),
4328 GATE(CLK_ACLK_ASYNCAXIS_DIS0, "aclk_asyncaxis_dis0",
4329 "mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
4330 11, CLK_IGNORE_UNUSED, 0),
4331 GATE(CLK_ACLK_ASYNCAXIM_DIS1, "aclk_asyncaxim_dis1",
4332 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
4333 10, CLK_IGNORE_UNUSED, 0),
4334 GATE(CLK_ACLK_ASYNCAXIM_DIS0, "aclk_asyncaxim_dis0",
4335 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
4336 9, CLK_IGNORE_UNUSED, 0),
4337 GATE(CLK_ACLK_ASYNCAXIM_ISP2P, "aclk_asyncaxim_isp2p",
4338 "div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
4339 8, CLK_IGNORE_UNUSED, 0),
4340 GATE(CLK_ACLK_ASYNCAXIM_ISP1P, "aclk_asyncaxim_isp1p",
4341 "div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
4342 7, CLK_IGNORE_UNUSED, 0),
4343 GATE(CLK_ACLK_AHB2APB_ISP2P, "aclk_ahb2apb_isp2p", "div_pclk_isp",
4344 ENABLE_ACLK_ISP1, 6, CLK_IGNORE_UNUSED, 0),
4345 GATE(CLK_ACLK_AHB2APB_ISP1P, "aclk_ahb2apb_isp1p", "div_pclk_isp",
4346 ENABLE_ACLK_ISP1, 5, CLK_IGNORE_UNUSED, 0),
4347 GATE(CLK_ACLK_AXI2APB_ISP2P, "aclk_axi2apb_isp2p",
4348 "div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
4349 4, CLK_IGNORE_UNUSED, 0),
4350 GATE(CLK_ACLK_AXI2APB_ISP1P, "aclk_axi2apb_isp1p",
4351 "div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
4352 3, CLK_IGNORE_UNUSED, 0),
4353 GATE(CLK_ACLK_XIU_ISPEX1, "aclk_xiu_ispex1", "mout_aclk_isp_400_user",
4354 ENABLE_ACLK_ISP1, 2, CLK_IGNORE_UNUSED, 0),
4355 GATE(CLK_ACLK_XIU_ISPEX0, "aclk_xiu_ispex0", "mout_aclk_isp_400_user",
4356 ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
4357 GATE(CLK_ACLK_ISPND_400, "aclk_ispnd_400", "mout_aclk_isp_400_user",
4358 ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
4359
4360 /* ENABLE_ACLK_ISP2 */
4361 GATE(CLK_ACLK_SMMU_SCALERP, "aclk_smmu_scalerp",
4362 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
4363 13, CLK_IGNORE_UNUSED, 0),
4364 GATE(CLK_ACLK_SMMU_3DNR, "aclk_smmu_3dnr", "mout_aclk_isp_400_user",
4365 ENABLE_ACLK_ISP2, 12, CLK_IGNORE_UNUSED, 0),
4366 GATE(CLK_ACLK_SMMU_DIS1, "aclk_smmu_dis1", "mout_aclk_isp_400_user",
4367 ENABLE_ACLK_ISP2, 11, CLK_IGNORE_UNUSED, 0),
4368 GATE(CLK_ACLK_SMMU_DIS0, "aclk_smmu_dis0", "mout_aclk_isp_400_user",
4369 ENABLE_ACLK_ISP2, 10, CLK_IGNORE_UNUSED, 0),
4370 GATE(CLK_ACLK_SMMU_SCALERC, "aclk_smmu_scalerc",
4371 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
4372 9, CLK_IGNORE_UNUSED, 0),
4373 GATE(CLK_ACLK_SMMU_DRC, "aclk_smmu_drc", "mout_aclk_isp_400_user",
4374 ENABLE_ACLK_ISP2, 8, CLK_IGNORE_UNUSED, 0),
4375 GATE(CLK_ACLK_SMMU_ISP, "aclk_smmu_isp", "mout_aclk_isp_400_user",
4376 ENABLE_ACLK_ISP2, 7, CLK_IGNORE_UNUSED, 0),
4377 GATE(CLK_ACLK_BTS_SCALERP, "aclk_bts_scalerp",
4378 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
4379 6, CLK_IGNORE_UNUSED, 0),
4380 GATE(CLK_ACLK_BTS_3DR, "aclk_bts_3dnr", "mout_aclk_isp_400_user",
4381 ENABLE_ACLK_ISP2, 5, CLK_IGNORE_UNUSED, 0),
4382 GATE(CLK_ACLK_BTS_DIS1, "aclk_bts_dis1", "mout_aclk_isp_400_user",
4383 ENABLE_ACLK_ISP2, 4, CLK_IGNORE_UNUSED, 0),
4384 GATE(CLK_ACLK_BTS_DIS0, "aclk_bts_dis0", "mout_aclk_isp_400_user",
4385 ENABLE_ACLK_ISP2, 3, CLK_IGNORE_UNUSED, 0),
4386 GATE(CLK_ACLK_BTS_SCALERC, "aclk_bts_scalerc",
4387 "mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
4388 2, CLK_IGNORE_UNUSED, 0),
4389 GATE(CLK_ACLK_BTS_DRC, "aclk_bts_drc", "mout_aclk_isp_400_user",
4390 ENABLE_ACLK_ISP2, 1, CLK_IGNORE_UNUSED, 0),
4391 GATE(CLK_ACLK_BTS_ISP, "aclk_bts_isp", "mout_aclk_isp_400_user",
4392 ENABLE_ACLK_ISP2, 0, CLK_IGNORE_UNUSED, 0),
4393
4394 /* ENABLE_PCLK_ISP */
4395 GATE(CLK_PCLK_SMMU_SCALERP, "pclk_smmu_scalerp", "div_aclk_isp_d_200",
4396 ENABLE_PCLK_ISP, 25, CLK_IGNORE_UNUSED, 0),
4397 GATE(CLK_PCLK_SMMU_3DNR, "pclk_smmu_3dnr", "div_aclk_isp_d_200",
4398 ENABLE_PCLK_ISP, 24, CLK_IGNORE_UNUSED, 0),
4399 GATE(CLK_PCLK_SMMU_DIS1, "pclk_smmu_dis1", "div_aclk_isp_d_200",
4400 ENABLE_PCLK_ISP, 23, CLK_IGNORE_UNUSED, 0),
4401 GATE(CLK_PCLK_SMMU_DIS0, "pclk_smmu_dis0", "div_aclk_isp_d_200",
4402 ENABLE_PCLK_ISP, 22, CLK_IGNORE_UNUSED, 0),
4403 GATE(CLK_PCLK_SMMU_SCALERC, "pclk_smmu_scalerc", "div_aclk_isp_c_200",
4404 ENABLE_PCLK_ISP, 21, CLK_IGNORE_UNUSED, 0),
4405 GATE(CLK_PCLK_SMMU_DRC, "pclk_smmu_drc", "div_aclk_isp_c_200",
4406 ENABLE_PCLK_ISP, 20, CLK_IGNORE_UNUSED, 0),
4407 GATE(CLK_PCLK_SMMU_ISP, "pclk_smmu_isp", "div_aclk_isp_c_200",
4408 ENABLE_PCLK_ISP, 19, CLK_IGNORE_UNUSED, 0),
4409 GATE(CLK_PCLK_BTS_SCALERP, "pclk_bts_scalerp", "div_pclk_isp",
4410 ENABLE_PCLK_ISP, 18, CLK_IGNORE_UNUSED, 0),
4411 GATE(CLK_PCLK_BTS_3DNR, "pclk_bts_3dnr", "div_pclk_isp",
4412 ENABLE_PCLK_ISP, 17, CLK_IGNORE_UNUSED, 0),
4413 GATE(CLK_PCLK_BTS_DIS1, "pclk_bts_dis1", "div_pclk_isp",
4414 ENABLE_PCLK_ISP, 16, CLK_IGNORE_UNUSED, 0),
4415 GATE(CLK_PCLK_BTS_DIS0, "pclk_bts_dis0", "div_pclk_isp",
4416 ENABLE_PCLK_ISP, 15, CLK_IGNORE_UNUSED, 0),
4417 GATE(CLK_PCLK_BTS_SCALERC, "pclk_bts_scalerc", "div_pclk_isp",
4418 ENABLE_PCLK_ISP, 14, CLK_IGNORE_UNUSED, 0),
4419 GATE(CLK_PCLK_BTS_DRC, "pclk_bts_drc", "div_pclk_isp",
4420 ENABLE_PCLK_ISP, 13, CLK_IGNORE_UNUSED, 0),
4421 GATE(CLK_PCLK_BTS_ISP, "pclk_bts_isp", "div_pclk_isp",
4422 ENABLE_PCLK_ISP, 12, CLK_IGNORE_UNUSED, 0),
4423 GATE(CLK_PCLK_ASYNCAXI_DIS1, "pclk_asyncaxi_dis1", "div_pclk_isp",
4424 ENABLE_PCLK_ISP, 11, CLK_IGNORE_UNUSED, 0),
4425 GATE(CLK_PCLK_ASYNCAXI_DIS0, "pclk_asyncaxi_dis0", "div_pclk_isp",
4426 ENABLE_PCLK_ISP, 10, CLK_IGNORE_UNUSED, 0),
4427 GATE(CLK_PCLK_PMU_ISP, "pclk_pmu_isp", "div_pclk_isp",
4428 ENABLE_PCLK_ISP, 9, CLK_IGNORE_UNUSED, 0),
4429 GATE(CLK_PCLK_SYSREG_ISP, "pclk_sysreg_isp", "div_pclk_isp",
4430 ENABLE_PCLK_ISP, 8, CLK_IGNORE_UNUSED, 0),
4431 GATE(CLK_PCLK_CMU_ISP_LOCAL, "pclk_cmu_isp_local",
4432 "div_aclk_isp_c_200", ENABLE_PCLK_ISP,
4433 7, CLK_IGNORE_UNUSED, 0),
4434 GATE(CLK_PCLK_SCALERP, "pclk_scalerp", "div_aclk_isp_d_200",
4435 ENABLE_PCLK_ISP, 6, CLK_IGNORE_UNUSED, 0),
4436 GATE(CLK_PCLK_3DNR, "pclk_3dnr", "div_aclk_isp_d_200",
4437 ENABLE_PCLK_ISP, 5, CLK_IGNORE_UNUSED, 0),
4438 GATE(CLK_PCLK_DIS_CORE, "pclk_dis_core", "div_pclk_isp_dis",
4439 ENABLE_PCLK_ISP, 4, CLK_IGNORE_UNUSED, 0),
4440 GATE(CLK_PCLK_DIS, "pclk_dis", "div_aclk_isp_d_200",
4441 ENABLE_PCLK_ISP, 3, CLK_IGNORE_UNUSED, 0),
4442 GATE(CLK_PCLK_SCALERC, "pclk_scalerc", "div_aclk_isp_c_200",
4443 ENABLE_PCLK_ISP, 2, CLK_IGNORE_UNUSED, 0),
4444 GATE(CLK_PCLK_DRC, "pclk_drc", "div_aclk_isp_c_200",
4445 ENABLE_PCLK_ISP, 1, CLK_IGNORE_UNUSED, 0),
4446 GATE(CLK_PCLK_ISP, "pclk_isp", "div_aclk_isp_c_200",
4447 ENABLE_PCLK_ISP, 0, CLK_IGNORE_UNUSED, 0),
4448
4449 /* ENABLE_SCLK_ISP */
4450 GATE(CLK_SCLK_PIXELASYNCS_DIS, "sclk_pixelasyncs_dis",
4451 "mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
4452 5, CLK_IGNORE_UNUSED, 0),
4453 GATE(CLK_SCLK_PIXELASYNCM_DIS, "sclk_pixelasyncm_dis",
4454 "mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
4455 4, CLK_IGNORE_UNUSED, 0),
4456 GATE(CLK_SCLK_PIXELASYNCS_SCALERP, "sclk_pixelasyncs_scalerp",
4457 "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
4458 3, CLK_IGNORE_UNUSED, 0),
4459 GATE(CLK_SCLK_PIXELASYNCM_ISPD, "sclk_pixelasyncm_ispd",
4460 "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
4461 2, CLK_IGNORE_UNUSED, 0),
4462 GATE(CLK_SCLK_PIXELASYNCS_ISPC, "sclk_pixelasyncs_ispc",
4463 "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
4464 1, CLK_IGNORE_UNUSED, 0),
4465 GATE(CLK_SCLK_PIXELASYNCM_ISPC, "sclk_pixelasyncm_ispc",
4466 "mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
4467 0, CLK_IGNORE_UNUSED, 0),
4468};
4469
4470static struct samsung_cmu_info isp_cmu_info __initdata = {
4471 .mux_clks = isp_mux_clks,
4472 .nr_mux_clks = ARRAY_SIZE(isp_mux_clks),
4473 .div_clks = isp_div_clks,
4474 .nr_div_clks = ARRAY_SIZE(isp_div_clks),
4475 .gate_clks = isp_gate_clks,
4476 .nr_gate_clks = ARRAY_SIZE(isp_gate_clks),
4477 .nr_clk_ids = ISP_NR_CLK,
4478 .clk_regs = isp_clk_regs,
4479 .nr_clk_regs = ARRAY_SIZE(isp_clk_regs),
4480};
4481
4482static void __init exynos5433_cmu_isp_init(struct device_node *np)
4483{
4484 samsung_cmu_register_one(np, &isp_cmu_info);
4485}
4486CLK_OF_DECLARE(exynos5433_cmu_isp, "samsung,exynos5433-cmu-isp",
4487 exynos5433_cmu_isp_init);
diff --git a/include/dt-bindings/clock/exynos5433.h b/include/dt-bindings/clock/exynos5433.h
index 1b2d333c1786..fbc81e3424a6 100644
--- a/include/dt-bindings/clock/exynos5433.h
+++ b/include/dt-bindings/clock/exynos5433.h
@@ -116,6 +116,8 @@
116#define CLK_DIV_SCLK_USBDRD30 143 116#define CLK_DIV_SCLK_USBDRD30 143
117#define CLK_DIV_SCLK_JPEG 144 117#define CLK_DIV_SCLK_JPEG 144
118#define CLK_DIV_ACLK_MSCL_400 145 118#define CLK_DIV_ACLK_MSCL_400 145
119#define CLK_DIV_ACLK_ISP_DIS_400 146
120#define CLK_DIV_ACLK_ISP_400 147
119 121
120#define CLK_ACLK_PERIC_66 200 122#define CLK_ACLK_PERIC_66 200
121#define CLK_ACLK_PERIS_66 201 123#define CLK_ACLK_PERIS_66 201
@@ -155,8 +157,10 @@
155#define CLK_ACLK_MSCL_400 235 157#define CLK_ACLK_MSCL_400 235
156#define CLK_ACLK_MFC_400 236 158#define CLK_ACLK_MFC_400 236
157#define CLK_ACLK_HEVC_400 237 159#define CLK_ACLK_HEVC_400 237
160#define CLK_ACLK_ISP_DIS_400 238
161#define CLK_ACLK_ISP_400 239
158 162
159#define TOP_NR_CLK 238 163#define TOP_NR_CLK 240
160 164
161/* CMU_CPIF */ 165/* CMU_CPIF */
162#define CLK_FOUT_MPHY_PLL 1 166#define CLK_FOUT_MPHY_PLL 1
@@ -1026,4 +1030,87 @@
1026 1030
1027#define HEVC_NR_CLK 19 1031#define HEVC_NR_CLK 19
1028 1032
1033/* CMU_ISP */
1034#define CLK_MOUT_ACLK_ISP_DIS_400_USER 1
1035#define CLK_MOUT_ACLK_ISP_400_USER 2
1036
1037#define CLK_DIV_PCLK_ISP_DIS 3
1038#define CLK_DIV_PCLK_ISP 4
1039#define CLK_DIV_ACLK_ISP_D_200 5
1040#define CLK_DIV_ACLK_ISP_C_200 6
1041
1042#define CLK_ACLK_ISP_D_GLUE 7
1043#define CLK_ACLK_SCALERP 8
1044#define CLK_ACLK_3DNR 9
1045#define CLK_ACLK_DIS 10
1046#define CLK_ACLK_SCALERC 11
1047#define CLK_ACLK_DRC 12
1048#define CLK_ACLK_ISP 13
1049#define CLK_ACLK_AXIUS_SCALERP 14
1050#define CLK_ACLK_AXIUS_SCALERC 15
1051#define CLK_ACLK_AXIUS_DRC 16
1052#define CLK_ACLK_ASYNCAHBM_ISP2P 17
1053#define CLK_ACLK_ASYNCAHBM_ISP1P 18
1054#define CLK_ACLK_ASYNCAXIS_DIS1 19
1055#define CLK_ACLK_ASYNCAXIS_DIS0 20
1056#define CLK_ACLK_ASYNCAXIM_DIS1 21
1057#define CLK_ACLK_ASYNCAXIM_DIS0 22
1058#define CLK_ACLK_ASYNCAXIM_ISP2P 23
1059#define CLK_ACLK_ASYNCAXIM_ISP1P 24
1060#define CLK_ACLK_AHB2APB_ISP2P 25
1061#define CLK_ACLK_AHB2APB_ISP1P 26
1062#define CLK_ACLK_AXI2APB_ISP2P 27
1063#define CLK_ACLK_AXI2APB_ISP1P 28
1064#define CLK_ACLK_XIU_ISPEX1 29
1065#define CLK_ACLK_XIU_ISPEX0 30
1066#define CLK_ACLK_ISPND_400 31
1067#define CLK_ACLK_SMMU_SCALERP 32
1068#define CLK_ACLK_SMMU_3DNR 33
1069#define CLK_ACLK_SMMU_DIS1 34
1070#define CLK_ACLK_SMMU_DIS0 35
1071#define CLK_ACLK_SMMU_SCALERC 36
1072#define CLK_ACLK_SMMU_DRC 37
1073#define CLK_ACLK_SMMU_ISP 38
1074#define CLK_ACLK_BTS_SCALERP 39
1075#define CLK_ACLK_BTS_3DR 40
1076#define CLK_ACLK_BTS_DIS1 41
1077#define CLK_ACLK_BTS_DIS0 42
1078#define CLK_ACLK_BTS_SCALERC 43
1079#define CLK_ACLK_BTS_DRC 44
1080#define CLK_ACLK_BTS_ISP 45
1081#define CLK_PCLK_SMMU_SCALERP 46
1082#define CLK_PCLK_SMMU_3DNR 47
1083#define CLK_PCLK_SMMU_DIS1 48
1084#define CLK_PCLK_SMMU_DIS0 49
1085#define CLK_PCLK_SMMU_SCALERC 50
1086#define CLK_PCLK_SMMU_DRC 51
1087#define CLK_PCLK_SMMU_ISP 52
1088#define CLK_PCLK_BTS_SCALERP 53
1089#define CLK_PCLK_BTS_3DNR 54
1090#define CLK_PCLK_BTS_DIS1 55
1091#define CLK_PCLK_BTS_DIS0 56
1092#define CLK_PCLK_BTS_SCALERC 57
1093#define CLK_PCLK_BTS_DRC 58
1094#define CLK_PCLK_BTS_ISP 59
1095#define CLK_PCLK_ASYNCAXI_DIS1 60
1096#define CLK_PCLK_ASYNCAXI_DIS0 61
1097#define CLK_PCLK_PMU_ISP 62
1098#define CLK_PCLK_SYSREG_ISP 63
1099#define CLK_PCLK_CMU_ISP_LOCAL 64
1100#define CLK_PCLK_SCALERP 65
1101#define CLK_PCLK_3DNR 66
1102#define CLK_PCLK_DIS_CORE 67
1103#define CLK_PCLK_DIS 68
1104#define CLK_PCLK_SCALERC 69
1105#define CLK_PCLK_DRC 70
1106#define CLK_PCLK_ISP 71
1107#define CLK_SCLK_PIXELASYNCS_DIS 72
1108#define CLK_SCLK_PIXELASYNCM_DIS 73
1109#define CLK_SCLK_PIXELASYNCS_SCALERP 74
1110#define CLK_SCLK_PIXELASYNCM_ISPD 75
1111#define CLK_SCLK_PIXELASYNCS_ISPC 76
1112#define CLK_SCLK_PIXELASYNCM_ISPC 77
1113
1114#define ISP_NR_CLK 78
1115
1029#endif /* _DT_BINDINGS_CLOCK_EXYNOS5433_H */ 1116#endif /* _DT_BINDINGS_CLOCK_EXYNOS5433_H */