aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/ux500/u8500_clk.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/ux500/u8500_clk.c')
-rw-r--r--drivers/clk/ux500/u8500_clk.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/drivers/clk/ux500/u8500_clk.c b/drivers/clk/ux500/u8500_clk.c
index e2c17d187d98..7d0e0258f204 100644
--- a/drivers/clk/ux500/u8500_clk.c
+++ b/drivers/clk/ux500/u8500_clk.c
@@ -170,10 +170,11 @@ void u8500_clk_init(void)
170 clk_register_clkdev(clk, NULL, "mtu0"); 170 clk_register_clkdev(clk, NULL, "mtu0");
171 clk_register_clkdev(clk, NULL, "mtu1"); 171 clk_register_clkdev(clk, NULL, "mtu1");
172 172
173 clk = clk_reg_prcmu_gate("sdmmcclk", NULL, PRCMU_SDMMCCLK, CLK_IS_ROOT); 173 clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL, PRCMU_SDMMCCLK,
174 100000000,
175 CLK_IS_ROOT|CLK_SET_RATE_GATE);
174 clk_register_clkdev(clk, NULL, "sdmmc"); 176 clk_register_clkdev(clk, NULL, "sdmmc");
175 177
176
177 clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk", 178 clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
178 PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE); 179 PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
179 clk_register_clkdev(clk, "dsihs2", "mcde"); 180 clk_register_clkdev(clk, "dsihs2", "mcde");
@@ -205,16 +206,18 @@ void u8500_clk_init(void)
205 clk_register_clkdev(clk, "dsilp2", "dsilink.2"); 206 clk_register_clkdev(clk, "dsilp2", "dsilink.2");
206 clk_register_clkdev(clk, "dsilp2", "mcde"); 207 clk_register_clkdev(clk, "dsilp2", "mcde");
207 208
208 clk = clk_reg_prcmu_rate("smp_twd", NULL, PRCMU_ARMSS, 209 clk = clk_reg_prcmu_scalable_rate("armss", NULL,
209 CLK_IS_ROOT|CLK_GET_RATE_NOCACHE| 210 PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
210 CLK_IGNORE_UNUSED); 211 clk_register_clkdev(clk, "armss", NULL);
212
213 clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
214 CLK_IGNORE_UNUSED, 1, 2);
211 clk_register_clkdev(clk, NULL, "smp_twd"); 215 clk_register_clkdev(clk, NULL, "smp_twd");
212 216
213 /* 217 /*
214 * FIXME: Add special handled PRCMU clocks here: 218 * FIXME: Add special handled PRCMU clocks here:
215 * 1. clk_arm, use PRCMU_ARMCLK. 219 * 1. clkout0yuv, use PRCMU as parent + need regulator + pinctrl.
216 * 2. clkout0yuv, use PRCMU as parent + need regulator + pinctrl. 220 * 2. ab9540_clkout1yuv, see clkout0yuv
217 * 3. ab9540_clkout1yuv, see clkout0yuv
218 */ 221 */
219 222
220 /* PRCC P-clocks */ 223 /* PRCC P-clocks */
@@ -323,7 +326,7 @@ void u8500_clk_init(void)
323 clk_register_clkdev(clk, NULL, "gpioblock1"); 326 clk_register_clkdev(clk, NULL, "gpioblock1");
324 327
325 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", U8500_CLKRST2_BASE, 328 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", U8500_CLKRST2_BASE,
326 BIT(11), 0); 329 BIT(12), 0);
327 330
328 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", U8500_CLKRST3_BASE, 331 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", U8500_CLKRST3_BASE,
329 BIT(0), 0); 332 BIT(0), 0);
@@ -347,6 +350,8 @@ void u8500_clk_init(void)
347 350
348 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", U8500_CLKRST3_BASE, 351 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", U8500_CLKRST3_BASE,
349 BIT(5), 0); 352 BIT(5), 0);
353 clk_register_clkdev(clk, "apb_pclk", "ske");
354 clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad");
350 355
351 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", U8500_CLKRST3_BASE, 356 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", U8500_CLKRST3_BASE,
352 BIT(6), 0); 357 BIT(6), 0);
@@ -375,6 +380,7 @@ void u8500_clk_init(void)
375 380
376 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", U8500_CLKRST6_BASE, 381 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", U8500_CLKRST6_BASE,
377 BIT(0), 0); 382 BIT(0), 0);
383 clk_register_clkdev(clk, "apb_pclk", "rng");
378 384
379 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", U8500_CLKRST6_BASE, 385 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", U8500_CLKRST6_BASE,
380 BIT(1), 0); 386 BIT(1), 0);
@@ -503,6 +509,8 @@ void u8500_clk_init(void)
503 509
504 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k", 510 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
505 U8500_CLKRST3_BASE, BIT(5), CLK_SET_RATE_GATE); 511 U8500_CLKRST3_BASE, BIT(5), CLK_SET_RATE_GATE);
512 clk_register_clkdev(clk, NULL, "ske");
513 clk_register_clkdev(clk, NULL, "nmk-ske-keypad");
506 514
507 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk", 515 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
508 U8500_CLKRST3_BASE, BIT(6), CLK_SET_RATE_GATE); 516 U8500_CLKRST3_BASE, BIT(6), CLK_SET_RATE_GATE);
@@ -515,5 +523,5 @@ void u8500_clk_init(void)
515 /* Periph6 */ 523 /* Periph6 */
516 clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk", 524 clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
517 U8500_CLKRST6_BASE, BIT(0), CLK_SET_RATE_GATE); 525 U8500_CLKRST6_BASE, BIT(0), CLK_SET_RATE_GATE);
518 526 clk_register_clkdev(clk, NULL, "rng");
519} 527}