summaryrefslogtreecommitdiff
path: root/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/philips/hdd1630/backlight-hdd1630.c')
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/backlight-hdd1630.c59
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
28static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; 28static const int brightness_vals[16] =
29 {255,237,219,201,183,165,147,130,112,94,76,58,40,22,5,0};
29 30
30void _backlight_set_brightness(int brightness) 31void _backlight_set_brightness(int brightness)
31{ 32{
33 outl(0x80000000 | (brightness_vals[brightness-1] << 16), 0x7000a000);
32} 34}
33#endif 35#endif
34 36
35void _backlight_on(void) 37void _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
41void _backlight_off(void) 43void _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
48void _buttonlight_on(void) 50
51#define BUTTONLIGHT_MASK 0x7f
52
53static unsigned short buttonight_brightness = DEFAULT_BRIGHTNESS_SETTING - 1;
54static unsigned short buttonlight_status = 0;
55
56static 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
80void _buttonlight_on(void)
81{
82 if (!buttonlight_status)
83 {
84 set_buttonlight(buttonight_brightness);
85 buttonlight_status = 1;
86 }
87}
88
52void _buttonlight_off(void) 89void _buttonlight_off(void)
53{ 90{
91 if (buttonlight_status)
92 {
93 set_buttonlight(0);
94 buttonlight_status = 0;
95 }
96}
97
98void _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