input: touchscreen: nt36xxx: release i2c session early

Release I2C session lock before releasing IO regions in TVM
during trusted touch scenario.

Change-Id: Ibd3b63e5d084097eb464e3697b8d7d82ea17262e
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
This commit is contained in:
Ritesh Kumar 2021-01-07 01:59:17 +05:30 • committed by Gerrit - the friendly Code Review server
commit 96ea71a1c2
2 changed files with 9 additions and 8 deletions

View file

@ -563,6 +563,10 @@ static void nvt_ts_trusted_touch_tvm_vm_mode_disable(struct nvt_ts_data *ts)
pr_debug("vm irq release succeded\n");
pm_runtime_put_sync(ts->client->adapter->dev.parent);
nvt_ts_trusted_touch_set_tvm_driver_state(ts,
TVM_I2C_SESSION_RELEASED);
rc = nvt_ts_vm_mem_release(ts);
if (rc) {
pr_err("Failed to release mem rc:%d\n", rc);
@ -571,9 +575,6 @@ static void nvt_ts_trusted_touch_tvm_vm_mode_disable(struct nvt_ts_data *ts)
nvt_ts_trusted_touch_set_tvm_driver_state(ts,
TVM_IOMEM_RELEASED);
}
pm_runtime_put_sync(ts->client->adapter->dev.parent);
nvt_ts_trusted_touch_set_tvm_driver_state(ts,
TVM_I2C_SESSION_RELEASED);
nvt_ts_trusted_touch_set_tvm_driver_state(ts, TRUSTED_TOUCH_TVM_INIT);
atomic_set(&ts->trusted_touch_enabled, 0);
pr_info("trusted touch disabled\n");
@ -649,16 +650,16 @@ static void nvt_ts_trusted_touch_abort_tvm(struct nvt_ts_data *ts)
case TVM_I2C_SESSION_ACQUIRED:
case TVM_IOMEM_ACCEPTED:
case TVM_IRQ_RELEASED:
pm_runtime_put_sync(ts->client->adapter->dev.parent);
case TVM_I2C_SESSION_RELEASED:
rc = nvt_ts_vm_mem_release(ts);
if (rc)
pr_err("Failed to release mem rc:%d\n", rc);
case TVM_IOMEM_RELEASED:
pm_runtime_put_sync(ts->client->adapter->dev.parent);
case TVM_I2C_SESSION_RELEASED:
case TVM_IOMEM_LENT_NOTIFIED:
case TVM_IRQ_LENT_NOTIFIED:
case TVM_ALL_RESOURCES_LENT_NOTIFIED:
case TRUSTED_TOUCH_TVM_INIT:
case TVM_IRQ_LENT_NOTIFIED:
case TVM_IOMEM_LENT_NOTIFIED:
atomic_set(&ts->trusted_touch_enabled, 0);
}

View file

@ -124,8 +124,8 @@ enum trusted_touch_tvm_states {
TVM_INTERRUPT_ENABLED,
TVM_INTERRUPT_DISABLED,
TVM_IRQ_RELEASED,
TVM_IOMEM_RELEASED,
TVM_I2C_SESSION_RELEASED,
TVM_IOMEM_RELEASED,
TRUSTED_TOUCH_TVM_STATE_MAX
};