diff options
author | PixelBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com> | 2022-10-23 18:34:06 -0700 |
---|---|---|
committer | SecurityBot <android-nexus-securitybot@system.gserviceaccount.com> | 2022-10-23 18:34:07 -0700 |
commit | 7a86265ed8bcf40e13367c3a56e5db8d95e42d4c (patch) | |
tree | 0742048b799e3bd5ac6b8a98f043caa521372024 | |
parent | 5eae3a6bf991b589a5051c610b06827d83d11efe (diff) | |
parent | 9f6a34bcedb0993e5652a678c5c01781bd66a15c (diff) | |
download | novatek_touch-7a86265ed8bcf40e13367c3a56e5db8d95e42d4c.tar.gz |
Merge android13-gs-pixel-5.10-tm-qpr2 into android13-gs-pixel-5.10-udc
SBMerger: 478053055
Change-Id: Ia55b39a2938a86ac4bfde7c0120f5b58ac1e3d07
Signed-off-by: SecurityBot <android-nexus-securitybot@system.gserviceaccount.com>
-rw-r--r-- | nt36xxx/nt36xxx.c | 194 | ||||
-rw-r--r-- | nt36xxx/nt36xxx.h | 28 | ||||
-rw-r--r-- | nt36xxx/nt36xxx_ext_api.c | 61 | ||||
-rw-r--r-- | nt36xxx/nt36xxx_goog.c | 52 |
4 files changed, 194 insertions, 141 deletions
diff --git a/nt36xxx/nt36xxx.c b/nt36xxx/nt36xxx.c index 09b806c..2c9a706 100644 --- a/nt36xxx/nt36xxx.c +++ b/nt36xxx/nt36xxx.c @@ -111,24 +111,43 @@ const uint16_t touch_key_array[TOUCH_KEY_NUM] = { }; #endif -const uint16_t gesture_key_array[] = { - KEY_POWER, //GESTURE_WORD_C - KEY_POWER, //GESTURE_WORD_W - KEY_POWER, //GESTURE_WORD_V #if defined(CONFIG_SOC_GOOGLE) - KEY_WAKEUP, //GESTURE_DOUBLE_CLICK +const unsigned int gesture_keycode[GESTURE_ID_MAX] = { + [GESTURE_SINGLE_TAP] = KEY_WAKEUP, + [GESTURE_DOUBLE_TAP] = KEY_WAKEUP, +}; #else - KEY_POWER, //GESTURE_DOUBLE_CLICK -#endif - KEY_POWER, //GESTURE_WORD_Z - KEY_POWER, //GESTURE_WORD_M - KEY_POWER, //GESTURE_WORD_O - KEY_POWER, //GESTURE_WORD_e - KEY_POWER, //GESTURE_WORD_S - KEY_POWER, //GESTURE_SLIDE_UP - KEY_POWER, //GESTURE_SLIDE_DOWN - KEY_POWER, //GESTURE_SLIDE_LEFT - KEY_POWER, //GESTURE_SLIDE_RIGHT +const unsigned int gesture_keycode[GESTURE_ID_MAX] = { + [GESTURE_WORD_C] = KEY_POWER, + [GESTURE_WORD_W] = KEY_POWER, + [GESTURE_SINGLE_TAP] = KEY_POWER, + [GESTURE_DOUBLE_TAP] = KEY_POWER, + [GESTURE_WORD_Z] = KEY_POWER, + [GESTURE_WORD_M] = KEY_POWER, + [GESTURE_WORD_O] = KEY_POWER, + [GESTURE_WORD_e] = KEY_POWER, + [GESTURE_WORD_S] = KEY_POWER, + [GESTURE_SLIDE_UP] = KEY_POWER, + [GESTURE_SLIDE_DOWN] = KEY_POWER, + [GESTURE_SLIDE_LEFT] = KEY_POWER, + [GESTURE_SLIDE_RIGHT] = KEY_POWER, +}; +#endif + +const char *gesture_string[GESTURE_ID_MAX] = { + [GESTURE_WORD_C] = "Word-C", + [GESTURE_WORD_W] = "Word-W", + [GESTURE_SINGLE_TAP] = "Single Tap", + [GESTURE_DOUBLE_TAP] = "Double Tap", + [GESTURE_WORD_Z] = "Word-Z", + [GESTURE_WORD_M] = "Word-M", + [GESTURE_WORD_O] = "Word-O", + [GESTURE_WORD_e] = "Word-e", + [GESTURE_WORD_S] = "Word-S", + [GESTURE_SLIDE_UP] = "Slide UP", + [GESTURE_SLIDE_DOWN] = "Slide DOWN", + [GESTURE_SLIDE_LEFT] = "Slide LEFT", + [GESTURE_SLIDE_RIGHT] = "Slide UP", }; #ifdef CONFIG_MTK_SPI @@ -845,6 +864,11 @@ info_retry: ts->heatmap_host_cmd = HEATMAP_HOST_CMD_DISABLE; nvt_set_heatmap_host_cmd(ts); +#if NVT_TOUCH_EXT_API + /* Get DTTW initialized conf. */ + nvt_get_dttw_conf(); +#endif + ret = 0; out: @@ -1064,19 +1088,6 @@ static void nvt_flash_proc_deinit(void) } #endif -#define GESTURE_WORD_C 12 -#define GESTURE_WORD_W 13 -#define GESTURE_WORD_V 14 -#define GESTURE_DOUBLE_CLICK 15 -#define GESTURE_WORD_Z 16 -#define GESTURE_WORD_M 17 -#define GESTURE_WORD_O 18 -#define GESTURE_WORD_e 19 -#define GESTURE_WORD_S 20 -#define GESTURE_SLIDE_UP 21 -#define GESTURE_SLIDE_DOWN 22 -#define GESTURE_SLIDE_LEFT 23 -#define GESTURE_SLIDE_RIGHT 24 /* customized gesture id */ #define DATA_PROTOCOL 30 @@ -1092,83 +1103,29 @@ return: *******************************************************/ void nvt_ts_wakeup_gesture_report(uint8_t gesture_id, uint8_t *data) { - uint32_t keycode = 0; + unsigned int keycode = 0; uint8_t func_type = data[2]; uint8_t func_id = data[3]; - /* support fw specifal data protocol */ + /* support fw special data protocol */ if ((gesture_id == DATA_PROTOCOL) && (func_type == FUNCPAGE_GESTURE)) { gesture_id = func_id; - } else if (gesture_id > DATA_PROTOCOL) { - NVT_ERR("gesture_id %d is invalid, func_type=%d, func_id=%d\n", gesture_id, + } else if (gesture_id > DATA_PROTOCOL || gesture_id >= GESTURE_ID_MAX) { + NVT_ERR("gesture_id %d is invalid, func_type %d, func_id %d\n", gesture_id, func_type, func_id); return; } - NVT_LOG("gesture_id = %d\n", gesture_id); - - switch (gesture_id) { - case GESTURE_WORD_C: - NVT_LOG("Gesture : Word-C.\n"); - keycode = gesture_key_array[0]; - break; - case GESTURE_WORD_W: - NVT_LOG("Gesture : Word-W.\n"); - keycode = gesture_key_array[1]; - break; - case GESTURE_WORD_V: - NVT_LOG("Gesture : Word-V.\n"); - keycode = gesture_key_array[2]; - break; - case GESTURE_DOUBLE_CLICK: - NVT_LOG("Gesture : Double Click.\n"); - keycode = gesture_key_array[3]; - break; - case GESTURE_WORD_Z: - NVT_LOG("Gesture : Word-Z.\n"); - keycode = gesture_key_array[4]; - break; - case GESTURE_WORD_M: - NVT_LOG("Gesture : Word-M.\n"); - keycode = gesture_key_array[5]; - break; - case GESTURE_WORD_O: - NVT_LOG("Gesture : Word-O.\n"); - keycode = gesture_key_array[6]; - break; - case GESTURE_WORD_e: - NVT_LOG("Gesture : Word-e.\n"); - keycode = gesture_key_array[7]; - break; - case GESTURE_WORD_S: - NVT_LOG("Gesture : Word-S.\n"); - keycode = gesture_key_array[8]; - break; - case GESTURE_SLIDE_UP: - NVT_LOG("Gesture : Slide UP.\n"); - keycode = gesture_key_array[9]; - break; - case GESTURE_SLIDE_DOWN: - NVT_LOG("Gesture : Slide DOWN.\n"); - keycode = gesture_key_array[10]; - break; - case GESTURE_SLIDE_LEFT: - NVT_LOG("Gesture : Slide LEFT.\n"); - keycode = gesture_key_array[11]; - break; - case GESTURE_SLIDE_RIGHT: - NVT_LOG("Gesture : Slide RIGHT.\n"); - keycode = gesture_key_array[12]; - break; - default: - break; - } - - if (keycode > 0) { + keycode = gesture_keycode[gesture_id]; + if (keycode) { + NVT_LOG("Gesture: %s(%d) triggered and report keycode(%d).\n", + gesture_string[gesture_id], gesture_id, keycode); input_report_key(ts->input_dev, keycode, 1); input_sync(ts->input_dev); input_report_key(ts->input_dev, keycode, 0); input_sync(ts->input_dev); + } else { + NVT_ERR("invalid gesture_id %d!\n", gesture_id); } } @@ -1918,6 +1875,17 @@ static irqreturn_t nvt_ts_work_func(int irq, void *data) // pen_tilt_x, pen_tilt_y, pen_distance, pen_btn1, pen_btn2, pen_battery); input_set_timestamp(ts->pen_input_dev, ts->timestamp); + + /* Snapshot some stylus context information for + * offload + */ + ts->pen_active = 1; + ts->pen_offload_coord.status = COORD_STATUS_PEN; + ts->pen_offload_coord.x = pen_x; + ts->pen_offload_coord.y = pen_y; + ts->pen_offload_coord.pressure = pen_pressure; + ts->pen_offload_coord_timestamp = ts->timestamp; + input_report_abs(ts->pen_input_dev, ABS_X, pen_x); input_report_abs(ts->pen_input_dev, ABS_Y, pen_y); input_report_abs(ts->pen_input_dev, ABS_PRESSURE, pen_pressure); @@ -1938,6 +1906,13 @@ static irqreturn_t nvt_ts_work_func(int irq, void *data) } } else { // pen_format_id = 0xFF, i.e. no pen present input_set_timestamp(ts->pen_input_dev, ts->timestamp); + + /* Snapshot some stylus context information for offload */ + ts->pen_active = 0; + ts->pen_offload_coord_timestamp = ts->timestamp; + memset(&ts->pen_offload_coord, 0, + sizeof(ts->pen_offload_coord)); + input_report_abs(ts->pen_input_dev, ABS_X, 0); input_report_abs(ts->pen_input_dev, ABS_Y, 0); input_report_abs(ts->pen_input_dev, ABS_PRESSURE, 0); @@ -2355,12 +2330,11 @@ static int32_t nvt_ts_probe(struct spi_device *client) #if WAKEUP_GESTURE for (retry = 0; - retry < (sizeof(gesture_key_array) / sizeof(gesture_key_array[0])); + retry < ARRAY_SIZE(gesture_keycode); retry++) { - input_set_capability(ts->input_dev, EV_KEY, gesture_key_array[retry]); + if (gesture_keycode[retry]) + input_set_capability(ts->input_dev, EV_KEY, gesture_keycode[retry]); } -#elif defined(CONFIG_SOC_GOOGLE) - input_set_capability(ts->input_dev, EV_KEY, KEY_WAKEUP); #endif snprintf(ts->phys, sizeof(ts->phys), "input/ts"); @@ -2450,7 +2424,7 @@ static int32_t nvt_ts_probe(struct spi_device *client) ts->gti = goog_touch_interface_probe(ts, &ts->client->dev, ts->input_dev, nvt_callback, NULL); if (ts->gti == NULL) { - NVT_ERR("offload probe failed. ret=%d!\n", ret); + NVT_ERR("goog_touch_interface probe failed. ret=%d!\n", ret); goto err_goog_touch_interface; } #ifdef GOOG_TOUCH_INTERFACE @@ -2979,27 +2953,8 @@ int nvt_ts_suspend(struct device *dev) input_sync(ts->pen_input_dev); } -#if WAKEUP_GESTURE - if (ts->wkg_flag) { - switch (nvt_set_dttw(ts->wkg_flag)) { - case 1: - NVT_LOG("DTTW conf: area max/min %d %d, contact max/min %d %d.\n", - ts->dttw_touch_area_max, ts->dttw_touch_area_min, - ts->dttw_contact_duration_max, ts->dttw_contact_duration_min); - NVT_LOG("DTTW conf: tap offset %d, gap max/min %d %d.\n", - ts->dttw_tap_offset, - ts->dttw_tap_gap_duration_max, ts->dttw_tap_gap_duration_min); - NVT_LOG("DTTW conf: motion %d, edge %d.\n", - ts->dttw_motion_tolerance, ts->dttw_detection_window_edge); - break; - case 0: - NVT_LOG("DTTW conf: off.\n"); - break; - default: - NVT_ERR("DTTW conf: failed to setup.\n"); - break; - } - } +#if (WAKEUP_GESTURE) && (NVT_TOUCH_EXT_API) + nvt_set_dttw(ts->wkg_flag, false); #endif if (ts->wkg_flag) { @@ -3019,7 +2974,6 @@ int nvt_ts_suspend(struct device *dev) mutex_unlock(&ts->lock); - #if defined(CONFIG_SOC_GOOGLE) if (!ts->wkg_flag) nvt_pinctrl_configure(ts, false); diff --git a/nt36xxx/nt36xxx.h b/nt36xxx/nt36xxx.h index e6531a0..b70d650 100644 --- a/nt36xxx/nt36xxx.h +++ b/nt36xxx/nt36xxx.h @@ -117,7 +117,6 @@ extern const uint16_t touch_key_array[TOUCH_KEY_NUM]; #define REPORT_PROTOCOL_B 0 #define NVT_TOUCH_MP 1 #define WAKEUP_GESTURE 1 -extern const uint16_t gesture_key_array[]; #define BOOT_UPDATE_FIRMWARE 1 #define BOOT_UPDATE_FIRMWARE_MS_DELAY 100 #define BOOT_UPDATE_FIRMWARE_NAME "novatek_ts_fw.bin" @@ -179,6 +178,23 @@ enum { /* FW History */ #define NVT_HISTORY_BUF_LEN (65 * 4) +enum gesture_id : u8 { + GESTURE_WORD_C = 12, + GESTURE_WORD_W = 13, + GESTURE_SINGLE_TAP = 14, + GESTURE_DOUBLE_TAP = 15, + GESTURE_WORD_Z = 16, + GESTURE_WORD_M = 17, + GESTURE_WORD_O = 18, + GESTURE_WORD_e = 19, + GESTURE_WORD_S = 20, + GESTURE_SLIDE_UP = 21, + GESTURE_SLIDE_DOWN = 22, + GESTURE_SLIDE_LEFT = 23, + GESTURE_SLIDE_RIGHT = 24, + GESTURE_ID_MAX, +}; + struct nvt_ts_data { struct spi_device *client; struct input_dev *input_dev; @@ -300,6 +316,13 @@ struct nvt_ts_data { uint32_t extra_spi_buf_size; uint8_t *extra_spi_buf; uint32_t touch_heatmap_comp_len; + + /* + * Stylus context used by touch_offload + */ + struct TouchOffloadCoord pen_offload_coord; + ktime_t pen_offload_coord_timestamp; + u8 pen_active; }; #if NVT_TOUCH_PROC @@ -368,7 +391,8 @@ extern void nvt_read_fw_history(uint32_t addr); #if NVT_TOUCH_EXT_API extern int32_t nvt_extra_api_init(void); extern void nvt_extra_api_deinit(void); -extern ssize_t nvt_set_dttw(uint8_t wkg_flag); +extern void nvt_get_dttw_conf(void); +extern ssize_t nvt_set_dttw(uint8_t wkg_flag, bool check_result); #endif #if NVT_TOUCH_EXT_USI extern int32_t nvt_extra_usi_init(void); diff --git a/nt36xxx/nt36xxx_ext_api.c b/nt36xxx/nt36xxx_ext_api.c index e468182..0553d73 100644 --- a/nt36xxx/nt36xxx_ext_api.c +++ b/nt36xxx/nt36xxx_ext_api.c @@ -1363,24 +1363,14 @@ static uint16_t nvt_get_dttw_para(uint64_t dttw_addr) return ((uint16_t)(spi_buf[2] << 8) + spi_buf[1]); } -ssize_t nvt_set_dttw(uint8_t wkg_flag) +ssize_t nvt_set_dttw(uint8_t wkg_flag, bool check_result) { uint8_t spi_buf[3] = {0}; uint16_t cmd_test_bit = DTTW_MODE_CMD_TEST_BIT; - int32_t ret; + int32_t ret = 0; NVT_LOG("++\n"); - ts->dttw_touch_area_max = nvt_get_dttw_para(DTTW_TOUCH_AREA_MAX_ADDR); - ts->dttw_touch_area_min = nvt_get_dttw_para(DTTW_TOUCH_AREA_MIN_ADDR); - ts->dttw_contact_duration_max = nvt_get_dttw_para(DTTW_CONTACT_DURATION_MAX_ADDR); - ts->dttw_contact_duration_min = nvt_get_dttw_para(DTTW_CONTACT_DURATION_MIN_ADDR); - ts->dttw_tap_offset = nvt_get_dttw_para(DTTW_TAP_OFFSET_ADDR); - ts->dttw_tap_gap_duration_max = nvt_get_dttw_para(DTTW_TAP_GAP_DURATION_MAX_ADDR); - ts->dttw_tap_gap_duration_min = nvt_get_dttw_para(DTTW_TAP_GAP_DURATION_MIN_ADDR); - ts->dttw_motion_tolerance = nvt_get_dttw_para(DTTW_MOTION_TOLERANCE_ADDR); - ts->dttw_detection_window_edge = nvt_get_dttw_para(DTTW_DETECTION_WINDOW_EDGE_ADDR); - if (wkg_flag) { spi_buf[0] = EVENT_MAP_HOST_CMD; spi_buf[1] = 0x70; @@ -1392,12 +1382,27 @@ ssize_t nvt_set_dttw(uint8_t wkg_flag) spi_buf[2] = 0x30; CTP_SPI_WRITE(ts->client, spi_buf, 3); } - msleep(20); - ret = nvt_check_api_cmd_result(cmd_test_bit, wkg_flag == 1); - if (ret) { - NVT_ERR("failed, ret = %d\n", ret); - return -EINVAL; + if (check_result) { + msleep(20); + ret = nvt_check_api_cmd_result(cmd_test_bit, wkg_flag == 1); + if (ret) { + NVT_ERR("DTTW conf: failed to setup, ret = %d.\n", ret); + return -EINVAL; + } + } + + if (wkg_flag) { + NVT_LOG("DTTW conf: area max/min %d %d, contact max/min %d %d.\n", + ts->dttw_touch_area_max, ts->dttw_touch_area_min, + ts->dttw_contact_duration_max, ts->dttw_contact_duration_min); + NVT_LOG("DTTW conf: tap offset %d, gap max/min %d %d.\n", + ts->dttw_tap_offset, + ts->dttw_tap_gap_duration_max, ts->dttw_tap_gap_duration_min); + NVT_LOG("DTTW conf: motion %d, edge %d.\n", + ts->dttw_motion_tolerance, ts->dttw_detection_window_edge); + } else { + NVT_LOG("DTTW conf: off.\n"); } NVT_LOG("--\n"); @@ -2340,4 +2345,26 @@ void nvt_extra_api_deinit(void) rawdata_uniformity_spi_buf = NULL; NVT_LOG("--\n"); } + +void nvt_get_dttw_conf(void) +{ + if (!ts->dttw_touch_area_max) + ts->dttw_touch_area_max = nvt_get_dttw_para(DTTW_TOUCH_AREA_MAX_ADDR); + if (!ts->dttw_touch_area_min) + ts->dttw_touch_area_min = nvt_get_dttw_para(DTTW_TOUCH_AREA_MIN_ADDR); + if (!ts->dttw_contact_duration_max) + ts->dttw_contact_duration_max = nvt_get_dttw_para(DTTW_CONTACT_DURATION_MAX_ADDR); + if (!ts->dttw_contact_duration_min) + ts->dttw_contact_duration_min = nvt_get_dttw_para(DTTW_CONTACT_DURATION_MIN_ADDR); + if (!ts->dttw_tap_offset) + ts->dttw_tap_offset = nvt_get_dttw_para(DTTW_TAP_OFFSET_ADDR); + if (!ts->dttw_tap_gap_duration_max) + ts->dttw_tap_gap_duration_max = nvt_get_dttw_para(DTTW_TAP_GAP_DURATION_MAX_ADDR); + if (!ts->dttw_tap_gap_duration_min) + ts->dttw_tap_gap_duration_min = nvt_get_dttw_para(DTTW_TAP_GAP_DURATION_MIN_ADDR); + if (!ts->dttw_motion_tolerance) + ts->dttw_motion_tolerance = nvt_get_dttw_para(DTTW_MOTION_TOLERANCE_ADDR); + if (!ts->dttw_detection_window_edge) + ts->dttw_detection_window_edge = nvt_get_dttw_para(DTTW_DETECTION_WINDOW_EDGE_ADDR); +} #endif /* #if NVT_TOUCH_EXT_API */ diff --git a/nt36xxx/nt36xxx_goog.c b/nt36xxx/nt36xxx_goog.c index d55ecb7..5696d21 100644 --- a/nt36xxx/nt36xxx_goog.c +++ b/nt36xxx/nt36xxx_goog.c @@ -157,7 +157,7 @@ int nvt_callback(void *private_data, static bool grip_enabled; static bool palm_enabled; static bool sensing_enabled = true; - + static bool display_state_on = true; switch (cmd_type) { case GTI_CMD_PING: @@ -180,6 +180,42 @@ int nvt_callback(void *private_data, } break; + case GTI_CMD_GET_CONTEXT_DRIVER: + cmd->context_driver_cmd.contents.screen_state = 1; + cmd->context_driver_cmd.screen_state = + ts->bTouchIsAwake ? 1 : 0; +#ifdef DYNAMIC_REFRESH_RATE + cmd->context_driver_cmd.contents.display_refresh_rate = 1; + cmd->context_driver_cmd.display_refresh_rate = + ts->display_refresh_rate; +#endif + /* Fixed touch report rate and no update event */ + cmd->context_driver_cmd.contents.touch_report_rate = 1; + cmd->context_driver_cmd.touch_report_rate = 120; + + cmd->context_driver_cmd.contents.offload_timestamp = 1; + cmd->context_driver_cmd.offload_timestamp = + ts->pen_offload_coord_timestamp; + ret = 0; + break; + + case GTI_CMD_GET_CONTEXT_STYLUS: + cmd->context_stylus_cmd.contents.coords = 1; + cmd->context_stylus_cmd.pen_offload_coord = + ts->pen_offload_coord; + + cmd->context_stylus_cmd.contents.coords_timestamp = 1; + cmd->context_stylus_cmd.pen_offload_coord_timestamp = + ts->pen_offload_coord_timestamp; + + cmd->context_stylus_cmd.contents.pen_active = 1; + cmd->context_stylus_cmd.pen_active = ts->pen_active; + + /* No useful pen-pairing information available in this driver */ + cmd->context_stylus_cmd.contents.pen_paired = 0; + ret = 0; + break; + case GTI_CMD_GET_FW_VERSION: { int buf_idx = 0; char *buf = cmd->fw_version_cmd.buffer; @@ -232,6 +268,14 @@ int nvt_callback(void *private_data, } break; + case GTI_CMD_GET_SENSOR_DATA_MANUAL: + if (cmd->manual_sensor_data_cmd.type == GTI_SENSOR_DATA_TYPE_MS_DIFF) { + cmd->manual_sensor_data_cmd.buffer = ts->heatmap_out_buf; + cmd->manual_sensor_data_cmd.size = ts->heatmap_out_buf_size; + ret = 0; + } + break; + case GTI_CMD_SET_CONTINUOUS_REPORT: { #define CONTINUOUS_ENABLE 0x01 #define CONTINUOUS_DISABLE 0x00 @@ -325,8 +369,10 @@ int nvt_callback(void *private_data, * Need to have post-delay for touch FW to complete before return * to display driver after GTI scheduled the suspend workqueue. */ - msleep(NVT_SUSPEND_POST_MS_DELAY); + if (display_state_on) + msleep(NVT_SUSPEND_POST_MS_DELAY); NVT_LOG("GTI_DISPLAY_STATE_OFF\n"); + display_state_on = false; } else if (cmd->display_state_cmd.setting == GTI_DISPLAY_STATE_ON) { u32 locks = goog_pm_wake_get_locks(ts->gti); @@ -341,8 +387,10 @@ int nvt_callback(void *private_data, NVT_LOG("reenable touch for locks %#x.", locks); nvt_ts_suspend(&ts->client->dev); nvt_ts_resume(&ts->client->dev); + sensing_enabled = true; } NVT_LOG("GTI_DISPLAY_STATE_ON"); + display_state_on = true; } else { NVT_ERR("invalid setting %d!\n", cmd->display_state_cmd.setting); } |