diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/as3525/system-as3525.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c index 2b3e163611..47cb465c62 100644 --- a/firmware/target/arm/as3525/system-as3525.c +++ b/firmware/target/arm/as3525/system-as3525.c | |||
@@ -453,34 +453,29 @@ void set_cpu_frequency(long frequency) | |||
453 | void set_cpu_frequency(long frequency) | 453 | void set_cpu_frequency(long frequency) |
454 | { | 454 | { |
455 | int oldstatus = disable_irq_save(); | 455 | int oldstatus = disable_irq_save(); |
456 | int delay; | 456 | |
457 | /* We only have 2 settings */ | ||
458 | cpu_frequency = (frequency == CPUFREQ_MAX) ? frequency : CPUFREQ_NORMAL; | ||
457 | 459 | ||
458 | if(frequency == CPUFREQ_MAX) | 460 | if(frequency == CPUFREQ_MAX) |
459 | { | 461 | { |
460 | /* Change PCLK while FCLK is low, so it doesn't go too high */ | 462 | /* Change PCLK while FCLK is low, so it doesn't go too high */ |
461 | CGU_PERI = (CGU_PERI & ~(0xF << 2)) | (AS3525_PCLK_DIV0 << 2); | 463 | CGU_PERI = (CGU_PERI & ~(0xF << 2)) | (AS3525_PCLK_DIV0 << 2); |
462 | 464 | ||
463 | delay = 40; while(delay--) asm("nop"); | ||
464 | |||
465 | CGU_PROC = ((AS3525_FCLK_POSTDIV << 4) | | 465 | CGU_PROC = ((AS3525_FCLK_POSTDIV << 4) | |
466 | (AS3525_FCLK_PREDIV << 2) | | 466 | (AS3525_FCLK_PREDIV << 2) | |
467 | AS3525_FCLK_SEL); | 467 | AS3525_FCLK_SEL); |
468 | } | 468 | } |
469 | else | 469 | else |
470 | { | 470 | { |
471 | frequency = CPUFREQ_NORMAL; /* We only have 2 settings */ | ||
472 | |||
473 | CGU_PROC = ((AS3525_FCLK_POSTDIV_UNBOOSTED << 4) | | 471 | CGU_PROC = ((AS3525_FCLK_POSTDIV_UNBOOSTED << 4) | |
474 | (AS3525_FCLK_PREDIV << 2) | | 472 | (AS3525_FCLK_PREDIV << 2) | |
475 | AS3525_FCLK_SEL); | 473 | AS3525_FCLK_SEL); |
476 | 474 | ||
477 | /* Change PCLK after FCLK is low, so it doesn't go too high */ | 475 | /* Change PCLK after FCLK is low, so it doesn't go too high */ |
478 | CGU_PERI = (CGU_PERI & ~(0xF << 2)) | (AS3525_PCLK_DIV0_UNBOOSTED << 2); | 476 | CGU_PERI = (CGU_PERI & ~(0xF << 2)) | (AS3525_PCLK_DIV0_UNBOOSTED << 2); |
479 | delay = 40; while(delay--) asm("nop"); | ||
480 | } | 477 | } |
481 | 478 | ||
482 | cpu_frequency = frequency; | ||
483 | |||
484 | restore_irq(oldstatus); | 479 | restore_irq(oldstatus); |
485 | } | 480 | } |
486 | #endif | 481 | #endif |