summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Halpin <jack.halpin@gmail.com>2010-01-12 23:56:59 +0000
committerJack Halpin <jack.halpin@gmail.com>2010-01-12 23:56:59 +0000
commitfefafebed6879d99af8fc5b885e79e8ee04e67a2 (patch)
treecc204b2f814add5fca5aa1bfc48e67102bd496fb
parent980c7089e84a8e1e84b9ebade91cb2a00baf75ff (diff)
downloadrockbox-fefafebed6879d99af8fc5b885e79e8ee04e67a2.zip
rockbox-fefafebed6879d99af8fc5b885e79e8ee04e67a2.tar.gz
rockbox-fefafebed6879d99af8fc5b885e79e8ee04e67a2.tar.bz2
rockbox-fefafebed6879d99af8fc5b885e79e8ee04e67a2.tar.xz
SansaAMS: Disable voltage scaling.
Voltage scaling seems to be causing various problems mostly related to issues with the uSD cards. The increased runtime benefit only amounts to ~30 minutes as currently implemented so it seems prudent to disable it once again at this time. We still don't understand why the core voltage being lowered would impact the uSD card but in fact it does. The internal cards do not seem to have problems. I have simply #ifdef'd the voltage scaling code with HAVE_ADJUSTABLE_CPU_VOLTAGE so if you want to use voltage scaling simply define that and the voltage scaling code should run. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24217 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/ata_sd_as3525.c11
-rw-r--r--firmware/target/arm/as3525/system-as3525.c4
2 files changed, 10 insertions, 5 deletions
diff --git a/firmware/target/arm/as3525/ata_sd_as3525.c b/firmware/target/arm/as3525/ata_sd_as3525.c
index 99bf668..0afe735 100644
--- a/firmware/target/arm/as3525/ata_sd_as3525.c
+++ b/firmware/target/arm/as3525/ata_sd_as3525.c
@@ -854,7 +854,7 @@ void sd_enable(bool on)
extern int buttonlight_is_on;
#endif
-#ifdef HAVE_HOTSWAP
+#if defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE)
static bool cpu_boosted = false;
#endif
@@ -880,23 +880,24 @@ void sd_enable(bool on)
#endif /* HAVE_MULTIDRIVE */
sd_enabled = true;
-#ifdef HAVE_HOTSWAP
+#if defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE)
if(card_detect_target()) /* If SD card present Boost cpu for voltage */
{
cpu_boosted = true;
cpu_boost(true);
}
-#endif
+#endif /* defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE) */
}
else
{
-#ifdef HAVE_HOTSWAP
+#if defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE)
if(cpu_boosted)
{
cpu_boost(false);
cpu_boosted = false;
}
-#endif
+#endif /* defined(HAVE_HOTSWAP) && defined (HAVE_ADJUSTABLE_CPU_VOLTAGE) */
+
sd_enabled = false;
#ifdef HAVE_MULTIDRIVE
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c
index 13b406a..2e6b6d4 100644
--- a/firmware/target/arm/as3525/system-as3525.c
+++ b/firmware/target/arm/as3525/system-as3525.c
@@ -369,12 +369,14 @@ void set_cpu_frequency(long frequency)
{
if(frequency == CPUFREQ_MAX)
{
+#ifdef HAVE_ADJUSTABLE_CPU_VOLTAGE
/* Increasing frequency so boost voltage before change */
ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_20));
/* Some players run a bit low so use 1.175 volts instead of 1.20 */
/* Wait for voltage to be at least 1.175v before making fclk > 200 MHz */
while(adc_read(ADC_CVDD) < 470); /* 470 * .0025 = 1.175V */
+#endif /* HAVE_ADJUSTABLE_CPU_VOLTAGE */
asm volatile(
"mrc p15, 0, r0, c1, c0 \n"
@@ -399,8 +401,10 @@ void set_cpu_frequency(long frequency)
"mcr p15, 0, r0, c1, c0 \n"
: : : "r0" );
+#ifdef HAVE_ADJUSTABLE_CPU_VOLTAGE
/* Decreasing frequency so reduce voltage after change */
ascodec_write(AS3514_CVDD_DCDC3, (AS314_CP_DCDC3_SETTING | CVDD_1_10));
+#endif /* HAVE_ADJUSTABLE_CPU_VOLTAGE */
cpu_frequency = CPUFREQ_NORMAL;
}