summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/iaudio/x5
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/coldfire/iaudio/x5')
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-target.h12
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-x5.c25
2 files changed, 23 insertions, 14 deletions
diff --git a/firmware/target/coldfire/iaudio/x5/backlight-target.h b/firmware/target/coldfire/iaudio/x5/backlight-target.h
index 6e03aaa76f..8b50638f85 100644
--- a/firmware/target/coldfire/iaudio/x5/backlight-target.h
+++ b/firmware/target/coldfire/iaudio/x5/backlight-target.h
@@ -19,11 +19,11 @@
19#ifndef BACKLIGHT_TARGET_H 19#ifndef BACKLIGHT_TARGET_H
20#define BACKLIGHT_TARGET_H 20#define BACKLIGHT_TARGET_H
21 21
22bool __backlight_init(void); 22bool _backlight_init(void);
23void __backlight_on(void); 23void _backlight_on(void);
24void __backlight_off(void); 24void _backlight_off(void);
25void __backlight_set_brightness(int val); 25void _backlight_set_brightness(int val);
26void __remote_backlight_on(void); 26void _remote_backlight_on(void);
27void __remote_backlight_off(void); 27void _remote_backlight_off(void);
28 28
29#endif 29#endif
diff --git a/firmware/target/coldfire/iaudio/x5/backlight-x5.c b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
index a2682ff1ae..667f4e7278 100644
--- a/firmware/target/coldfire/iaudio/x5/backlight-x5.c
+++ b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
@@ -24,33 +24,42 @@
24#include "pcf50606.h" 24#include "pcf50606.h"
25#include "lcd.h" 25#include "lcd.h"
26 26
27bool __backlight_init(void) 27bool _backlight_init(void)
28{ 28{
29 __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); 29 _backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING);
30 __backlight_on(); 30 _backlight_on();
31 31
32 return true; /* Backlight always ON after boot. */ 32 return true; /* Backlight always ON after boot. */
33} 33}
34 34
35void __backlight_on(void) 35void _backlight_on(void)
36{ 36{
37 int level; 37 int level;
38 lcd_enable(true); 38 lcd_enable(true);
39 _lcd_sleep_timer = 0; /* LCD should be awake already */
39 level = set_irq_level(HIGHEST_IRQ_LEVEL); 40 level = set_irq_level(HIGHEST_IRQ_LEVEL);
40 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */ 41 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */
41 set_irq_level(level); 42 set_irq_level(level);
42} 43}
43 44
44void __backlight_off(void) 45void _backlight_off(void)
45{ 46{
46 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 47 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
47 pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */ 48 pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */
48 set_irq_level(level); 49 set_irq_level(level);
49 lcd_enable(false); 50 lcd_enable(false);
51 /* Start LCD sleep countdown */
52 if (_lcd_sleep_timeout < 0)
53 {
54 _lcd_sleep_timer = 0; /* Setting == Always */
55 lcd_sleep();
56 }
57 else
58 _lcd_sleep_timer = _lcd_sleep_timeout;
50} 59}
51 60
52/* set brightness by changing the PWM */ 61/* set brightness by changing the PWM */
53void __backlight_set_brightness(int val) 62void _backlight_set_brightness(int val)
54{ 63{
55 /* disable IRQs while bitbanging */ 64 /* disable IRQs while bitbanging */
56 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 65 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
@@ -59,12 +68,12 @@ void __backlight_set_brightness(int val)
59 set_irq_level(old_irq_level); 68 set_irq_level(old_irq_level);
60} 69}
61 70
62void __remote_backlight_on(void) 71void _remote_backlight_on(void)
63{ 72{
64 and_l(~0x00200000, &GPIO_OUT); 73 and_l(~0x00200000, &GPIO_OUT);
65} 74}
66 75
67void __remote_backlight_off(void) 76void _remote_backlight_off(void)
68{ 77{
69 or_l(0x00200000, &GPIO_OUT); 78 or_l(0x00200000, &GPIO_OUT);
70} 79}