Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c9a7926 authored by Ritesh Kumar's avatar Ritesh Kumar Committed by Gerrit - the friendly Code Review server
Browse files

input: touchscreen: focaltech: release i2c session early



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

Change-Id: If943165b687318eac6c5f7b734bc6dea4c0efa46
Signed-off-by: default avatarppadasal <quic_ppadasal@quicinc.com>
parent 49d92b68
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -584,6 +584,9 @@ static void fts_ts_trusted_touch_tvm_vm_mode_disable
	pr_debug("vm irq release succeded\n");

	fts_release_all_finger();
	pm_runtime_put_sync(fts_data->client->adapter->dev.parent);
	fts_ts_trusted_touch_set_tvm_driver_state(fts_data,
					TVM_I2C_SESSION_RELEASED);
	rc = fts_ts_vm_mem_release(fts_data);
	if (rc) {
		pr_err("Failed to release mem rc:%d\n", rc);
@@ -674,17 +677,18 @@ static void fts_ts_trusted_touch_abort_tvm(struct fts_ts_data *fts_data)
	case TVM_IOMEM_ACCEPTED:
	case TVM_IRQ_RELEASED:
		fts_release_all_finger();
		pm_runtime_put_sync(fts_data->client->adapter->dev.parent);
		break;
	case TVM_I2C_SESSION_RELEASED:
		rc = fts_ts_vm_mem_release(fts_data);
		if (rc)
			pr_err("Failed to release mem rc:%d\n", rc);
		break;
	case TVM_IOMEM_RELEASED:
		pm_runtime_put_sync(fts_data->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(&fts_data->trusted_touch_enabled, 0);
	}

+1 −1
Original line number Diff line number Diff line
@@ -173,8 +173,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
};