forked from len0rd/rockbox
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;
|
static struct wakeup button_init_wakeup;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_CPU==S5L8702
|
||||||
|
static long holdswitch_last_read;
|
||||||
|
static bool holdswitch_last_value;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CPU_PP
|
#ifdef CPU_PP
|
||||||
static void opto_i2c_init(void)
|
static void opto_i2c_init(void)
|
||||||
{
|
{
|
||||||
|
@ -372,7 +377,8 @@ void button_init_device(void)
|
||||||
#if CONFIG_CPU==S5L8701
|
#if CONFIG_CPU==S5L8701
|
||||||
INTMSK |= (1<<26);
|
INTMSK |= (1<<26);
|
||||||
#elif CONFIG_CPU==S5L8702
|
#elif CONFIG_CPU==S5L8702
|
||||||
//TODO: Implement
|
holdswitch_last_read = USEC_TIMER;
|
||||||
|
holdswitch_last_value = (pmu_read(0x87) & 2) == 0;
|
||||||
#endif
|
#endif
|
||||||
s5l_clickwheel_init();
|
s5l_clickwheel_init();
|
||||||
wakeup_wait(&button_init_wakeup, HZ / 10);
|
wakeup_wait(&button_init_wakeup, HZ / 10);
|
||||||
|
@ -383,7 +389,12 @@ bool button_hold(void)
|
||||||
#if CONFIG_CPU==S5L8701
|
#if CONFIG_CPU==S5L8701
|
||||||
return ((PDAT14 & (1 << 6)) == 0);
|
return ((PDAT14 & (1 << 6)) == 0);
|
||||||
#elif CONFIG_CPU==S5L8702
|
#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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue