Merge "qbt: Fix touch event filtering logic"

This commit is contained in:
qctecmdr authored and Gerrit - the friendly Code Review server committed 2019-08-10 03:28:16 -07:00
commit 2fdf08a717
2 files changed
+23 -7

No files matched your search

+10 -7
View File
@@ -109,13 +109,13 @@ static void qbt_add_touch_event(struct touch_event *evt)
event.touch_valid = true;
switch (evt->type) {
case 'D':
event.state = 1;
event.state = QBT_EVENT_FINGER_DOWN;
break;
case 'U':
event.state = 0;
event.state = QBT_EVENT_FINGER_UP;
break;
case 'M':
event.state = 2;
event.state = QBT_EVENT_FINGER_MOVE;
break;
default:
pr_err("Invalid touch event type\n");
@@ -132,7 +132,8 @@ static void qbt_radius_filter(struct touch_event *evt)
{
struct qbt_drvdata *drvdata = drvdata_g;
struct fd_event event;
int fifo_len = 0, last_x = 0, last_y = 0, last_state = 0,
int fifo_len = 0, last_x = 0, last_y = 0,
last_state = QBT_EVENT_FINGER_UP,
delta_x = 0, delta_y = 0, i = 0;
fifo_len = kfifo_len(&drvdata->fd_events);
@@ -148,7 +149,8 @@ static void qbt_radius_filter(struct touch_event *evt)
kfifo_put(&drvdata->fd_events, event);
}
}
if (last_state == 1 || last_state == 3) {
if (last_state == QBT_EVENT_FINGER_DOWN ||
last_state == QBT_EVENT_FINGER_MOVE) {
delta_x = abs(last_x - evt->x);
delta_y = abs(last_y - evt->y);
if (delta_x > drvdata->touch_config.rad_x ||
@@ -768,7 +770,7 @@ static void qbt_fd_report_event(struct qbt_drvdata *drvdata, int state)
drvdata->fd_gpio.event_reported = 1;
drvdata->fd_gpio.last_gpio_state = state;
event.state = state ? 1 : 2;
event.state = state;
event.touch_valid = false;
do_gettimeofday(&event.timestamp);
@@ -796,7 +798,8 @@ static void qbt_gpio_work_func(struct work_struct *work)
drvdata = container_of(work, struct qbt_drvdata, fd_gpio.work);
state = (__gpio_get_value(drvdata->fd_gpio.gpio) ? 1 : 0)
state = (__gpio_get_value(drvdata->fd_gpio.gpio) ?
QBT_EVENT_FINGER_DOWN : QBT_EVENT_FINGER_UP)
^ drvdata->fd_gpio.active_low;
qbt_fd_report_event(drvdata, state);
+13
View File
@@ -18,6 +18,19 @@
#define QBT_ACQUIRE_WAKELOCK 107
#define QBT_RELEASE_WAKELOCK 108
/*
* enum qbt_finger_events -
* enumeration of qbt finger events
* @QBT_EVENT_FINGER_UP - finger up detected
* @QBT_EVENT_FINGER_DOWN - finger down detected
* @QBT_EVENT_FINGER_MOVE - finger move detected
*/
enum qbt_finger_events {
QBT_EVENT_FINGER_UP,
QBT_EVENT_FINGER_DOWN,
QBT_EVENT_FINGER_MOVE
};
/*
* enum qbt_fw_event -
* enumeration of firmware events