Loading drivers/soc/qcom/qbt_handler.c +10 −7 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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); Loading @@ -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 || Loading Loading @@ -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); Loading Loading @@ -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); Loading include/uapi/linux/qbt_handler.h +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
drivers/soc/qcom/qbt_handler.c +10 −7 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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); Loading @@ -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 || Loading Loading @@ -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); Loading Loading @@ -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); Loading
include/uapi/linux/qbt_handler.h +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading