summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
diff options
context:
space:
mode:
authorMark Arigo <markarigo@gmail.com>2009-02-18 02:19:22 +0000
committerMark Arigo <markarigo@gmail.com>2009-02-18 02:19:22 +0000
commitf34cd80f638a6ca3b336f6ebd14cd958974b2760 (patch)
tree91195848e098a6f0f6372d39424306e32d3df9d2 /firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
parent42ef5b0c88f92418c79e7414063c808b7c36a9be (diff)
downloadrockbox-f34cd80f638a6ca3b336f6ebd14cd958974b2760.tar.gz
rockbox-f34cd80f638a6ca3b336f6ebd14cd958974b2760.tar.bz2
rockbox-f34cd80f638a6ca3b336f6ebd14cd958974b2760.zip
Backlight brightness and button lights for the Philips HDD1630
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20035 a1c6a512-1295-4272-9138-f99709370657
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 @@
#include "config.h"
#include "backlight-target.h"
#include "system.h"
-#include "lcd.h"
#include "backlight.h"
+#include "synaptics-mep.h"
#ifdef HAVE_BACKLIGHT_BRIGHTNESS
-static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING;
+static const int brightness_vals[16] =
+ {255,237,219,201,183,165,147,130,112,94,76,58,40,22,5,0};
void _backlight_set_brightness(int brightness)
{
+ outl(0x80000000 | (brightness_vals[brightness-1] << 16), 0x7000a000);
}
#endif
void _backlight_on(void)
{
- GPO32_VAL &= ~0x1000000;
+ GPO32_VAL &= ~0x1000000;
GPO32_ENABLE &= ~0x1000000;
}
void _backlight_off(void)
{
- GPO32_VAL |= 0x1000000;
+ GPO32_VAL |= 0x1000000;
GPO32_ENABLE |= 0x1000000;
}
#ifdef HAVE_BUTTON_LIGHT
-void _buttonlight_on(void)
+
+#define BUTTONLIGHT_MASK 0x7f
+
+static unsigned short buttonight_brightness = DEFAULT_BRIGHTNESS_SETTING - 1;
+static unsigned short buttonlight_status = 0;
+
+static void set_buttonlight(int brightness)
{
+ int data[6];
+
+ if (syn_get_status())
+ {
+ syn_int_enable(false);
+
+ /* turn on all touchpad leds */
+ data[0] = 0x05;
+ data[1] = 0x31;
+ data[2] = (brightness & 0xff) << 4;
+ data[3] = 0x00;
+ data[4] = 0x00;
+ data[5] = BUTTONLIGHT_MASK;
+ syn_send(data, 6);
+
+ /* device responds with a single-byte ACK packet */
+ syn_read(data, 2);
+
+ syn_int_enable(true);
+ }
}
+void _buttonlight_on(void)
+{
+ if (!buttonlight_status)
+ {
+ set_buttonlight(buttonight_brightness);
+ buttonlight_status = 1;
+ }
+}
+
void _buttonlight_off(void)
{
+ if (buttonlight_status)
+ {
+ set_buttonlight(0);
+ buttonlight_status = 0;
+ }
+}
+
+void _buttonlight_set_brightness(int brightness)
+{
+ buttonight_brightness = brightness - 1;
+ set_buttonlight(buttonight_brightness);
+ buttonlight_status = 1;
}
#endif