diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/philips/sa9200/button-sa9200.c | 46 | ||||
-rw-r--r-- | firmware/target/arm/philips/sa9200/power-sa9200.c | 2 |
2 files changed, 46 insertions, 2 deletions
diff --git a/firmware/target/arm/philips/sa9200/button-sa9200.c b/firmware/target/arm/philips/sa9200/button-sa9200.c index e3d569f422..1e92325c73 100644 --- a/firmware/target/arm/philips/sa9200/button-sa9200.c +++ b/firmware/target/arm/philips/sa9200/button-sa9200.c | |||
@@ -32,10 +32,52 @@ static int int_btn = BUTTON_NONE; | |||
32 | #ifndef BOOTLOADER | 32 | #ifndef BOOTLOADER |
33 | static bool hold_button_old = false; | 33 | static bool hold_button_old = false; |
34 | 34 | ||
35 | /* Capacitive buttons - lowest setting is still very sensitive */ | ||
36 | static const signed char button_sensitivity = -8; /* -8 to 7 */ | ||
37 | |||
38 | /* Strip - decent amount of contact needed */ | ||
39 | static const signed char strip_sensitivity = 0; /* -8 to 7 */ | ||
40 | static const unsigned char strip_pressure = 25; /* 0 to 255 */ | ||
41 | |||
35 | void button_init_device(void) | 42 | void button_init_device(void) |
36 | { | 43 | { |
37 | /* The touchpad is powered on and initialized in power-sa9200.c | 44 | /* The touchpad is powered on and initialized in power-sa9200.c |
38 | since it needs to be ready for both buttons and button lights. */ | 45 | since it needs to be ready for both buttons and button lights. */ |
46 | |||
47 | /* perform button-specific inits here */ | ||
48 | |||
49 | /* Besides $00, only common parameters $20 and $21 are supported */ | ||
50 | |||
51 | /* Report modes: | ||
52 | * [15:12] cap btn sens : xxxx, | ||
53 | * [11: 8] pos sen sens : xxxx, | ||
54 | * [ 7: 6] rate: 10 (40 rps), | ||
55 | * [ 5] no filter: 0, | ||
56 | * [ 4] reserved: 0, | ||
57 | * [ 3] en scr: 0, | ||
58 | * [ 2] en btns: 1, | ||
59 | * [ 1] en rel: 0, | ||
60 | * [ 0] en abs: 1 */ | ||
61 | touchpad_set_parameter(0, 0x20, | ||
62 | ((button_sensitivity & 0xf) << 12) | | ||
63 | ((strip_sensitivity & 0xf) << 8) | | ||
64 | (0x2 << 6) | | ||
65 | (0x1 << 2) | | ||
66 | (0x1 << 0)); | ||
67 | |||
68 | /* Enhanced operating configuration: | ||
69 | * [15: 9] reserved : 0000000 | ||
70 | * [ 8] Min abs reporting : 0 | ||
71 | * [ 7] reserved : 0 | ||
72 | * [ 6] not all cap btns : 1 | ||
73 | * [ 5] single cap btn : 0 | ||
74 | * [ 4] en 50ms debounce : 1 | ||
75 | * [ 3] motion reporting : 0 | ||
76 | * [ 2] clip z if no finger : 0 | ||
77 | * [ 1] disable decel : 0 | ||
78 | * [ 0] enable dribble : 0 */ | ||
79 | touchpad_set_parameter(0, 0x21, | ||
80 | (0x1 << 6) | (0x1 << 4)); | ||
39 | } | 81 | } |
40 | 82 | ||
41 | /* | 83 | /* |
@@ -43,7 +85,7 @@ void button_init_device(void) | |||
43 | */ | 85 | */ |
44 | void button_int(void) | 86 | void button_int(void) |
45 | { | 87 | { |
46 | char data[4]; | 88 | unsigned char data[4]; |
47 | int val; | 89 | int val; |
48 | 90 | ||
49 | int_btn = BUTTON_NONE; | 91 | int_btn = BUTTON_NONE; |
@@ -59,7 +101,7 @@ void button_int(void) | |||
59 | if (data[1] & 0x8) int_btn |= BUTTON_LEFT; | 101 | if (data[1] & 0x8) int_btn |= BUTTON_LEFT; |
60 | if (data[2] & 0x1) int_btn |= BUTTON_MENU; | 102 | if (data[2] & 0x1) int_btn |= BUTTON_MENU; |
61 | } | 103 | } |
62 | else if (val == MEP_ABSOLUTE_HEADER) | 104 | else if (val == MEP_ABSOLUTE_HEADER && data[3] >= strip_pressure) |
63 | { | 105 | { |
64 | /* Absolute packet - the finger is on the vertical strip. | 106 | /* Absolute packet - the finger is on the vertical strip. |
65 | Position ranges from 1-4095, with 1 at the bottom. */ | 107 | Position ranges from 1-4095, with 1 at the bottom. */ |
diff --git a/firmware/target/arm/philips/sa9200/power-sa9200.c b/firmware/target/arm/philips/sa9200/power-sa9200.c index 1570954fcc..b6a3929e8b 100644 --- a/firmware/target/arm/philips/sa9200/power-sa9200.c +++ b/firmware/target/arm/philips/sa9200/power-sa9200.c | |||
@@ -66,6 +66,8 @@ void power_init(void) | |||
66 | { | 66 | { |
67 | logf("touchpad not ready"); | 67 | logf("touchpad not ready"); |
68 | } | 68 | } |
69 | |||
70 | /* Setups specifically for buttons are handled in button-sa9200.c */ | ||
69 | #endif | 71 | #endif |
70 | } | 72 | } |
71 | 73 | ||