diff options
author | Barry Wardell <rockbox@barrywardell.net> | 2006-12-18 19:08:41 +0000 |
---|---|---|
committer | Barry Wardell <rockbox@barrywardell.net> | 2006-12-18 19:08:41 +0000 |
commit | a69b53dc89d9617257fb40124eb74d02f7633bf8 (patch) | |
tree | deb652a011c08bf6870414bc5099205431694e51 /firmware/target/arm/sandisk/sansa-e200/button-e200.c | |
parent | e90006133b6965dd2e4eb592e54b965a7f0932ba (diff) | |
download | rockbox-a69b53dc89d9617257fb40124eb74d02f7633bf8.tar.gz rockbox-a69b53dc89d9617257fb40124eb74d02f7633bf8.zip |
Add support for Sansa scrollwheel backlight. Turn light on when scrollwheel is in use, then back off again after a 5 second timeout.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11807 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/sandisk/sansa-e200/button-e200.c')
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/button-e200.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/firmware/target/arm/sandisk/sansa-e200/button-e200.c b/firmware/target/arm/sandisk/sansa-e200/button-e200.c index 7a297885c0..0490c454c8 100644 --- a/firmware/target/arm/sandisk/sansa-e200/button-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/button-e200.c | |||
@@ -31,12 +31,29 @@ | |||
31 | static unsigned int old_wheel_value = 0; | 31 | static unsigned int old_wheel_value = 0; |
32 | static unsigned int wheel_repeat = BUTTON_NONE; | 32 | static unsigned int wheel_repeat = BUTTON_NONE; |
33 | 33 | ||
34 | /* Wheel backlight control */ | ||
35 | #define WHEEL_BACKLIGHT_TIMEOUT 5*HZ; | ||
36 | static unsigned int wheel_backlight_timer; | ||
37 | |||
38 | void wheel_backlight_on(bool enable) | ||
39 | { | ||
40 | if(enable) | ||
41 | GPIOG_OUTPUT_VAL |=0x80; | ||
42 | else | ||
43 | GPIOG_OUTPUT_VAL &=~ 0x80; | ||
44 | } | ||
45 | |||
34 | void button_init_device(void) | 46 | void button_init_device(void) |
35 | { | 47 | { |
36 | /* Enable all buttons */ | 48 | /* Enable all buttons */ |
37 | GPIOF_ENABLE |= 0xff; | 49 | GPIOF_ENABLE |= 0xff; |
38 | GPIOH_ENABLE |= 0xc0; | 50 | GPIOH_ENABLE |= 0xc0; |
39 | 51 | ||
52 | /* Scrollwheel light - enable control through GPIOG pin 7 and set timeout */ | ||
53 | GPIOG_ENABLE = 0x80; | ||
54 | GPIOG_OUTPUT_EN |= 0x80; | ||
55 | wheel_backlight_timer = WHEEL_BACKLIGHT_TIMEOUT; | ||
56 | |||
40 | /* Read initial wheel value (bit 6-7 of GPIOH) */ | 57 | /* Read initial wheel value (bit 6-7 of GPIOH) */ |
41 | old_wheel_value = GPIOH_INPUT_VAL & 0xc0; | 58 | old_wheel_value = GPIOH_INPUT_VAL & 0xc0; |
42 | } | 59 | } |
@@ -137,6 +154,20 @@ int button_read_device(void) | |||
137 | 154 | ||
138 | old_wheel_value = new_wheel_value; | 155 | old_wheel_value = new_wheel_value; |
139 | } | 156 | } |
140 | 157 | ||
158 | if(wheel_backlight_timer>0){ | ||
159 | wheel_backlight_timer--; | ||
160 | if(wheel_backlight_timer==0){ | ||
161 | wheel_backlight_on(false); | ||
162 | } | ||
163 | } | ||
164 | |||
165 | if( (btn & BUTTON_SCROLL_UP) || (btn & BUTTON_SCROLL_DOWN) ){ | ||
166 | if(wheel_backlight_timer==0){ | ||
167 | wheel_backlight_on(true); | ||
168 | } | ||
169 | wheel_backlight_timer = WHEEL_BACKLIGHT_TIMEOUT; | ||
170 | } | ||
171 | |||
141 | return btn; | 172 | return btn; |
142 | } | 173 | } |