Index: firmware/target/arm/ipod/button-target.h =================================================================== --- firmware/target/arm/ipod/button-target.h (revision 29005) +++ firmware/target/arm/ipod/button-target.h (working copy) @@ -43,12 +43,13 @@ #define BUTTON_RIGHT 0x00000008 #define BUTTON_SCROLL_FWD 0x00000010 #define BUTTON_SCROLL_BACK 0x00000020 +#define BUTTON_SCROLL 0x00000040 -#define BUTTON_PLAY 0x00000040 +#define BUTTON_PLAY 0x00000080 #define BUTTON_MAIN (BUTTON_SELECT|BUTTON_MENU\ |BUTTON_LEFT|BUTTON_RIGHT|BUTTON_SCROLL_FWD\ - |BUTTON_SCROLL_BACK|BUTTON_PLAY) + |BUTTON_SCROLL_BACK|BUTTON_SCROLL|BUTTON_PLAY) /* Remote control's buttons */ #ifdef IPOD_ACCESSORY_PROTOCOL Index: firmware/target/arm/ipod/button-clickwheel.c =================================================================== --- firmware/target/arm/ipod/button-clickwheel.c (revision 29005) +++ firmware/target/arm/ipod/button-clickwheel.c (working copy) @@ -39,6 +39,7 @@ #include "serial.h" #include "power.h" #include "powermgmt.h" +#include "button-target.h" #if defined(IPOD_NANO2G) || defined(IPOD_6G) #include "pmu-target.h" #endif @@ -239,6 +240,9 @@ } last_wheel_usec = usec; old_wheel_value = new_wheel_value; + + /* be able to read wheel action via button_read_device() */ + btn |= BUTTON_SCROLL; } } else Index: firmware/drivers/button.c =================================================================== --- firmware/drivers/button.c (revision 29005) +++ firmware/drivers/button.c (working copy) @@ -109,6 +109,24 @@ } #endif +#ifdef HAVE_ADJUSTABLE_CPU_FREQ +static void gui_boost(bool state) +{ + static bool boosted = false; + + if (state && !boosted) + { + cpu_boost(true); + boosted = true; + } + else if (!state && boosted) + { + cpu_boost(false); + boosted = false; + } +} +#endif /* HAVE_ADJUSTABLE_CPU_FREQ */ + static bool button_try_post(int button, int data) { #ifdef HAVE_TOUCHSCREEN @@ -151,6 +169,9 @@ static bool skip_remote_release = false; #endif #endif +#ifdef HAVE_ADJUSTABLE_CPU_FREQ + static long last_button_tick; +#endif int diff; int btn; #ifdef HAVE_BUTTON_DATA @@ -181,6 +202,19 @@ } #endif +#ifdef HAVE_ADJUSTABLE_CPU_FREQ + /* Boost gui on button activity, unboost gui after timeout (1 sec). */ + if (BUTTON_NONE != btn) + { + last_button_tick = current_tick; + gui_boost(true); + } + else if (TIME_AFTER(current_tick, last_button_tick + HZ)) + { + gui_boost(false); + } +#endif + /* Find out if a key has been released */ diff = btn ^ lastbtn; if(diff && (btn & diff) == 0) Index: firmware/target/arm/system-pp502x.c =================================================================== --- firmware/target/arm/system-pp502x.c (revision 29005) +++ firmware/target/arm/system-pp502x.c (working copy) @@ -314,15 +314,15 @@ PLL_CONTROL = 0x8a020a03; /* repeat setup */ udelay(500); /* wait for relock */ #elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) - PLL_CONTROL = 0x8a121403; /* 80 MHz = (20/3 * 24MHz) / 2 */ + PLL_CONTROL = 0x8a021906; /* 100 MHz = (25/6 * 24MHz) / 1 */ while (!(PLL_STATUS & 0x80000000)); /* wait for relock */ #endif scale_suspend_core(true); - DEV_TIMING1 = 0x00000808; + DEV_TIMING1 = 0x00000a0a; CLOCK_SOURCE = 0x20007777; /* source #1, #2, #3, #4: PLL (#2 active) */ scale_suspend_core(false); break; -#if 0 /******** CPUFREQ_NORMAL = 24MHz without PLL ********/ +#if 1 /******** CPUFREQ_NORMAL = 24MHz without PLL ********/ case CPUFREQ_NORMAL: cpu_frequency = CPUFREQ_NORMAL; PLL_CONTROL |= 0x08000000; Index: firmware/target/arm/system-target.h =================================================================== --- firmware/target/arm/system-target.h (revision 29005) +++ firmware/target/arm/system-target.h (working copy) @@ -32,14 +32,14 @@ #if CONFIG_CPU == PP5002 #define CPUFREQ_SLEEP 32768 #define CPUFREQ_DEFAULT 24000000 -#define CPUFREQ_NORMAL 30000000 +#define CPUFREQ_NORMAL 24000000 #define CPUFREQ_MAX 80000000 #else /* PP5022, PP5024 */ #define CPUFREQ_SLEEP 32768 #define CPUFREQ_DEFAULT 24000000 -#define CPUFREQ_NORMAL 30000000 -#define CPUFREQ_MAX 80000000 +#define CPUFREQ_NORMAL 24000000 +#define CPUFREQ_MAX 100000000 #endif #define inl(a) (*(volatile unsigned long *) (a)) Index: firmware/target/arm/s5l8700/ipodnano2g/button-target.h =================================================================== --- firmware/target/arm/s5l8700/ipodnano2g/button-target.h (revision 29005) +++ firmware/target/arm/s5l8700/ipodnano2g/button-target.h (working copy) @@ -43,8 +43,9 @@ #define BUTTON_RIGHT 0x00000008 #define BUTTON_SCROLL_FWD 0x00000010 #define BUTTON_SCROLL_BACK 0x00000020 +#define BUTTON_SCROLL 0x00000040 -#define BUTTON_PLAY 0x00000040 +#define BUTTON_PLAY 0x00000080 #define BUTTON_MAIN (BUTTON_SELECT|BUTTON_MENU\ |BUTTON_LEFT|BUTTON_RIGHT|BUTTON_SCROLL_FWD\