diff options
Diffstat (limited to 'firmware/target/arm/philips/hdd1630/backlight-hdd1630.c')
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/backlight-hdd1630.c | 59 |
1 files changed, 54 insertions, 5 deletions
diff --git a/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c b/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c index eb2c2731ac..eafce13759 100755 --- a/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c +++ b/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c | |||
@@ -21,35 +21,84 @@ | |||
21 | #include "config.h" | 21 | #include "config.h" |
22 | #include "backlight-target.h" | 22 | #include "backlight-target.h" |
23 | #include "system.h" | 23 | #include "system.h" |
24 | #include "lcd.h" | ||
25 | #include "backlight.h" | 24 | #include "backlight.h" |
25 | #include "synaptics-mep.h" | ||
26 | 26 | ||
27 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 27 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
28 | static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; | 28 | static const int brightness_vals[16] = |
29 | {255,237,219,201,183,165,147,130,112,94,76,58,40,22,5,0}; | ||
29 | 30 | ||
30 | void _backlight_set_brightness(int brightness) | 31 | void _backlight_set_brightness(int brightness) |
31 | { | 32 | { |
33 | outl(0x80000000 | (brightness_vals[brightness-1] << 16), 0x7000a000); | ||
32 | } | 34 | } |
33 | #endif | 35 | #endif |
34 | 36 | ||
35 | void _backlight_on(void) | 37 | void _backlight_on(void) |
36 | { | 38 | { |
37 | GPO32_VAL &= ~0x1000000; | 39 | GPO32_VAL &= ~0x1000000; |
38 | GPO32_ENABLE &= ~0x1000000; | 40 | GPO32_ENABLE &= ~0x1000000; |
39 | } | 41 | } |
40 | 42 | ||
41 | void _backlight_off(void) | 43 | void _backlight_off(void) |
42 | { | 44 | { |
43 | GPO32_VAL |= 0x1000000; | 45 | GPO32_VAL |= 0x1000000; |
44 | GPO32_ENABLE |= 0x1000000; | 46 | GPO32_ENABLE |= 0x1000000; |
45 | } | 47 | } |
46 | 48 | ||
47 | #ifdef HAVE_BUTTON_LIGHT | 49 | #ifdef HAVE_BUTTON_LIGHT |
48 | void _buttonlight_on(void) | 50 | |
51 | #define BUTTONLIGHT_MASK 0x7f | ||
52 | |||
53 | static unsigned short buttonight_brightness = DEFAULT_BRIGHTNESS_SETTING - 1; | ||
54 | static unsigned short buttonlight_status = 0; | ||
55 | |||
56 | static void set_buttonlight(int brightness) | ||
49 | { | 57 | { |
58 | int data[6]; | ||
59 | |||
60 | if (syn_get_status()) | ||
61 | { | ||
62 | syn_int_enable(false); | ||
63 | |||
64 | /* turn on all touchpad leds */ | ||
65 | data[0] = 0x05; | ||
66 | data[1] = 0x31; | ||
67 | data[2] = (brightness & 0xff) << 4; | ||
68 | data[3] = 0x00; | ||
69 | data[4] = 0x00; | ||
70 | data[5] = BUTTONLIGHT_MASK; | ||
71 | syn_send(data, 6); | ||
72 | |||
73 | /* device responds with a single-byte ACK packet */ | ||
74 | syn_read(data, 2); | ||
75 | |||
76 | syn_int_enable(true); | ||
77 | } | ||
50 | } | 78 | } |
51 | 79 | ||
80 | void _buttonlight_on(void) | ||
81 | { | ||
82 | if (!buttonlight_status) | ||
83 | { | ||
84 | set_buttonlight(buttonight_brightness); | ||
85 | buttonlight_status = 1; | ||
86 | } | ||
87 | } | ||
88 | |||
52 | void _buttonlight_off(void) | 89 | void _buttonlight_off(void) |
53 | { | 90 | { |
91 | if (buttonlight_status) | ||
92 | { | ||
93 | set_buttonlight(0); | ||
94 | buttonlight_status = 0; | ||
95 | } | ||
96 | } | ||
97 | |||
98 | void _buttonlight_set_brightness(int brightness) | ||
99 | { | ||
100 | buttonight_brightness = brightness - 1; | ||
101 | set_buttonlight(buttonight_brightness); | ||
102 | buttonlight_status = 1; | ||
54 | } | 103 | } |
55 | #endif | 104 | #endif |