From d49c810ec9c6010bf41e0ef7ebad101a79373438 Mon Sep 17 00:00:00 2001 From: Steve Bavin Date: Thu, 5 Oct 2006 10:07:03 +0000 Subject: Add CPU boost tracker to see where boosts are coming from git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11125 a1c6a512-1295-4272-9138-f99709370657 --- firmware/backlight.c | 6 +++--- firmware/common/dircache.c | 6 +++--- firmware/export/system.h | 30 +++++++++++++++++++++++++++++ firmware/pcm_record.c | 4 ++-- firmware/system.c | 48 ++++++++++++++++++++++++++++++++++++++++++---- 5 files changed, 82 insertions(+), 12 deletions(-) (limited to 'firmware') diff --git a/firmware/backlight.c b/firmware/backlight.c index cbd15ee46b..5e1f5922cd 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c @@ -288,7 +288,7 @@ static void backlight_switch(void) static void backlight_release_timer(void) { #ifdef CPU_COLDFIRE - cpu_boost(false); + cpu_boost_id(false, CPUBOOSTID_BACKLIGHT); #endif timer_unregister(); bl_timer_active = false; @@ -310,7 +310,7 @@ static void backlight_dim(int value) { #ifdef CPU_COLDFIRE /* Prevent cpu frequency changes while dimming. */ - cpu_boost(true); + cpu_boost_id(true, CPUBOOSTID_BACKLIGHT); #endif bl_timer_active = true; } @@ -547,7 +547,7 @@ void backlight_thread(void) #if defined(HAVE_BACKLIGHT_PWM_FADING) && defined(CPU_COLDFIRE) \ && !defined(SIMULATOR) case BACKLIGHT_UNBOOST_CPU: - cpu_boost(false); + cpu_boost_id(false, CPUBOOSTID_BACKLIGHT); break; #endif diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c index 0bdd0657bd..7222a41221 100644 --- a/firmware/common/dircache.c +++ b/firmware/common/dircache.c @@ -546,16 +546,16 @@ static int dircache_do_rebuild(void) memset(dircache_cur_path, 0, MAX_PATH); dircache_size = sizeof(struct dircache_entry); - cpu_boost(true); + cpu_boost_id(true, CPUBOOSTID_DIRCACHE); if (dircache_travel(pdir, dircache_root) < 0) { logf("dircache_travel failed"); - cpu_boost(false); + cpu_boost_id(false, CPUBOOSTID_DIRCACHE); dircache_size = 0; dircache_initializing = false; return -2; } - cpu_boost(false); + cpu_boost_id(false, CPUBOOSTID_DIRCACHE); logf("Done, %d KiB used", dircache_size / 1024); diff --git a/firmware/export/system.h b/firmware/export/system.h index d13b27c529..cc2d166c62 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h @@ -60,11 +60,41 @@ bool detect_flashed_rockbox(void); void set_cpu_frequency(long frequency); void cpu_boost(bool on_off); void cpu_idle_mode(bool on_off); +int get_cpu_boost_counter(void); + +#if MEM > 1 +#define CPU_BOOST_TRACKING +#endif + +#ifdef CPU_BOOST_TRACKING +void cpu_boost_id(bool on_off, char id); +const char *get_cpu_boost_tracker(void); +/* CPU boost ID chars, in alphabetical order */ +#define CPUBOOSTID_PLAYBACK_AUDIO 'A' +#define CPUBOOSTID_TAGTREE 'a' +#define CPUBOOSTID_BACKLIGHT 'b' +#define CPUBOOSTID_PLAYBACK_CODEC 'c' +#define CPUBOOSTID_DIRCACHE 'd' +#define CPUBOOSTID_MAININIT 'i' +#define CPUBOOSTID_DEBUGMENU_MANUAL 'm' +#define CPUBOOSTID_PLAYLIST 'P' +#define CPUBOOSTID_PCMRECORD 'R' +#define CPUBOOSTID_TREE 'r' +#define CPUBOOSTID_TREE 'r' +#define CPUBOOSTID_TALK 'T' +#define CPUBOOSTID_TAGCACHE 't' +#define CPUBOOSTID_PLAYBACK_VOICE 'v' +#else +#define cpu_boost_id(on_off,id) cpu_boost(on_off) +#endif #else #define FREQ CPU_FREQ #define set_cpu_frequency(frequency) #define cpu_boost(on_off) +#define cpu_boost_id(on_off, id) #define cpu_idle_mode(on_off) +#define get_cpu_boost_counter() +#define get_cpu_boost_tracker() #endif #define BAUDRATE 9600 diff --git a/firmware/pcm_record.c b/firmware/pcm_record.c index 544ecb378d..2785d4b1b1 100644 --- a/firmware/pcm_record.c +++ b/firmware/pcm_record.c @@ -541,7 +541,7 @@ static void pcmrec_callback(bool flush) { logf("writing: %d (%d)", num_ready, flush); - cpu_boost(true); + cpu_boost_id(true, CPUBOOSTID_PCMRECORD); size_yield = 0; for (i=0; i= 0 && cpu_boost_tracker[l] != id) + l--; + if (cpu_boost_tracker[l] != id) /* No match found? */ + l = strlen(cpu_boost_tracker)-1; /* Just remove last one */ + while (l < CPU_BOOST_TRACKER_MAX) + { + cpu_boost_tracker[l] = cpu_boost_tracker[l+1]; + l++; + } } } +#endif + +void cpu_boost(bool on_off) +{ + cpu_boost_id(on_off, '?'); +} void cpu_idle_mode(bool on_off) { -- cgit v1.2.3