mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-10 05:32:40 -05:00
Bring buttons back to the e200 bootloader?
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13493 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
e1374b0536
commit
31df21c4f9
1 changed files with 24 additions and 13 deletions
|
|
@ -28,20 +28,18 @@
|
||||||
#define WHEEL_FAST_OFF_INTERVAL 6
|
#define WHEEL_FAST_OFF_INTERVAL 6
|
||||||
|
|
||||||
/* Clickwheel */
|
/* Clickwheel */
|
||||||
|
#ifndef BOOTLOADER
|
||||||
static unsigned int old_wheel_value = 0;
|
static unsigned int old_wheel_value = 0;
|
||||||
static unsigned int wheel_repeat = BUTTON_NONE;
|
static unsigned int wheel_repeat = BUTTON_NONE;
|
||||||
static unsigned int wheel_click_count = 0;
|
static unsigned int wheel_click_count = 0;
|
||||||
static int wheel_fast_mode = 0;
|
static int wheel_fast_mode = 0;
|
||||||
static unsigned long last_wheel_tick = 0;
|
static unsigned long last_wheel_tick = 0;
|
||||||
static unsigned long last_wheel_post = 0;
|
static unsigned long last_wheel_post = 0;
|
||||||
#ifndef BOOTLOADER
|
|
||||||
static unsigned long next_backlight_on = 0;
|
static unsigned long next_backlight_on = 0;
|
||||||
#endif
|
|
||||||
/* Buttons */
|
/* Buttons */
|
||||||
static bool hold_button = false;
|
static bool hold_button = false;
|
||||||
#ifndef BOOTLOADER
|
|
||||||
static bool hold_button_old = false;
|
static bool hold_button_old = false;
|
||||||
#endif
|
#endif /* BOOTLOADER */
|
||||||
static int int_btn = BUTTON_NONE;
|
static int int_btn = BUTTON_NONE;
|
||||||
|
|
||||||
void button_init_device(void)
|
void button_init_device(void)
|
||||||
|
|
@ -54,6 +52,7 @@ void button_init_device(void)
|
||||||
GPIOG_OUTPUT_EN |= 0x80;
|
GPIOG_OUTPUT_EN |= 0x80;
|
||||||
GPIOG_ENABLE = 0x80;
|
GPIOG_ENABLE = 0x80;
|
||||||
|
|
||||||
|
#ifndef BOOTLOADER
|
||||||
GPIOH_ENABLE |= 0xc0;
|
GPIOH_ENABLE |= 0xc0;
|
||||||
GPIOH_OUTPUT_EN &= ~0xc0;
|
GPIOH_OUTPUT_EN &= ~0xc0;
|
||||||
|
|
||||||
|
|
@ -85,13 +84,20 @@ void button_init_device(void)
|
||||||
|
|
||||||
last_wheel_tick = current_tick;
|
last_wheel_tick = current_tick;
|
||||||
last_wheel_post = current_tick;
|
last_wheel_post = current_tick;
|
||||||
|
#endif /* BOOTLOADER */
|
||||||
}
|
}
|
||||||
|
|
||||||
bool button_hold(void)
|
bool button_hold(void)
|
||||||
{
|
{
|
||||||
|
#ifdef BOOTLOADER
|
||||||
|
return (GPIOF_INPUT_VAL & 0x80) != 0;
|
||||||
|
#else
|
||||||
return hold_button;
|
return hold_button;
|
||||||
|
#endif /* BOOTLOADER */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* clickwheel */
|
||||||
|
#ifndef BOOTLOADER
|
||||||
void clickwheel_int(void)
|
void clickwheel_int(void)
|
||||||
{
|
{
|
||||||
/* Read wheel
|
/* Read wheel
|
||||||
|
|
@ -157,14 +163,13 @@ void clickwheel_int(void)
|
||||||
btn = BUTTON_NONE;
|
btn = BUTTON_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BOOTLOADER
|
|
||||||
if (TIME_AFTER(current_tick, next_backlight_on))
|
if (TIME_AFTER(current_tick, next_backlight_on))
|
||||||
{
|
{
|
||||||
next_backlight_on = current_tick + HZ/4;
|
next_backlight_on = current_tick + HZ/4;
|
||||||
backlight_on();
|
backlight_on();
|
||||||
button_backlight_on();
|
button_backlight_on();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (btn != BUTTON_NONE)
|
if (btn != BUTTON_NONE)
|
||||||
{
|
{
|
||||||
wheel_click_count = 0;
|
wheel_click_count = 0;
|
||||||
|
|
@ -185,23 +190,27 @@ void clickwheel_int(void)
|
||||||
|
|
||||||
old_wheel_value = wheel_value;
|
old_wheel_value = wheel_value;
|
||||||
}
|
}
|
||||||
|
#endif /* BOOTLOADER */
|
||||||
|
|
||||||
|
/* device buttons */
|
||||||
void button_int(void)
|
void button_int(void)
|
||||||
{
|
{
|
||||||
unsigned char state;
|
unsigned char state;
|
||||||
|
|
||||||
GPIOF_INT_CLR = GPIOF_INT_STAT;
|
int_btn = BUTTON_NONE;
|
||||||
|
|
||||||
state = GPIOF_INPUT_VAL & 0xff;
|
state = GPIOF_INPUT_VAL & 0xff;
|
||||||
|
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
GPIOF_INT_CLR = GPIOF_INT_STAT;
|
||||||
GPIOF_INT_LEV = (GPIOF_INT_LEV & ~0xff) | (state ^ 0xff);
|
GPIOF_INT_LEV = (GPIOF_INT_LEV & ~0xff) | (state ^ 0xff);
|
||||||
|
|
||||||
int_btn = BUTTON_NONE;
|
|
||||||
|
|
||||||
hold_button = (state & 0x80) != 0;
|
hold_button = (state & 0x80) != 0;
|
||||||
|
|
||||||
/* device buttons */
|
|
||||||
if (!hold_button)
|
if (!hold_button)
|
||||||
|
#else
|
||||||
|
if (button_hold())
|
||||||
|
#endif /* BOOTLOADER */
|
||||||
{
|
{
|
||||||
/* Read normal buttons */
|
/* Read normal buttons */
|
||||||
if ((state & 0x01) == 0) int_btn |= BUTTON_REC;
|
if ((state & 0x01) == 0) int_btn |= BUTTON_REC;
|
||||||
|
|
@ -219,15 +228,17 @@ void button_int(void)
|
||||||
*/
|
*/
|
||||||
int button_read_device(void)
|
int button_read_device(void)
|
||||||
{
|
{
|
||||||
/* Hold */
|
#ifdef BOOTLOADER
|
||||||
#ifndef BOOTLOADER
|
/* Read buttons directly in the bootloader */
|
||||||
|
button_int();
|
||||||
|
#else
|
||||||
/* light handling */
|
/* light handling */
|
||||||
if (hold_button != hold_button_old)
|
if (hold_button != hold_button_old)
|
||||||
{
|
{
|
||||||
hold_button_old = hold_button;
|
hold_button_old = hold_button;
|
||||||
backlight_hold_changed(hold_button);
|
backlight_hold_changed(hold_button);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* BOOTLOADER */
|
||||||
|
|
||||||
/* The int_btn variable is set in the button interrupt handler */
|
/* The int_btn variable is set in the button interrupt handler */
|
||||||
return int_btn;
|
return int_btn;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue