forked from len0rd/rockbox
Better boost calculation for multifrequency CPUs. Frequencies between minimum and maximum count as fractional boost.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29115 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
921ffe7111
commit
6d2e7769e2
2 changed files with 18 additions and 3 deletions
|
|
@ -272,13 +272,18 @@ static bool dbg_audio_thread(void)
|
||||||
}
|
}
|
||||||
#endif /* !SIMULATOR */
|
#endif /* !SIMULATOR */
|
||||||
#else /* CONFIG_CODEC == SWCODEC */
|
#else /* CONFIG_CODEC == SWCODEC */
|
||||||
static unsigned int ticks, boost_ticks, freq_sum;
|
static unsigned int ticks, freq_sum;
|
||||||
|
#ifndef CPU_MULTI_FREQUENCY
|
||||||
|
static unsigned int boost_ticks;
|
||||||
|
#endif
|
||||||
|
|
||||||
static void dbg_audio_task(void)
|
static void dbg_audio_task(void)
|
||||||
{
|
{
|
||||||
#ifdef CPUFREQ_NORMAL
|
#ifdef CPUFREQ_NORMAL
|
||||||
|
#ifndef CPU_MULTI_FREQUENCY
|
||||||
if(FREQ > CPUFREQ_NORMAL)
|
if(FREQ > CPUFREQ_NORMAL)
|
||||||
boost_ticks++;
|
boost_ticks++;
|
||||||
|
#endif
|
||||||
freq_sum += FREQ/1000000; /* in MHz */
|
freq_sum += FREQ/1000000; /* in MHz */
|
||||||
#endif
|
#endif
|
||||||
ticks++;
|
ticks++;
|
||||||
|
|
@ -296,7 +301,10 @@ static bool dbg_buffering_thread(void)
|
||||||
size_t filebuflen = audio_get_filebuflen();
|
size_t filebuflen = audio_get_filebuflen();
|
||||||
/* This is a size_t, but call it a long so it puts a - when it's bad. */
|
/* This is a size_t, but call it a long so it puts a - when it's bad. */
|
||||||
|
|
||||||
ticks = boost_ticks = freq_sum = 0;
|
#ifndef CPU_MULTI_FREQUENCY
|
||||||
|
boost_ticks = 0;
|
||||||
|
#endif
|
||||||
|
ticks = freq_sum = 0;
|
||||||
|
|
||||||
tick_add_task(dbg_audio_task);
|
tick_add_task(dbg_audio_task);
|
||||||
|
|
||||||
|
|
@ -378,8 +386,13 @@ static bool dbg_buffering_thread(void)
|
||||||
|
|
||||||
if (ticks > 0)
|
if (ticks > 0)
|
||||||
{
|
{
|
||||||
int boostquota = boost_ticks * 1000 / ticks; /* in 0.1 % */
|
|
||||||
int avgclock = freq_sum * 10 / ticks; /* in 100 kHz */
|
int avgclock = freq_sum * 10 / ticks; /* in 100 kHz */
|
||||||
|
#ifdef CPU_MULTI_FREQUENCY
|
||||||
|
int boostquota = (avgclock * 100 - CPUFREQ_NORMAL/1000) /
|
||||||
|
((CPUFREQ_MAX - CPUFREQ_NORMAL) / 1000000); /* in 0.1 % */
|
||||||
|
#else
|
||||||
|
int boostquota = boost_ticks * 1000 / ticks; /* in 0.1 % */
|
||||||
|
#endif
|
||||||
screens[i].putsf(0, line++, "boost:%3d.%d%% (%d.%dMHz)",
|
screens[i].putsf(0, line++, "boost:%3d.%d%% (%d.%dMHz)",
|
||||||
boostquota/10, boostquota%10, avgclock/10, avgclock%10);
|
boostquota/10, boostquota%10, avgclock/10, avgclock%10);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@
|
||||||
/* Overdrive mode */
|
/* Overdrive mode */
|
||||||
#define CPUFREQ_MAX 528000000
|
#define CPUFREQ_MAX 528000000
|
||||||
|
|
||||||
|
#define CPU_MULTI_FREQUENCY 3
|
||||||
|
|
||||||
static inline void udelay(unsigned long usecs)
|
static inline void udelay(unsigned long usecs)
|
||||||
{
|
{
|
||||||
unsigned long stop = GPTCNT + usecs;
|
unsigned long stop = GPTCNT + usecs;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue