iPod Classic: This time really fix the hold switch. Read it out through the power manager, and cache the result for 100 milliseconds because the power manager doesn't like being spammed
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29264 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
bf1ca7041e
commit
acf54bed55
1 changed files with 13 additions and 2 deletions
|
@ -87,6 +87,11 @@ int int_btn = BUTTON_NONE;
|
|||
static struct wakeup button_init_wakeup;
|
||||
#endif
|
||||
|
||||
#if CONFIG_CPU==S5L8702
|
||||
static long holdswitch_last_read;
|
||||
static bool holdswitch_last_value;
|
||||
#endif
|
||||
|
||||
#ifdef CPU_PP
|
||||
static void opto_i2c_init(void)
|
||||
{
|
||||
|
@ -372,7 +377,8 @@ void button_init_device(void)
|
|||
#if CONFIG_CPU==S5L8701
|
||||
INTMSK |= (1<<26);
|
||||
#elif CONFIG_CPU==S5L8702
|
||||
//TODO: Implement
|
||||
holdswitch_last_read = USEC_TIMER;
|
||||
holdswitch_last_value = (pmu_read(0x87) & 2) == 0;
|
||||
#endif
|
||||
s5l_clickwheel_init();
|
||||
wakeup_wait(&button_init_wakeup, HZ / 10);
|
||||
|
@ -383,7 +389,12 @@ bool button_hold(void)
|
|||
#if CONFIG_CPU==S5L8701
|
||||
return ((PDAT14 & (1 << 6)) == 0);
|
||||
#elif CONFIG_CPU==S5L8702
|
||||
return ((PDATE & (1 << 4)) == 0);
|
||||
if (USEC_TIMER - holdswitch_last_read > 100000)
|
||||
{
|
||||
holdswitch_last_read = USEC_TIMER;
|
||||
holdswitch_last_value = (pmu_read(0x87) & 2) == 0;
|
||||
}
|
||||
return holdswitch_last_value;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue