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

Commit da4cb9d4 authored by Prerna Kalla's avatar Prerna Kalla
Browse files

msm: ice: Modify the waiting condition in suspend



This change rectifies the condition which blocks suspend
function of ice and prints debug message if timeout occurs
when ice is busy.

Change-Id: Id21e06ddb34b32867dfd86eef6c25cd4d2bb7fba
Signed-off-by: default avatarPrerna Kalla <prernak@codeaurora.org>
parent 143e58dc
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -846,18 +846,27 @@ static int qcom_ice_remove(struct platform_device *pdev)
static int  qcom_ice_suspend(struct platform_device *pdev)
{
	struct ice_device *ice_dev;
	int ret = 0;

	ice_dev = (struct ice_device *)platform_get_drvdata(pdev);

	if (!ice_dev)
		return -EINVAL;

	if (atomic_read(&ice_dev->is_ice_busy) != 0)
		wait_event_interruptible_timeout(
	if (atomic_read(&ice_dev->is_ice_busy) != 0) {
		ret = wait_event_interruptible_timeout(
			ice_dev->block_suspend_ice_queue,
			atomic_read(&ice_dev->is_ice_busy) != 0,
			atomic_read(&ice_dev->is_ice_busy) == 0,
			msecs_to_jiffies(1000));

		if (!ret) {
			pr_err("%s: Suspend ICE during an ongoing operation\n",
				 __func__);
			atomic_set(&ice_dev->is_ice_suspended, 0);
			return -ETIME;
		}
	}

	atomic_set(&ice_dev->is_ice_suspended, 1);

	return 0;