summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuper Liu <supercjliu@google.com>2021-03-16 13:16:27 +0800
committerSuper Liu <supercjliu@google.com>2021-03-16 14:36:53 +0800
commitb004f38e46acc289cd03ac0524c7e5f688e852c1 (patch)
treee2f42b73f9e0cea5dc5299830ab1ab5b0a2b07e1
parent49e680834a3eef009ad14cc1ca2f77b1b8ad5259 (diff)
downloadsec_touch-b004f38e46acc289cd03ac0524c7e5f688e852c1.tar.gz
touch/sec: support major and minor conversion
Conver major/minot from mm to pixel unit. Bug: 181907108 Signed-off-by: Super Liu <supercjliu@google.com> Change-Id: I0da2dab15ccac18ee6cc621c43fd554a140122a2
-rw-r--r--sec_ts.c20
-rw-r--r--sec_ts.h7
2 files changed, 21 insertions, 6 deletions
diff --git a/sec_ts.c b/sec_ts.c
index 828bd36..69bee85 100644
--- a/sec_ts.c
+++ b/sec_ts.c
@@ -1585,8 +1585,11 @@ static void sec_ts_handle_coord_event(struct sec_ts_data *ts,
SEC_TS_PRESSURE_MAX;
ts->coord[t_id].ttype = p_event_coord->ttype_3_2 << 2 |
p_event_coord->ttype_1_0 << 0;
- ts->coord[t_id].major = p_event_coord->major;
- ts->coord[t_id].minor = p_event_coord->minor;
+ ts->coord[t_id].major = p_event_coord->major *
+ ts->plat_data->mm2px;
+ ts->coord[t_id].minor = p_event_coord->minor *
+ ts->plat_data->mm2px;
+
if (!ts->coord[t_id].palm &&
(ts->coord[t_id].ttype == SEC_TS_TOUCHTYPE_PALM))
@@ -3275,6 +3278,11 @@ static int sec_ts_parse_dt(struct spi_device *client)
pdata->support_mt_pressure = true;
+ if (of_property_read_u8(np, "sec,mm2px", &pdata->mm2px) < 0)
+ pdata->mm2px = 1;
+ input_info(true, &client->dev,
+ "%s: mm2px %d\n", __func__, pdata->mm2px);
+
#ifdef PAT_CONTROL
input_info(true, &client->dev,
"%s: buffer limit: %d, lcd_id:%06X, bringup:%d, FW:%s(%d), id:%d,%d, pat_function:%d mis_cal:%d dex:%d, gesture:%d\n",
@@ -3483,8 +3491,12 @@ static void sec_ts_set_input_prop(struct sec_ts_data *ts,
0, 0);
input_set_abs_params(dev, ABS_MT_POSITION_Y, 0, ts->plat_data->max_y,
0, 0);
- input_set_abs_params(dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
- input_set_abs_params(dev, ABS_MT_TOUCH_MINOR, 0, 255, 0, 0);
+ input_set_abs_params(dev, ABS_MT_TOUCH_MAJOR, 0,
+ 255 * ts->plat_data->mm2px,
+ 0, 0);
+ input_set_abs_params(dev, ABS_MT_TOUCH_MINOR, 0,
+ 255 * ts->plat_data->mm2px,
+ 0, 0);
input_set_abs_params(dev, ABS_MT_TOOL_TYPE, MT_TOOL_FINGER,
MT_TOOL_FINGER, 0, 0);
#ifdef ABS_MT_CUSTOM
diff --git a/sec_ts.h b/sec_ts.h
index 17111cf..a290fab 100644
--- a/sec_ts.h
+++ b/sec_ts.h
@@ -817,8 +817,8 @@ struct sec_ts_coordinate {
u8 glove_flag;
u8 touch_height;
u16 mcount;
- u8 major;
- u8 minor;
+ u16 major;
+ u16 minor;
bool palm;
int palm_count;
u8 left_event;
@@ -1132,6 +1132,9 @@ struct sec_ts_plat_data {
struct drm_panel *panel;
u32 initial_panel_index;
+
+ /* convert mm to pixel for major and minor */
+ u8 mm2px;
};
int sec_ts_stop_device(struct sec_ts_data *ts);