diff options
Diffstat (limited to 'drivers/cpufreq/s5pv210-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/s5pv210-cpufreq.c | 68 |
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 | ||
226 | static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index) | 226 | static 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; |