summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c')
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
index 0eb1c07e74..d1fd2eb702 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c
@@ -40,6 +40,22 @@
40static short last_x, last_y, last_z1, last_z2; /* for the touch screen */ 40static short last_x, last_y, last_z1, last_z2; /* for the touch screen */
41static bool touch_available = false; 41static bool touch_available = false;
42 42
43static enum touchpad_mode current_mode = TOUCHPAD_POINT;
44static int touchpad_buttons[3][3] = {
45 {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT},
46 {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT},
47 {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT},
48};
49
50void touchpad_set_mode(enum touchpad_mode mode)
51{
52 current_mode = mode;
53}
54enum touchpad_mode touchpad_get_mode(void)
55{
56 return current_mode;
57}
58
43static struct touch_calibration_point topleft, bottomright; 59static struct touch_calibration_point topleft, bottomright;
44 60
45/* Jd's tests.. These will hopefully work for everyone so we dont have to 61/* Jd's tests.. These will hopefully work for everyone so we dont have to
@@ -165,7 +181,19 @@ int button_read_device(int *data)
165 last_x = x; 181 last_x = x;
166 last_y = y; 182 last_y = y;
167 *data = touch_to_pixels(x, y); 183 *data = touch_to_pixels(x, y);
168 r_button |= BUTTON_TOUCHPAD; 184 switch (current_mode)
185 {
186 case TOUCHPAD_POINT:
187 r_button |= BUTTON_TOUCHPAD;
188 break;
189 case TOUCHPAD_BUTTON:
190 {
191 int px_x = ((*data&0xffff0000)>>16), px_y = ((*data&0x0000ffff));
192 r_button |= touchpad_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)];
193 oldbutton = r_button;
194 break;
195 }
196 }
169 } 197 }
170 last_touch = current_tick; 198 last_touch = current_tick;
171 touch_available = false; 199 touch_available = false;
@@ -219,6 +247,6 @@ void GIO14(void)
219 read_battery_inputs(); 247 read_battery_inputs();
220 break; 248 break;
221 } 249 }
222 touch_available = true; 250 //touch_available = true;
223 IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ 251 IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */
224} 252}