summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/s5pv210-cpufreq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpufreq/s5pv210-cpufreq.c')
-rw-r--r--drivers/cpufreq/s5pv210-cpufreq.c68
1 files changed, 34 insertions, 34 deletions
diff --git a/drivers/cpufreq/s5pv210-cpufreq.c b/drivers/cpufreq/s5pv210-cpufreq.c
index 9e07588ea9f5..f82074eea779 100644
--- a/drivers/cpufreq/s5pv210-cpufreq.c
+++ b/drivers/cpufreq/s5pv210-cpufreq.c
@@ -220,7 +220,7 @@ static void s5pv210_set_refresh(enum s5pv210_dmc_port ch, unsigned long freq)
220 220
221 tmp1 /= tmp; 221 tmp1 /= tmp;
222 222
223 __raw_writel(tmp1, reg); 223 writel_relaxed(tmp1, reg);
224} 224}
225 225
226static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index) 226static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
@@ -296,29 +296,29 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
296 * 1. Temporary Change divider for MFC and G3D 296 * 1. Temporary Change divider for MFC and G3D
297 * SCLKA2M(200/1=200)->(200/4=50)Mhz 297 * SCLKA2M(200/1=200)->(200/4=50)Mhz
298 */ 298 */
299 reg = __raw_readl(S5P_CLK_DIV2); 299 reg = readl_relaxed(S5P_CLK_DIV2);
300 reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK); 300 reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK);
301 reg |= (3 << S5P_CLKDIV2_G3D_SHIFT) | 301 reg |= (3 << S5P_CLKDIV2_G3D_SHIFT) |
302 (3 << S5P_CLKDIV2_MFC_SHIFT); 302 (3 << S5P_CLKDIV2_MFC_SHIFT);
303 __raw_writel(reg, S5P_CLK_DIV2); 303 writel_relaxed(reg, S5P_CLK_DIV2);
304 304
305 /* For MFC, G3D dividing */ 305 /* For MFC, G3D dividing */
306 do { 306 do {
307 reg = __raw_readl(S5P_CLKDIV_STAT0); 307 reg = readl_relaxed(S5P_CLKDIV_STAT0);
308 } while (reg & ((1 << 16) | (1 << 17))); 308 } while (reg & ((1 << 16) | (1 << 17)));
309 309
310 /* 310 /*
311 * 2. Change SCLKA2M(200Mhz)to SCLKMPLL in MFC_MUX, G3D MUX 311 * 2. Change SCLKA2M(200Mhz)to SCLKMPLL in MFC_MUX, G3D MUX
312 * (200/4=50)->(667/4=166)Mhz 312 * (200/4=50)->(667/4=166)Mhz
313 */ 313 */
314 reg = __raw_readl(S5P_CLK_SRC2); 314 reg = readl_relaxed(S5P_CLK_SRC2);
315 reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK); 315 reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK);
316 reg |= (1 << S5P_CLKSRC2_G3D_SHIFT) | 316 reg |= (1 << S5P_CLKSRC2_G3D_SHIFT) |
317 (1 << S5P_CLKSRC2_MFC_SHIFT); 317 (1 << S5P_CLKSRC2_MFC_SHIFT);
318 __raw_writel(reg, S5P_CLK_SRC2); 318 writel_relaxed(reg, S5P_CLK_SRC2);
319 319
320 do { 320 do {
321 reg = __raw_readl(S5P_CLKMUX_STAT1); 321 reg = readl_relaxed(S5P_CLKMUX_STAT1);
322 } while (reg & ((1 << 7) | (1 << 3))); 322 } while (reg & ((1 << 7) | (1 << 3)));
323 323
324 /* 324 /*
@@ -330,19 +330,19 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
330 s5pv210_set_refresh(DMC1, 133000); 330 s5pv210_set_refresh(DMC1, 133000);
331 331
332 /* 4. SCLKAPLL -> SCLKMPLL */ 332 /* 4. SCLKAPLL -> SCLKMPLL */
333 reg = __raw_readl(S5P_CLK_SRC0); 333 reg = readl_relaxed(S5P_CLK_SRC0);
334 reg &= ~(S5P_CLKSRC0_MUX200_MASK); 334 reg &= ~(S5P_CLKSRC0_MUX200_MASK);
335 reg |= (0x1 << S5P_CLKSRC0_MUX200_SHIFT); 335 reg |= (0x1 << S5P_CLKSRC0_MUX200_SHIFT);
336 __raw_writel(reg, S5P_CLK_SRC0); 336 writel_relaxed(reg, S5P_CLK_SRC0);
337 337
338 do { 338 do {
339 reg = __raw_readl(S5P_CLKMUX_STAT0); 339 reg = readl_relaxed(S5P_CLKMUX_STAT0);
340 } while (reg & (0x1 << 18)); 340 } while (reg & (0x1 << 18));
341 341
342 } 342 }
343 343
344 /* Change divider */ 344 /* Change divider */
345 reg = __raw_readl(S5P_CLK_DIV0); 345 reg = readl_relaxed(S5P_CLK_DIV0);
346 346
347 reg &= ~(S5P_CLKDIV0_APLL_MASK | S5P_CLKDIV0_A2M_MASK | 347 reg &= ~(S5P_CLKDIV0_APLL_MASK | S5P_CLKDIV0_A2M_MASK |
348 S5P_CLKDIV0_HCLK200_MASK | S5P_CLKDIV0_PCLK100_MASK | 348 S5P_CLKDIV0_HCLK200_MASK | S5P_CLKDIV0_PCLK100_MASK |
@@ -358,25 +358,25 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
358 (clkdiv_val[index][6] << S5P_CLKDIV0_HCLK133_SHIFT) | 358 (clkdiv_val[index][6] << S5P_CLKDIV0_HCLK133_SHIFT) |
359 (clkdiv_val[index][7] << S5P_CLKDIV0_PCLK66_SHIFT)); 359 (clkdiv_val[index][7] << S5P_CLKDIV0_PCLK66_SHIFT));
360 360
361 __raw_writel(reg, S5P_CLK_DIV0); 361 writel_relaxed(reg, S5P_CLK_DIV0);
362 362
363 do { 363 do {
364 reg = __raw_readl(S5P_CLKDIV_STAT0); 364 reg = readl_relaxed(S5P_CLKDIV_STAT0);
365 } while (reg & 0xff); 365 } while (reg & 0xff);
366 366
367 /* ARM MCS value changed */ 367 /* ARM MCS value changed */
368 reg = __raw_readl(S5P_ARM_MCS_CON); 368 reg = readl_relaxed(S5P_ARM_MCS_CON);
369 reg &= ~0x3; 369 reg &= ~0x3;
370 if (index >= L3) 370 if (index >= L3)
371 reg |= 0x3; 371 reg |= 0x3;
372 else 372 else
373 reg |= 0x1; 373 reg |= 0x1;
374 374
375 __raw_writel(reg, S5P_ARM_MCS_CON); 375 writel_relaxed(reg, S5P_ARM_MCS_CON);
376 376
377 if (pll_changing) { 377 if (pll_changing) {
378 /* 5. Set Lock time = 30us*24Mhz = 0x2cf */ 378 /* 5. Set Lock time = 30us*24Mhz = 0x2cf */
379 __raw_writel(0x2cf, S5P_APLL_LOCK); 379 writel_relaxed(0x2cf, S5P_APLL_LOCK);
380 380
381 /* 381 /*
382 * 6. Turn on APLL 382 * 6. Turn on APLL
@@ -384,12 +384,12 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
384 * 6-2. Wait untile the PLL is locked 384 * 6-2. Wait untile the PLL is locked
385 */ 385 */
386 if (index == L0) 386 if (index == L0)
387 __raw_writel(APLL_VAL_1000, S5P_APLL_CON); 387 writel_relaxed(APLL_VAL_1000, S5P_APLL_CON);
388 else 388 else
389 __raw_writel(APLL_VAL_800, S5P_APLL_CON); 389 writel_relaxed(APLL_VAL_800, S5P_APLL_CON);
390 390
391 do { 391 do {
392 reg = __raw_readl(S5P_APLL_CON); 392 reg = readl_relaxed(S5P_APLL_CON);
393 } while (!(reg & (0x1 << 29))); 393 } while (!(reg & (0x1 << 29)));
394 394
395 /* 395 /*
@@ -397,39 +397,39 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
397 * to SCLKA2M(200Mhz) in MFC_MUX and G3D MUX 397 * to SCLKA2M(200Mhz) in MFC_MUX and G3D MUX
398 * (667/4=166)->(200/4=50)Mhz 398 * (667/4=166)->(200/4=50)Mhz
399 */ 399 */
400 reg = __raw_readl(S5P_CLK_SRC2); 400 reg = readl_relaxed(S5P_CLK_SRC2);
401 reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK); 401 reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK);
402 reg |= (0 << S5P_CLKSRC2_G3D_SHIFT) | 402 reg |= (0 << S5P_CLKSRC2_G3D_SHIFT) |
403 (0 << S5P_CLKSRC2_MFC_SHIFT); 403 (0 << S5P_CLKSRC2_MFC_SHIFT);
404 __raw_writel(reg, S5P_CLK_SRC2); 404 writel_relaxed(reg, S5P_CLK_SRC2);
405 405
406 do { 406 do {
407 reg = __raw_readl(S5P_CLKMUX_STAT1); 407 reg = readl_relaxed(S5P_CLKMUX_STAT1);
408 } while (reg & ((1 << 7) | (1 << 3))); 408 } while (reg & ((1 << 7) | (1 << 3)));
409 409
410 /* 410 /*
411 * 8. Change divider for MFC and G3D 411 * 8. Change divider for MFC and G3D
412 * (200/4=50)->(200/1=200)Mhz 412 * (200/4=50)->(200/1=200)Mhz
413 */ 413 */
414 reg = __raw_readl(S5P_CLK_DIV2); 414 reg = readl_relaxed(S5P_CLK_DIV2);
415 reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK); 415 reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK);
416 reg |= (clkdiv_val[index][10] << S5P_CLKDIV2_G3D_SHIFT) | 416 reg |= (clkdiv_val[index][10] << S5P_CLKDIV2_G3D_SHIFT) |
417 (clkdiv_val[index][9] << S5P_CLKDIV2_MFC_SHIFT); 417 (clkdiv_val[index][9] << S5P_CLKDIV2_MFC_SHIFT);
418 __raw_writel(reg, S5P_CLK_DIV2); 418 writel_relaxed(reg, S5P_CLK_DIV2);
419 419
420 /* For MFC, G3D dividing */ 420 /* For MFC, G3D dividing */
421 do { 421 do {
422 reg = __raw_readl(S5P_CLKDIV_STAT0); 422 reg = readl_relaxed(S5P_CLKDIV_STAT0);
423 } while (reg & ((1 << 16) | (1 << 17))); 423 } while (reg & ((1 << 16) | (1 << 17)));
424 424
425 /* 9. Change MPLL to APLL in MSYS_MUX */ 425 /* 9. Change MPLL to APLL in MSYS_MUX */
426 reg = __raw_readl(S5P_CLK_SRC0); 426 reg = readl_relaxed(S5P_CLK_SRC0);
427 reg &= ~(S5P_CLKSRC0_MUX200_MASK); 427 reg &= ~(S5P_CLKSRC0_MUX200_MASK);
428 reg |= (0x0 << S5P_CLKSRC0_MUX200_SHIFT); 428 reg |= (0x0 << S5P_CLKSRC0_MUX200_SHIFT);
429 __raw_writel(reg, S5P_CLK_SRC0); 429 writel_relaxed(reg, S5P_CLK_SRC0);
430 430
431 do { 431 do {
432 reg = __raw_readl(S5P_CLKMUX_STAT0); 432 reg = readl_relaxed(S5P_CLKMUX_STAT0);
433 } while (reg & (0x1 << 18)); 433 } while (reg & (0x1 << 18));
434 434
435 /* 435 /*
@@ -446,13 +446,13 @@ static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
446 * and memory refresh parameter should be changed 446 * and memory refresh parameter should be changed
447 */ 447 */
448 if (bus_speed_changing) { 448 if (bus_speed_changing) {
449 reg = __raw_readl(S5P_CLK_DIV6); 449 reg = readl_relaxed(S5P_CLK_DIV6);
450 reg &= ~S5P_CLKDIV6_ONEDRAM_MASK; 450 reg &= ~S5P_CLKDIV6_ONEDRAM_MASK;
451 reg |= (clkdiv_val[index][8] << S5P_CLKDIV6_ONEDRAM_SHIFT); 451 reg |= (clkdiv_val[index][8] << S5P_CLKDIV6_ONEDRAM_SHIFT);
452 __raw_writel(reg, S5P_CLK_DIV6); 452 writel_relaxed(reg, S5P_CLK_DIV6);
453 453
454 do { 454 do {
455 reg = __raw_readl(S5P_CLKDIV_STAT1); 455 reg = readl_relaxed(S5P_CLKDIV_STAT1);
456 } while (reg & (1 << 15)); 456 } while (reg & (1 << 15));
457 457
458 /* Reconfigure DRAM refresh counter value */ 458 /* Reconfigure DRAM refresh counter value */
@@ -492,7 +492,7 @@ static int check_mem_type(void __iomem *dmc_reg)
492{ 492{
493 unsigned long val; 493 unsigned long val;
494 494
495 val = __raw_readl(dmc_reg + 0x4); 495 val = readl_relaxed(dmc_reg + 0x4);
496 val = (val & (0xf << 8)); 496 val = (val & (0xf << 8));
497 497
498 return val >> 8; 498 return val >> 8;
@@ -537,10 +537,10 @@ static int s5pv210_cpu_init(struct cpufreq_policy *policy)
537 } 537 }
538 538
539 /* Find current refresh counter and frequency each DMC */ 539 /* Find current refresh counter and frequency each DMC */
540 s5pv210_dram_conf[0].refresh = (__raw_readl(dmc_base[0] + 0x30) * 1000); 540 s5pv210_dram_conf[0].refresh = (readl_relaxed(dmc_base[0] + 0x30) * 1000);
541 s5pv210_dram_conf[0].freq = clk_get_rate(dmc0_clk); 541 s5pv210_dram_conf[0].freq = clk_get_rate(dmc0_clk);
542 542
543 s5pv210_dram_conf[1].refresh = (__raw_readl(dmc_base[1] + 0x30) * 1000); 543 s5pv210_dram_conf[1].refresh = (readl_relaxed(dmc_base[1] + 0x30) * 1000);
544 s5pv210_dram_conf[1].freq = clk_get_rate(dmc1_clk); 544 s5pv210_dram_conf[1].freq = clk_get_rate(dmc1_clk);
545 545
546 policy->suspend_freq = SLEEP_FREQ; 546 policy->suspend_freq = SLEEP_FREQ;