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

Commit 18b56b39 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "slim-msm-ngd: Add qmi deferred response check in pm resume"

parents b8d2716e 1408f5a2
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
 */

#include <asm/dma-iommu.h>
@@ -2122,6 +2122,17 @@ static int ngd_slim_runtime_resume(struct device *device)
	int ret = 0;

	mutex_lock(&dev->tx_lock);

	if (dev->qmi.deferred_resp) {
		SLIM_WARN(dev, "%s: RT resume called ahead of sys resume\n",
								__func__);
		ret = msm_slim_qmi_deferred_status_req(dev);
		if (ret)
			SLIM_WARN(dev, "%s: deferred resp failure\n",
								__func__);
		dev->qmi.deferred_resp = false;
	}

	if ((dev->state >= MSM_CTRL_ASLEEP) && (dev->qmi.handle != NULL))
		ret = ngd_slim_power_up(dev, false);
	if (ret || dev->qmi.handle == NULL) {
@@ -2224,6 +2235,7 @@ static int ngd_slim_resume(struct device *dev)
	 * mark runtime-pm status as active to be consistent
	 * with HW status
	 */
	mutex_lock(&cdev->tx_lock);
	if (cdev->qmi.deferred_resp) {
		ret = msm_slim_qmi_deferred_status_req(cdev);
		if (ret) {
@@ -2239,6 +2251,7 @@ static int ngd_slim_resume(struct device *dev)
	 * clock/power on
	 */
	SLIM_INFO(cdev, "system resume state: %d\n", cdev->state);
	mutex_unlock(&cdev->tx_lock);
	return ret;
}
#endif /* CONFIG_PM_SLEEP */