diff options
author | Super Liu <supercjliu@google.com> | 2021-03-16 13:16:27 +0800 |
---|---|---|
committer | Super Liu <supercjliu@google.com> | 2021-03-16 14:36:53 +0800 |
commit | b004f38e46acc289cd03ac0524c7e5f688e852c1 (patch) | |
tree | e2f42b73f9e0cea5dc5299830ab1ab5b0a2b07e1 | |
parent | 49e680834a3eef009ad14cc1ca2f77b1b8ad5259 (diff) | |
download | sec_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.c | 20 | ||||
-rw-r--r-- | sec_ts.h | 7 |
2 files changed, 21 insertions, 6 deletions
@@ -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 @@ -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); |