mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 13:15:18 -05:00
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
This commit is contained in:
parent
2b94830112
commit
562e41bae5
2 changed files with 24 additions and 4 deletions
|
|
@ -812,6 +812,11 @@ void sd_enable(bool on)
|
|||
#if defined(HAVE_BUTTON_LIGHT) && defined(HAVE_MULTIDRIVE)
|
||||
extern int buttonlight_is_on;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_HOTSWAP
|
||||
static bool cpu_boosted = false;
|
||||
#endif
|
||||
|
||||
if (sd_enabled == on)
|
||||
return; /* nothing to do */
|
||||
if(on)
|
||||
|
|
@ -830,6 +835,14 @@ void sd_enable(bool on)
|
|||
CGU_IDE |= (1<<7) /* AHB interface enable */ |
|
||||
(1<<6) /* interface enable */;
|
||||
sd_enabled = true;
|
||||
|
||||
#ifdef HAVE_HOTSWAP
|
||||
if(card_detect_target()) /* If SD card present Boost cpu for voltage */
|
||||
{
|
||||
cpu_boosted = true;
|
||||
cpu_boost(true);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -844,6 +857,14 @@ void sd_enable(bool on)
|
|||
#endif /* HAVE_MULTIDRIVE */
|
||||
CGU_IDE &= ~((1<<7)|(1<<6));
|
||||
sd_enabled = false;
|
||||
|
||||
#ifdef HAVE_HOTSWAP
|
||||
if(cpu_boosted)
|
||||
{
|
||||
cpu_boost(false);
|
||||
cpu_boosted = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -335,14 +335,13 @@ 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));
|
||||
|
||||
/* Wait for voltage to be at least 1.20v before making fclk > 200 MHz */
|
||||
while(adc_read(ADC_CVDD) < 480) /* 480 * .0025 = 1.20V */
|
||||
;
|
||||
#endif
|
||||
|
||||
asm volatile(
|
||||
"mrc p15, 0, r0, c1, c0 \n"
|
||||
|
||||
|
|
@ -365,10 +364,10 @@ void set_cpu_frequency(long frequency)
|
|||
"bic r0, r0, #3<<30 \n" /* fastbus clocking */
|
||||
"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
|
||||
|
||||
cpu_frequency = CPUFREQ_NORMAL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue