diff options
author | Jack Halpin <jack.halpin@gmail.com> | 2009-10-15 19:48:26 +0000 |
---|---|---|
committer | Jack Halpin <jack.halpin@gmail.com> | 2009-10-15 19:48:26 +0000 |
commit | 562e41bae5b76abd49eceebf8324a445a4b82450 (patch) | |
tree | d74f03cbb2108120db6a77ceda27f8650a3b00d4 /firmware/target/arm/as3525/system-as3525.c | |
parent | 2b9483011287215903c9766472195f325561a0e6 (diff) | |
download | rockbox-562e41bae5b76abd49eceebf8324a445a4b82450.tar.gz rockbox-562e41bae5b76abd49eceebf8324a445a4b82450.zip |
AMS Sansa: FS#10669 Reimplement Voltage scaling.
Reimplement voltage scaling on AMS Sansas at 1.10v during unboosted operation to improve runtimes. The voltage is now also boosted during disk access if a µSD is present. This prevents the µSD problems we saw on the last implementation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23193 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/system-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/system-as3525.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c index d68f2c4f00..ba817b4ad3 100644 --- a/firmware/target/arm/as3525/system-as3525.c +++ b/firmware/target/arm/as3525/system-as3525.c | |||
@@ -335,14 +335,13 @@ void set_cpu_frequency(long frequency) | |||
335 | { | 335 | { |
336 | if(frequency == CPUFREQ_MAX) | 336 | if(frequency == CPUFREQ_MAX) |
337 | { | 337 | { |
338 | #ifdef HAVE_ADJUSTABLE_CPU_VOLTAGE | ||
339 | /* Increasing frequency so boost voltage before change */ | 338 | /* Increasing frequency so boost voltage before change */ |
340 | ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_20)); | 339 | ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_20)); |
341 | 340 | ||
342 | /* Wait for voltage to be at least 1.20v before making fclk > 200 MHz */ | 341 | /* Wait for voltage to be at least 1.20v before making fclk > 200 MHz */ |
343 | while(adc_read(ADC_CVDD) < 480) /* 480 * .0025 = 1.20V */ | 342 | while(adc_read(ADC_CVDD) < 480) /* 480 * .0025 = 1.20V */ |
344 | ; | 343 | ; |
345 | #endif | 344 | |
346 | asm volatile( | 345 | asm volatile( |
347 | "mrc p15, 0, r0, c1, c0 \n" | 346 | "mrc p15, 0, r0, c1, c0 \n" |
348 | 347 | ||
@@ -365,10 +364,10 @@ void set_cpu_frequency(long frequency) | |||
365 | "bic r0, r0, #3<<30 \n" /* fastbus clocking */ | 364 | "bic r0, r0, #3<<30 \n" /* fastbus clocking */ |
366 | "mcr p15, 0, r0, c1, c0 \n" | 365 | "mcr p15, 0, r0, c1, c0 \n" |
367 | : : : "r0" ); | 366 | : : : "r0" ); |
368 | #ifdef HAVE_ADJUSTABLE_CPU_VOLTAGE | 367 | |
369 | /* Decreasing frequency so reduce voltage after change */ | 368 | /* Decreasing frequency so reduce voltage after change */ |
370 | ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_10)); | 369 | ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_10)); |
371 | #endif | 370 | |
372 | cpu_frequency = CPUFREQ_NORMAL; | 371 | cpu_frequency = CPUFREQ_NORMAL; |
373 | } | 372 | } |
374 | } | 373 | } |