summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/as3525/system-as3525.c11
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)
453void set_cpu_frequency(long frequency) 453void 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