diff options
author | Szymon Dziok <b0hoon@o2.pl> | 2010-02-06 19:15:43 +0000 |
---|---|---|
committer | Szymon Dziok <b0hoon@o2.pl> | 2010-02-06 19:15:43 +0000 |
commit | 8a36f0bad4846b9e7d49b2c598c23c0443c2d1b5 (patch) | |
tree | d1e93f78729f9b0124103dfd6c6dbcc90a62fc31 /firmware/drivers | |
parent | 179afba31e561c89833cbfdcf9af619f4739e887 (diff) |
Packard Bell Vibe 500: touchpad code rework. Improve touch sensivity a bit by setting the MEP parameters in the power_init() function. Implement new function in synaptics-mep driver (touchpad_set_parameter) necessary for it. Move the button lights code to the target backlight file.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24541 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/synaptics-mep.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/firmware/drivers/synaptics-mep.c b/firmware/drivers/synaptics-mep.c index 87b78d09c1..d200e7ca79 100644 --- a/firmware/drivers/synaptics-mep.c +++ b/firmware/drivers/synaptics-mep.c @@ -580,6 +580,27 @@ int touchpad_read_device(char *data, int len) return val; } +int touchpad_set_parameter(char par_nr, unsigned int param) +{ + char data[4]; + int val=0; + + if (syn_status) + { + syn_enable_int(false); + + data[0]=0x03; /* header - addr:0,global:0,control:0,len:3 */ + data[1]=0x40+par_nr; /* parameter number */ + data[2]=(param >> 8) & 0xff; /* param_hi */ + data[3]=param & 0xff; /* param_lo */ + syn_send(data,4); + val=syn_read(data,1); /* get the simple ACK = 0x18 */ + + syn_enable_int(true); + } + return val; +} + int touchpad_set_buttonlights(unsigned int led_mask, char brightness) { char data[6]; @@ -588,26 +609,7 @@ int touchpad_set_buttonlights(unsigned int led_mask, char brightness) if (syn_status) { syn_enable_int(false); -#if defined(PBELL_VIBE500) - /* In Packard Bell Vibe 500 leds are controlled through the MEP parameters 0x62 - 0x63 - There is no 0x31 order - grup led control */ - - /* Make sure we have a led_block_mask = 0 - obtained experimentally */ - data[0] = 0x03; /* header - addr:0,global:0,control:0,len:3 */ - data[1] = 0x63; /* parameter nr: 0x23 (-0x40) - led_block_mask */ - data[2] = 0x00; /* par_hi = 0 */ - data[3] = 0x00; /* par_lo = 0 */ - syn_send(data,4); - val = syn_read(data, 1); /* get the simple ACK = 0x18 */ - /* Turn on/off the lights (there is no brightness control) - obtained experimentally */ - data[0] = 0x03; /* header - addr:0,global:0,control:0,len:3 */ - data[1] = 0x62; /* parameter nr: 0x22 (-0x40) - led_mask */ - data[2] = 0x00; /* par_hi = 0 */ - data[3] = (led_mask & 0x0f) | (brightness&0); /* par_lo = led_mask */ - syn_send(data,4); - val = syn_read(data, 1); /* get the simple ACK = 0x18 */ -#else /* turn on all touchpad leds */ data[0] = 0x05; data[1] = 0x31; @@ -619,7 +621,7 @@ int touchpad_set_buttonlights(unsigned int led_mask, char brightness) /* device responds with a single-byte ACK packet */ val = syn_read(data, 2); -#endif + syn_enable_int(true); } |