Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e89c011a authored by Abir Ghosh's avatar Abir Ghosh
Browse files

qbt: Fix touch event filtering logic



Fix touch event codes in filtering logic.

Change-Id: I4de929b4c4c8591a8372ae1b195db85c57acf974
Signed-off-by: default avatarAbir Ghosh <abirg@codeaurora.org>
parent 2ff59c37
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -108,13 +108,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");
@@ -131,7 +131,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);
@@ -147,7 +148,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 ||
@@ -743,7 +745,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);

@@ -771,7 +773,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 −0
Original line number Diff line number Diff line
@@ -16,6 +16,19 @@
#define QBT_DISABLE_FD           105
#define QBT_CONFIGURE_TOUCH_FD   106

/*
 * 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