summaryrefslogtreecommitdiff
path: root/firmware/drivers/synaptics-mep.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/synaptics-mep.c')
-rw-r--r--firmware/drivers/synaptics-mep.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/firmware/drivers/synaptics-mep.c b/firmware/drivers/synaptics-mep.c
index 937a5f64b1..9c12351f42 100644
--- a/firmware/drivers/synaptics-mep.c
+++ b/firmware/drivers/synaptics-mep.c
@@ -53,7 +53,8 @@
53 GPIO_CLEAR_BITWISE(GPIOD_OUTPUT_VAL, 0x4) 53 GPIO_CLEAR_BITWISE(GPIOD_OUTPUT_VAL, 0x4)
54#define DATA_CL GPIO_CLEAR_BITWISE(GPIOD_OUTPUT_EN, 0x4) 54#define DATA_CL GPIO_CLEAR_BITWISE(GPIOD_OUTPUT_EN, 0x4)
55 55
56#elif defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) 56#elif defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) || \
57 defined(PBELL_VIBE500)
57#define INT_ENABLE GPIO_CLEAR_BITWISE(GPIOA_INT_LEV, 0x20);\ 58#define INT_ENABLE GPIO_CLEAR_BITWISE(GPIOA_INT_LEV, 0x20);\
58 GPIO_SET_BITWISE(GPIOA_INT_EN, 0x20) 59 GPIO_SET_BITWISE(GPIOA_INT_EN, 0x20)
59#define INT_DISABLE GPIO_CLEAR_BITWISE(GPIOA_INT_EN, 0x20);\ 60#define INT_DISABLE GPIO_CLEAR_BITWISE(GPIOA_INT_EN, 0x20);\
@@ -586,7 +587,26 @@ int touchpad_set_buttonlights(int led_mask, char brightness)
586 if (syn_status) 587 if (syn_status)
587 { 588 {
588 syn_enable_int(false); 589 syn_enable_int(false);
589 590#if defined(PBELL_VIBE500)
591 /* In Packard Bell Vibe 500 leds are controlled through the MEP parameters 0x62 - 0x63
592 There is no 0x31 order - grup led control */
593
594 /* Make sure we have a led_block_mask = 0 - obtained experimentally */
595 data[0] = 0x03; /* header - addr:0,global:0,control:0,len:3 */
596 data[1] = 0x63; /* parameter nr: 0x23 (-0x40) - led_block_mask */
597 data[2] = 0x00; /* par_hi = 0 */
598 data[3] = 0x00; /* par_lo = 0 */
599 syn_send(data,4);
600 val = syn_read(data, 1); /* get the simple ACK = 0x18 */
601
602 /* Turn on/off the lights (there is no brightness control) - obtained experimentally */
603 data[0] = 0x03; /* header - addr:0,global:0,control:0,len:3 */
604 data[1] = 0x62; /* parameter nr: 0x22 (-0x40) - led_mask */
605 data[2] = 0x00; /* par_hi = 0 */
606 data[3] = (led_mask & 0x0f) | (brightness&0); /* par_lo = led_mask */
607 syn_send(data,4);
608 val = syn_read(data, 1); /* get the simple ACK = 0x18 */
609#else
590 /* turn on all touchpad leds */ 610 /* turn on all touchpad leds */
591 data[0] = 0x05; 611 data[0] = 0x05;
592 data[1] = 0x31; 612 data[1] = 0x31;
@@ -598,7 +618,7 @@ int touchpad_set_buttonlights(int led_mask, char brightness)
598 618
599 /* device responds with a single-byte ACK packet */ 619 /* device responds with a single-byte ACK packet */
600 val = syn_read(data, 2); 620 val = syn_read(data, 2);
601 621#endif
602 syn_enable_int(true); 622 syn_enable_int(true);
603 } 623 }
604 624