mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
Add gesture mode support for focaltech touch
Add single tap and double tap gestures support for focaltech touch IC, gesture type receives from touch mmi class. Change-Id: Ib67d221eff3217b46f9b423b84426ef44f774826 Signed-off-by: Wenge Zhu <zhuwg1@motorola.com> Reviewed-on: https://gerrit.mot.com/2384855 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wei Deng <dengwei1@motorola.com> Reviewed-by: Jun Weng <wengjun1@motorola.com> Reviewed-by: Jichao Zou <zoujc@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
626a5f4fda
commit
111a18c9eb
5 changed files with 65 additions and 1 deletions
|
|
@ -11,6 +11,9 @@ endif
|
|||
|
||||
ifeq ($(BOARD_USES_DOUBLE_TAP),true)
|
||||
KBUILD_OPTIONS += CONFIG_INPUT_FOCALTECH_V3_MMI_ENABLE_DOUBLE_TAP=y
|
||||
ifeq ($(FTS_DOUBLE_TAP_CONTROL),true)
|
||||
KBUILD_OPTIONS += CONFIG_FTS_DOUBLE_TAP_CONTROL=y
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(BOARD_USES_TOUCH_PALM),)
|
||||
|
|
|
|||
|
|
@ -51,9 +51,13 @@ ifneq ($(filter m y, $(CONFIG_FTS_NOISE_TEST_P2P)),)
|
|||
EXTRA_CFLAGS += -DCONFIG_FTS_NOISE_TEST_P2P
|
||||
endif
|
||||
|
||||
ifneq ($(filter m y, $(CONFIG_FTS_NOISE_TEST_P2P)),)
|
||||
ifneq ($(filter m y, $(CONFIG_FTS_COMPATIBLE_WITH_GKI)),)
|
||||
EXTRA_CFLAGS += -DCONFIG_FTS_COMPATIBLE_WITH_GKI
|
||||
endif
|
||||
|
||||
ifneq ($(filter m y, $(CONFIG_FTS_DOUBLE_TAP_CONTROL)),)
|
||||
EXTRA_CFLAGS += -DCONFIG_FTS_DOUBLE_TAP_CONTROL
|
||||
endif
|
||||
|
||||
KBUILD_EXTRA_SYMBOLS += $(CURDIR)/../../kernel/msm-$(MODULE_KERNEL_VERSION)/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../../mmi_info/$(GKI_OBJ_MODULE_DIR)/Module.symvers
|
||||
|
|
|
|||
|
|
@ -266,6 +266,7 @@ struct fts_ts_data {
|
|||
#ifdef FOCALTECH_SENSOR_EN
|
||||
bool wakeable;
|
||||
#endif
|
||||
u8 gsx_cmd;
|
||||
|
||||
#ifdef FOCALTECH_PALM_SENSOR_EN
|
||||
bool palm_detection_enabled;
|
||||
|
|
|
|||
|
|
@ -51,12 +51,14 @@
|
|||
#define KEY_GESTURE_V KEY_V
|
||||
#define KEY_GESTURE_C KEY_C
|
||||
#define KEY_GESTURE_Z KEY_Z
|
||||
#define KEY_GESTURE_F1 KEY_F1
|
||||
|
||||
#define GESTURE_LEFT 0x20
|
||||
#define GESTURE_RIGHT 0x21
|
||||
#define GESTURE_UP 0x22
|
||||
#define GESTURE_DOWN 0x23
|
||||
#define GESTURE_DOUBLECLICK 0x24
|
||||
#define GESTURE_SINGLECLICK 0x27
|
||||
#define GESTURE_O 0x30
|
||||
#define GESTURE_W 0x31
|
||||
#define GESTURE_M 0x32
|
||||
|
|
@ -280,6 +282,9 @@ static void fts_gesture_report(struct input_dev *input_dev, int gesture_id)
|
|||
case GESTURE_DOUBLECLICK:
|
||||
gesture = KEY_GESTURE_U;
|
||||
break;
|
||||
case GESTURE_SINGLECLICK:
|
||||
gesture = KEY_GESTURE_F1;
|
||||
break;
|
||||
case GESTURE_O:
|
||||
gesture = KEY_GESTURE_O;
|
||||
break;
|
||||
|
|
@ -319,6 +324,31 @@ static void fts_gesture_report(struct input_dev *input_dev, int gesture_id)
|
|||
FTS_INFO("Gesture got but wakeable not set. Skip this gesture.");
|
||||
return;
|
||||
}
|
||||
#ifdef CONFIG_FTS_DOUBLE_TAP_CONTROL
|
||||
/* report double tap */
|
||||
if (gesture == KEY_GESTURE_U) {
|
||||
if (fts_data->imports && fts_data->imports->report_gesture) {
|
||||
struct gesture_event_data event;
|
||||
|
||||
FTS_INFO("invoke imported report double tap gesture function\n");
|
||||
event.evcode = 4;
|
||||
/* call class method */
|
||||
ret = fts_data->imports->report_gesture(&event);
|
||||
++report_cnt;
|
||||
}
|
||||
/* report single tap */
|
||||
} else if (gesture == KEY_GESTURE_F1) {
|
||||
if (fts_data->imports && fts_data->imports->report_gesture) {
|
||||
struct gesture_event_data event;
|
||||
|
||||
FTS_INFO("invoke imported report single tap gesture function\n");
|
||||
event.evcode = 1;
|
||||
/* call class method */
|
||||
ret = fts_data->imports->report_gesture(&event);
|
||||
++report_cnt;
|
||||
}
|
||||
}
|
||||
#else
|
||||
/* report single tap */
|
||||
if (gesture == KEY_GESTURE_U) {
|
||||
if (fts_data->imports && fts_data->imports->report_gesture) {
|
||||
|
|
@ -331,6 +361,7 @@ static void fts_gesture_report(struct input_dev *input_dev, int gesture_id)
|
|||
++report_cnt;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
FTS_INFO("input report: %d", report_cnt);
|
||||
if (report_cnt >= REPORT_MAX_COUNT)
|
||||
|
|
@ -438,7 +469,11 @@ int fts_gesture_suspend(struct fts_ts_data *ts_data)
|
|||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
#ifdef CONFIG_FTS_DOUBLE_TAP_CONTROL
|
||||
fts_write_reg(0xD1, ts_data->gsx_cmd);
|
||||
#else
|
||||
fts_write_reg(0xD1, 0xFF);
|
||||
#endif
|
||||
fts_write_reg(0xD2, 0xFF);
|
||||
fts_write_reg(0xD5, 0xFF);
|
||||
fts_write_reg(0xD6, 0xFF);
|
||||
|
|
|
|||
|
|
@ -235,6 +235,7 @@ static int fts_mmi_panel_state(struct device *dev,
|
|||
struct fts_ts_platform_data *pdata;
|
||||
struct fts_ts_data *ts_data;
|
||||
int ret = 0;
|
||||
static u8 gesture_command = 0;
|
||||
|
||||
GET_TS_DATA(dev);
|
||||
pdata = ts_data->pdata;
|
||||
|
|
@ -259,6 +260,26 @@ static int fts_mmi_panel_state(struct device *dev,
|
|||
#endif
|
||||
break;
|
||||
|
||||
case TS_MMI_PM_GESTURE_CLI_SINGLE:
|
||||
gesture_command |= (1 << 7);
|
||||
FTS_INFO("Enable GESTURE_CLI_SINGLE command: %02x", gesture_command);
|
||||
break;
|
||||
|
||||
case TS_MMI_PM_GESTURE_CLI_DOUBLE:
|
||||
gesture_command |= (1 << 4);
|
||||
FTS_INFO("Enable GESTURE_CLI_DOUBLE command: %02x", gesture_command);
|
||||
break;
|
||||
|
||||
case TS_MMI_PM_GESTURE_SWITCH:
|
||||
FTS_INFO("CLI GESTURE SWITCH command: %02x", gesture_command);
|
||||
ts_data->gsx_cmd = gesture_command;
|
||||
if (fts_gesture_suspend(ts_data) == 0) {
|
||||
ts_data->wakeable = true;
|
||||
ts_data->gesture_support = true;
|
||||
}
|
||||
gesture_command = 0;
|
||||
break;
|
||||
|
||||
case TS_MMI_PM_ACTIVE:
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in a new issue