diff options
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c index a8f8ef5d85..7e143fee8e 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | |||
@@ -188,17 +188,19 @@ static void led_control_service(void) | |||
188 | case BACKLIGHT_CONTROL_FADE: | 188 | case BACKLIGHT_CONTROL_FADE: |
189 | sc606_changed=true; | 189 | sc606_changed=true; |
190 | sc606regCONFval |= 0x03; | 190 | sc606regCONFval |= 0x03; |
191 | /* The SC606 LED driver can set the brightness in 64 steps */ | 191 | if(backlight_target>sc606regAval) |
192 | if(backlight_target==sc606regAval) | 192 | { |
193 | if(sc606regAval) | 193 | sc606regAval++; |
194 | if(backlight_target==sc606regAval) | ||
194 | backlight_control = BACKLIGHT_CONTROL_ON; | 195 | backlight_control = BACKLIGHT_CONTROL_ON; |
195 | else | 196 | } |
196 | backlight_control = BACKLIGHT_CONTROL_OFF; | ||
197 | else | 197 | else |
198 | if(backlight_target>sc606regAval) | 198 | { |
199 | sc606regAval++; | 199 | sc606regAval--; |
200 | else | 200 | if(backlight_target==sc606regAval) |
201 | sc606regAval--; | 201 | backlight_control = BACKLIGHT_CONTROL_OFF; |
202 | } | ||
203 | |||
202 | break; | 204 | break; |
203 | default: | 205 | default: |
204 | break; | 206 | break; |
@@ -222,16 +224,19 @@ static void led_control_service(void) | |||
222 | case BUTTONLIGHT_CONTROL_FADE: | 224 | case BUTTONLIGHT_CONTROL_FADE: |
223 | sc606_changed=true; | 225 | sc606_changed=true; |
224 | sc606regCONFval |= 0x3C; | 226 | sc606regCONFval |= 0x3C; |
225 | if(buttonlight_target==sc606regBval) | 227 | if(buttonlight_target>sc606regBval) |
226 | if(sc606regBval) | 228 | { |
229 | sc606regCval=++sc606regBval; | ||
230 | if(buttonlight_target==sc606regBval) | ||
227 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; | 231 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; |
228 | else | 232 | } |
229 | buttonlight_control = BUTTONLIGHT_CONTROL_OFF; | ||
230 | else | 233 | else |
231 | if(buttonlight_target>sc606regBval) | 234 | { |
232 | sc606regCval=++sc606regBval; | 235 | sc606regCval=--sc606regBval; |
233 | else | 236 | if(buttonlight_target==sc606regBval) |
234 | sc606regCval=--sc606regBval; | 237 | buttonlight_control = BUTTONLIGHT_CONTROL_OFF; |
238 | } | ||
239 | |||
235 | break; | 240 | break; |
236 | default: | 241 | default: |
237 | break; | 242 | break; |
@@ -261,7 +266,10 @@ static void led_control_service(void) | |||
261 | case SC606_CONTROL_CONF: | 266 | case SC606_CONTROL_CONF: |
262 | sc606_write(SC606_REG_CONF , sc606regCONFval); | 267 | sc606_write(SC606_REG_CONF , sc606regCONFval); |
263 | sc606_changed=false; | 268 | sc606_changed=false; |
264 | sc606_control=SC606_CONTROL_IDLE; | 269 | if(backlight_control != BACKLIGHT_CONTROL_IDLE && buttonlight_control != BUTTONLIGHT_CONTROL_IDLE) |
270 | sc606_control=SC606_CONTROL_A12; | ||
271 | else | ||
272 | sc606_control=SC606_CONTROL_IDLE; | ||
265 | break; | 273 | break; |
266 | default: | 274 | default: |
267 | sc606_control=SC606_CONTROL_A12; | 275 | sc606_control=SC606_CONTROL_A12; |