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

Commit 927b6f7a authored by Ritesh Kumar's avatar Ritesh Kumar
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 avatarShashank Babu Chinta Venkata <sbchin@codeaurora.org>
Signed-off-by: default avatarRitesh Kumar <riteshk@codeaurora.org>
parent c9028a23
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -575,6 +575,9 @@ static void fts_ts_trusted_touch_tvm_vm_mode_disable(struct fts_ts_data *fts_dat
	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);
@@ -583,9 +586,6 @@ static void fts_ts_trusted_touch_tvm_vm_mode_disable(struct fts_ts_data *fts_dat
		fts_ts_trusted_touch_set_tvm_driver_state(fts_data,
					TVM_IOMEM_RELEASED);
	}
	pm_runtime_put_sync(fts_data->client->adapter->dev.parent);
	fts_ts_trusted_touch_set_tvm_driver_state(fts_data,
					TVM_I2C_SESSION_RELEASED);
	fts_ts_trusted_touch_set_tvm_driver_state(fts_data, TRUSTED_TOUCH_TVM_INIT);
	atomic_set(&fts_data->trusted_touch_enabled, 0);
	pr_info("trusted touch disabled\n");
@@ -662,16 +662,16 @@ 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);
	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);
	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
};