From 5f1f2497989d13bce9baddbf8e16eb0cb6c71005 Mon Sep 17 00:00:00 2001 From: haojl2 Date: Wed, 19 Sep 2018 17:51:16 +0800 Subject: [PATCH] nova_mmi: skip IC reset for NT36672A NT36672A TP core is reset with LCD. Do not need reset again. Skip reset to shorten resume time. Change-Id: Id30776988fb9f0fa339110b4c36aef50e8f43130 Signed-off-by: haojl2 Reviewed-on: https://gerrit.mot.com/1244309 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Master Yoda Reviewed-by: Jun Weng Reviewed-by: Jianqi Yang Submit-Approved: Jira Key --- drivers/input/touchscreen/nova_mmi/nt36xxx.c | 18 +++++++++++++----- drivers/input/touchscreen/nova_mmi/nt36xxx.h | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/input/touchscreen/nova_mmi/nt36xxx.c b/drivers/input/touchscreen/nova_mmi/nt36xxx.c index 245797d638ad..7de5272d5b76 100644 --- a/drivers/input/touchscreen/nova_mmi/nt36xxx.c +++ b/drivers/input/touchscreen/nova_mmi/nt36xxx.c @@ -330,8 +330,6 @@ int32_t nvt_check_fw_reset_state(RST_COMPLETE_STATE check_reset_state) int32_t retry = 0; NVT_LOG("enter-%s\n", __func__); while (1) { - msleep(10); - /*---read reset state---*/ buf[0] = EVENT_MAP_RESET_COMPLETE; buf[1] = 0x00; @@ -348,6 +346,7 @@ int32_t nvt_check_fw_reset_state(RST_COMPLETE_STATE check_reset_state) ret = -1; break; } + msleep(10); } return ret; @@ -1196,6 +1195,13 @@ static int8_t nvt_ts_check_chip_ver_trim(void) #endif ts->mmap = trim_id_table[list].mmap; ts->carrier_system = trim_id_table[list].carrier_system; + if (list == 1) /* NT36672A */ + /* + This kind of IC dose not need trigger + reset in resume. + Because TP core is reset with LCD. + */ + ts->skip_reset_in_resume = true; ret = 0; goto out; } else { @@ -1626,14 +1632,16 @@ static int32_t nvt_ts_resume(struct device *dev) return 0; } - msleep(10); + if (!ts->skip_reset_in_resume) + msleep(10); mutex_lock(&ts->lock); NVT_LOG("start\n"); /* please make sure display reset(RESX) sequence and mipi dsi cmds sent before this*/ - nvt_bootloader_reset(); + if (!ts->skip_reset_in_resume) + nvt_bootloader_reset(); res = nvt_check_fw_reset_state(RESET_STATE_REK); NVT_LOG("enter-%s-----res=%d\n", __func__, res); @@ -1648,7 +1656,7 @@ static int32_t nvt_ts_resume(struct device *dev) #endif bTouchIsAwake = 1; #if NVT_TOUCH_FW - ts->suspended = 0; + ts->suspended = 0; #endif mutex_unlock(&ts->lock); diff --git a/drivers/input/touchscreen/nova_mmi/nt36xxx.h b/drivers/input/touchscreen/nova_mmi/nt36xxx.h index 9a4017baa0b3..eb137430387b 100644 --- a/drivers/input/touchscreen/nova_mmi/nt36xxx.h +++ b/drivers/input/touchscreen/nova_mmi/nt36xxx.h @@ -112,6 +112,7 @@ struct nvt_ts_data { const struct nvt_ts_mem_map *mmap; uint8_t carrier_system; uint16_t nvt_pid; + bool skip_reset_in_resume; #if NVT_TOUCH_FW int8_t product_id[10]; uint8_t suspended;