Index: firmware/target/arm/as3525/system-as3525.c =================================================================== --- firmware/target/arm/as3525/system-as3525.c (revision 21314) +++ firmware/target/arm/as3525/system-as3525.c (working copy) @@ -277,6 +277,8 @@ "mcr p15, 0, r0, c1, c0 \n" : : : "r0" ); + + #ifdef BOOTLOADER sdram_init(); #endif /* BOOTLOADER */ @@ -299,6 +301,11 @@ * We don't need the power button in the bootloader. */ ascodec_write(AS3514_CVDD_DCDC3, ascodec_read(AS3514_CVDD_DCDC3) & (1<<2)); +#if CPUFREQ_MAX < 200000000 + /* Lower maximum frequency allows static lower core voltage */ + ascodec_write(AS3514_CVDD_DCDC3, ascodec_read(AS3514_CVDD_DCDC3) | (3<<0)); +#endif + #ifdef CONFIG_TUNER fmradio_i2c_init(); #endif @@ -331,7 +338,11 @@ { if(frequency == CPUFREQ_MAX) { - +#if CPUFREQ_MAX >= 200000000 + /* Increasing frequency so boost voltage before change */ + ascodec_write(AS3514_CVDD_DCDC3, + ascodec_read(AS3514_CVDD_DCDC3) & ~(3<<0)); +#endif asm volatile( "mrc p15, 0, r0, c1, c0 \n" @@ -355,6 +366,11 @@ "mcr p15, 0, r0, c1, c0 \n" : : : "r0" ); +#if CPUFREQ_MAX >= 200000000 + /* Decreasing frequency so reduce voltage after change */ + ascodec_write(AS3514_CVDD_DCDC3, + ascodec_read(AS3514_CVDD_DCDC3) | (3<<0)); +#endif cpu_frequency = CPUFREQ_NORMAL; } } Index: firmware/target/arm/as3525/debug-as3525.c =================================================================== --- firmware/target/arm/as3525/debug-as3525.c (revision 21314) +++ firmware/target/arm/as3525/debug-as3525.c (working copy) @@ -28,6 +28,7 @@ #include "sprintf.h" #include "cpu.h" #include "pl180.h" +#include "ascodec-target.h" #define _DEBUG_PRINTF(a,varargs...) \ snprintf(buf, sizeof(buf), (a), ##varargs); lcd_puts(0,line++,buf) @@ -282,7 +283,8 @@ _DEBUG_PRINTF("SD :%3dkHz %3dkHz", AS3525_SD_IDENT_FREQ/1000,calc_freq(CLK_SD_IDENT_NAND)/1000); _DEBUG_PRINTF("MSD :%3dkHz %3dkHz", AS3525_SD_IDENT_FREQ/1000,calc_freq(CLK_SD_IDENT_MSD)/1000); _DEBUG_PRINTF("USB: %3dMHz", calc_freq(CLK_USB)/1000000); - _DEBUG_PRINTF("MMU: %s", (read_cp15() & CP15_MMU) ? " op" : "nop"); + _DEBUG_PRINTF("MMU: %s CVDDp:%s", (read_cp15() & CP15_MMU) ? " op" : "nop", + (ascodec_read(AS3514_CVDD_DCDC3) & (3<<0)) ? " low": "high"); _DEBUG_PRINTF("Icache:%s Dcache:%s",(read_cp15() & CP15_IC) ? " op" : "nop", (read_cp15() & CP15_DC) ? " op" : "nop");