From d45b34be1ea85155f5253eb2abccb86b8eb4ede8 Mon Sep 17 00:00:00 2001 From: Wenge Zhu Date: Tue, 16 Aug 2022 15:46:32 +0800 Subject: [PATCH] Support normal mode switch corner suppression level Normal mode: In case corner area mistake touch when phone is on horizontal screen state,when phone rotate left or right,FrameWork will send rotation and corner suppression level, then driver will send switch command to IC,Firmware will disable corner area touch according to its own logic. Change-Id: Ib6864cf2a8027beea2066c41e2441359f52d20e4 Signed-off-by: Wenge Zhu Reviewed-on: https://gerrit.mot.com/2363420 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wei Deng Reviewed-by: Jianqi Yang Submit-Approved: Jira Key --- .../goodix_berlin_mmi/goodix_ts_mmi.c | 25 ++++++++++++++++--- .../goodix_berlin_mmi/goodix_ts_mmi.h | 4 +++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.c b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.c index 818ac7d2c341..ed68d1a2f4f0 100644 --- a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.c +++ b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.c @@ -77,6 +77,10 @@ static DEVICE_ATTR(timestamp, S_IRUGO, goodix_ts_timestamp_show, NULL); #define DEFAULT_MODE 0 #define MAX_ATTRS_ENTRIES 10 +#define NORMAL_DEFAULT_MODE 10 +#define NORMAL_SMALL_MODE 11 +#define NORMAL_BIG_MODE 12 + #define ADD_ATTR(name) { \ if (idx < MAX_ATTRS_ENTRIES) { \ dev_info(dev, "%s: [%d] adding %p\n", __func__, idx, &dev_attr_##name.attr); \ @@ -592,13 +596,26 @@ static ssize_t goodix_ts_edge_store(struct device *dev, if (ret < 2) return -EINVAL; - if (DEFAULT_MODE == args[0]) { + switch (args[0]) { + case DEFAULT_MODE: edge_cmd[1] = DEFAULT_EDGE; - } else if (SMALL_MODE == args[0]) { + break; + case SMALL_MODE: edge_cmd[1] = SMALL_EDGE; - } else if (BIG_MODE == args[0]) { + break; + case BIG_MODE: edge_cmd[1] = BIG_EDGE; - } else { + break; + case NORMAL_DEFAULT_MODE: + edge_cmd[1] = NORMAL_DEFAULT_EDGE; + break; + case NORMAL_SMALL_MODE: + edge_cmd[1] = NORMAL_SMALL_EDGE; + break; + case NORMAL_BIG_MODE: + edge_cmd[1] = NORMAL_BIG_EDGE; + break; + default: ts_err("Invalid edge mode: %d!\n", args[0]); return -EINVAL; } diff --git a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.h b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.h index 40cbd9506855..25274c333625 100644 --- a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.h +++ b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_mmi.h @@ -45,6 +45,10 @@ static int inline goodix_ts_mmi_dev_unregister(struct platform_device *ts_device #define SMALL_EDGE 0x40 #define BIG_EDGE 0x80 +#define NORMAL_DEFAULT_EDGE 0x08 +#define NORMAL_SMALL_EDGE 0x48 +#define NORMAL_BIG_EDGE 0x88 + #define STYLUS_MODE_SWITCH_CMD 0xA4 #define EXIT_HIGH_REPORT_RATE_CMD 0xC100