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

Commit 60b70f14 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add support to suspend/resume MHI driver"

parents 552e403d d95866d7
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -364,9 +364,11 @@ static int cnss_pci_suspend(struct device *dev)
	driver_ops = plat_priv->driver_ops;
	if (driver_ops && driver_ops->suspend) {
		ret = driver_ops->suspend(pci_dev, state);
		if (pci_priv->pci_link_state)
		if (pci_priv->pci_link_state) {
			cnss_set_pci_config_space(pci_priv,
						  SAVE_PCI_CONFIG_SPACE);
			cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_SUSPEND);
		}
	}

	cnss_pci_set_monitor_wake_intr(pci_priv, false);
@@ -395,6 +397,7 @@ static int cnss_pci_resume(struct device *dev)
		if (pci_priv->saved_state)
			cnss_set_pci_config_space(pci_priv,
						  RESTORE_PCI_CONFIG_SPACE);
		cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_RESUME);
		ret = driver_ops->resume(pci_dev);
	}

@@ -562,6 +565,11 @@ int cnss_auto_suspend(void)
	pci_dev = pci_priv->pci_dev;

	if (pci_priv->pci_link_state) {
		if (cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_SUSPEND)) {
			ret = -EAGAIN;
			goto out;
		}

		cnss_set_pci_config_space(pci_priv, SAVE_PCI_CONFIG_SPACE);
		pci_disable_device(pci_dev);

@@ -571,7 +579,7 @@ int cnss_auto_suspend(void)
		if (cnss_set_pci_link(pci_priv, PCI_LINK_DOWN)) {
			cnss_pr_err("Failed to shutdown PCI link!\n");
			ret = -EAGAIN;
			goto out;
			goto resume_mhi;
		}
	}

@@ -582,6 +590,13 @@ int cnss_auto_suspend(void)
	bus_bw_info = &plat_priv->bus_bw_info;
	msm_bus_scale_client_update_request(bus_bw_info->bus_client,
					    CNSS_BUS_WIDTH_NONE);

	return 0;

resume_mhi:
	if (pci_enable_device(pci_dev))
		cnss_pr_err("Failed to enable PCI device!\n");
	cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_RESUME);
out:
	return ret;
}
@@ -614,6 +629,7 @@ int cnss_auto_resume(void)
		if (ret)
			cnss_pr_err("Failed to enable PCI device, err = %d\n",
				    ret);
		cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_RESUME);
	}

	cnss_set_pci_config_space(pci_priv, RESTORE_PCI_CONFIG_SPACE);
@@ -1142,6 +1158,9 @@ int cnss_pci_set_mhi_state(struct cnss_pci_data *pci_priv,
		return -ENODEV;
	}

	if (pci_priv->device_id == QCA6174_DEVICE_ID)
		return 0;

	if (mhi_dev_state < 0) {
		cnss_pr_err("Invalid MHI DEV state (%d)\n", mhi_dev_state);
		return -EINVAL;