From 55d43ce7cda30f0ab06c24c438350360576bef20 Mon Sep 17 00:00:00 2001 From: litong Date: Sat, 9 May 2020 18:04:01 +0800 Subject: [PATCH] touchscreen_mmi: exports touch events handler 1. Exports touch events handler in order to obtain the touch events reported by vendor. 2. Add debug options to control whether to print log. Change-Id: I3bb89cfe5c7a5a55ca01b3a93488558db4358445 Reviewed-on: https://gerrit.mot.com/1550603 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Reviewed-by: Konstantin Makariev Tested-by: Jira Key Reviewed-by: Jialei Hao Submit-Approved: Jira Key --- .../touchscreen/touchscreen_mmi/Android.mk | 4 +++ .../input/touchscreen/touchscreen_mmi/Kbuild | 3 +++ .../touchscreen_mmi/touchscreen_mmi_gesture.c | 26 +++++++++++++++++++ include/linux/touchscreen_mmi.h | 14 ++++++++-- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/drivers/input/touchscreen/touchscreen_mmi/Android.mk b/drivers/input/touchscreen/touchscreen_mmi/Android.mk index 1d2ea412c5c1..109b72934906 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/Android.mk +++ b/drivers/input/touchscreen/touchscreen_mmi/Android.mk @@ -5,6 +5,10 @@ ifeq ($(DRM_DYNAMIC_REFRESH_RATE),true) KERNEL_CFLAGS += CONFIG_DRM_DYNAMIC_REFRESH_RATE=y endif +ifeq ($(TOUCHCLASS_MMI_DEBUG_INFO),true) + KERNEL_CFLAGS += CONFIG_TOUCHCLASS_MMI_DEBUG_INFO=y +endif + include $(CLEAR_VARS) LOCAL_MODULE := touchscreen_mmi.ko LOCAL_MODULE_TAGS := optional diff --git a/drivers/input/touchscreen/touchscreen_mmi/Kbuild b/drivers/input/touchscreen/touchscreen_mmi/Kbuild index 80516a615134..0b8d43326424 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/Kbuild +++ b/drivers/input/touchscreen/touchscreen_mmi/Kbuild @@ -8,6 +8,9 @@ endif ifneq ($(filter m y, $(CONFIG_DRM_DYNAMIC_REFRESH_RATE)),) EXTRA_CFLAGS += -DCONFIG_DRM_DYNAMIC_REFRESH_RATE endif +ifneq ($(filter m y, $(CONFIG_TOUCHCLASS_MMI_DEBUG_INFO)),) + EXTRA_CFLAGS += -DCONFIG_TOUCHCLASS_MMI_DEBUG_INFO +endif obj-m := touchscreen_mmi.o touchscreen_mmi-objs := touchscreen_mmi_class.o touchscreen_mmi_panel.o touchscreen_mmi_notif.o touchscreen_mmi_gesture.o diff --git a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c index 9c474d3cbdc9..72f10dc9fdae 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c +++ b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c @@ -60,6 +60,30 @@ static int ts_mmi_gesture_handler(struct gesture_event_data *gev) return 0; } +static int ts_mmi_touch_event_handler(struct touch_event_data *tev) +{ + switch (tev->type) { + case TS_COORDINATE_ACTION_PRESS: +#if defined(CONFIG_TOUCHCLASS_MMI_DEBUG_INFO) + pr_info("%s: [P]Finger %d: Down, x=%d, y=%d, major=%d, minor=%d", + __func__, tev->id, tev->x, tev->y, tev->major, tev->minor); +#endif + break; + + case TS_COORDINATE_ACTION_RELEASE: +#if defined(CONFIG_TOUCHCLASS_MMI_DEBUG_INFO) + pr_info("%s: [R]Finger %d: UP", __func__, tev->id); +#endif + break; + + default: + pr_info("%s: unsupport type=%d\n", __func__, tev->type); + + } + + return 0; +} + bool ts_mmi_is_sensor_enable(void) { struct ts_mmi_dev *touch_cdev; @@ -156,6 +180,8 @@ int ts_mmi_gesture_init(struct ts_mmi_dev *touch_cdev) /* export report gesture function to vendor */ touch_cdev->mdata->exports.report_gesture = ts_mmi_gesture_handler; + /* export report touch event function to vendor */ + touch_cdev->mdata->exports.report_touch_event = ts_mmi_touch_event_handler; return 0; diff --git a/include/linux/touchscreen_mmi.h b/include/linux/touchscreen_mmi.h index daa53d326d3c..aae64bd3e698 100644 --- a/include/linux/touchscreen_mmi.h +++ b/include/linux/touchscreen_mmi.h @@ -109,9 +109,18 @@ struct msm_drm_notifier *evdata = evd; \ #define TS_MMI_MAX_PANEL_LEN 16 #define TS_MMI_PILL_REGION_REQ_ARGS_NUM 3 +enum touch_event_mode { + TS_COORDINATE_ACTION_NONE = 0, + TS_COORDINATE_ACTION_PRESS, + TS_COORDINATE_ACTION_RELEASE, + TS_COORDINATE_ACTION_MOVE +}; + struct touch_event_data { - int type; /* TS_TOUCH, TS_RELEASE */ - int x, y, w, p, m; /* X, Y, area, pressure and major */ + enum touch_event_mode type; /* TS_TOUCH, TS_RELEASE */ + int id; /* Finger id */ + int x, y, w, p; /* X, Y, Area, Pressure */ + int major, minor; /* Major, Minor */ }; struct gesture_event_data { @@ -129,6 +138,7 @@ struct gesture_event_data { struct ts_mmi_class_methods { int (*report_gesture)(struct gesture_event_data *gev); int (*get_class_fname)(struct device *dev , const char **fname); + int (*report_touch_event)(struct touch_event_data *tev); struct kobject *kobj_notify; };