genevn: optimize ili7807s gesture mode

tp:
Receive gesture type through extended API and remove redundant codes.

Change-Id: Ie528231b236cbd313c46bcc7fd5d2a49334a3f08
Reviewed-on: https://gerrit.mot.com/2426459
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Yeqing Wang <wangyq13@motorola.com>
Reviewed-by: <zhuwg1@motorola.com>
Reviewed-by: Jianqi Yang <yangj@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
Xiaojun Lv 2022-11-10 23:18:47 +08:00 • committed by lvxj4
commit 210d3a0a6f
4 changed files with 41 additions and 14 deletions

View file

@ -67,6 +67,10 @@ ifeq ($(GTP_ENABLE_DDA_STYLUS),true)
KBUILD_OPTIONS += CONFIG_GTP_DDA_STYLUS=y
endif
ifeq ($(BOARD_USES_DOUBLE_TAP_CTRL),true)
KBUILD_OPTIONS += CONFIG_BOARD_USES_DOUBLE_TAP_CTRL=y
endif
include $(CLEAR_VARS)
ifneq ($(BOARD_USES_DOUBLE_TAP),)
LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/sensors_class.ko

View file

@ -17,6 +17,10 @@ ifneq ($(filter m y,$(CONFIG_INPUT_ILI_0FLASH_MMI_NOTIFY_TOUCH_STATE)),)
EXTRA_CFLAGS += -DILI_SET_TOUCH_STATE
endif
ifneq ($(filter m y, $(CONFIG_BOARD_USES_DOUBLE_TAP_CTRL)),)
EXTRA_CFLAGS += -DCONFIG_BOARD_USES_DOUBLE_TAP_CTRL
endif
ifneq ($(filter m y,$(CONFIG_INPUT_ILI_PANEL_NOTIFICATIONS)),)
EXTRA_CFLAGS += -DILI_CONFIG_PANEL_NOTIFICATIONS
endif

View file

@ -220,6 +220,14 @@ do { \
pr_info("ILITEK: (%s, %d): " fmt, __func__, __LINE__, ##arg); \
} while (0)
#define GET_TS_DATA(dev) { \
ts_data = dev_get_drvdata(dev); \
if (!ts_data) { \
ILI_ERR("Failed to get driver data"); \
return -ENODEV; \
} \
}
#define ERR_ALLOC_MEM(X) ((IS_ERR(X) || X == NULL) ? 1 : 0)
#define K (1024)
#define M (K * K)

View file

@ -184,6 +184,12 @@ static int ili_mmi_firmware_update(struct device *dev, char *fwname)
static int ili_mmi_panel_state(struct device *dev,
enum ts_mmi_pm_mode from, enum ts_mmi_pm_mode to)
{
struct ilitek_ts_data __maybe_unused *ts_data;
#if defined(CONFIG_BOARD_USES_DOUBLE_TAP_CTRL)
unsigned char gesture_type = 0;
#endif
GET_TS_DATA(dev);
ILI_INFO("%s: panel state change: %d->%d\n", __func__, from, to);
ILI_INFO("panel state change: %d->%d\n", from, to);
switch (to) {
@ -191,27 +197,32 @@ static int ili_mmi_panel_state(struct device *dev,
#ifdef ILI_SET_TOUCH_STATE
ilits->should_enable_gesture = true;
touch_set_state(TS_MMI_PM_GESTURE, TOUCH_PANEL_IDX_PRIMARY);
#else
ilits->should_enable_gesture = false;
#endif
break;
case TS_MMI_PM_GESTURE_SINGLE:
ilits->ges_sym.single_tap = SINGLE_TAP;
ILI_INFO("enable single gesture mode\n");
break;
case TS_MMI_PM_GESTURE_DOUBLE:
ilits->ges_sym.double_tap = DOUBLE_TAP;
ILI_INFO("enable double gesture mode\n");
break;
case TS_MMI_PM_GESTURE_SWITCH:
#ifdef ILI_SET_TOUCH_STATE
ilits->should_enable_gesture = true;
touch_set_state(TS_MMI_PM_GESTURE, TOUCH_PANEL_IDX_PRIMARY);
#endif
#if defined(CONFIG_BOARD_USES_DOUBLE_TAP_CTRL)
if (ts_data->imports && ts_data->imports->get_gesture_type) {
ts_data->imports->get_gesture_type(ts_data->dev, &gesture_type);
}
if (gesture_type & TS_MMI_GESTURE_SINGLE) {
ilits->ges_sym.single_tap = SINGLE_TAP;
ILI_INFO("enable single gesture mode\n");
}
if (gesture_type & TS_MMI_GESTURE_DOUBLE) {
ilits->ges_sym.double_tap = DOUBLE_TAP;
ILI_INFO("enable double gesture mode\n");
}
/*---write command to enter "wakeup gesture mode"---*/
ili_sleep_handler(TP_SUSPEND);
ilits->ges_sym.single_tap = OFF;
ilits->ges_sym.double_tap = OFF;
#endif
break;
case TS_MMI_PM_DEEPSLEEP:
ilits->should_enable_gesture = false;
#ifdef ILI_SET_TOUCH_STATE