diff options
Diffstat (limited to 'firmware/drivers/synaptics-mep.c')
-rw-r--r-- | firmware/drivers/synaptics-mep.c | 26 |
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 | ||