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

Commit 7ae0b636 authored by jiad's avatar jiad Committed by Gerrit - the friendly Code Review server
Browse files

cnss2: Fix PCIe D3hot for WLAN suspend



Setting D3hot is newly added for Napier platform. And system hang is
observed on legacy Rome platform. In previous implementations for Rome
PCIe platforms, setting D3hot is not needed.

Fix is to not set D3hot for legacy platforms.

Change-Id: I1fce39eff4aa674553a214e7d0f99a81b0e6b93d
CRs-Fixed: 2255872
Signed-off-by: default avatarJia Ding <jiad@codeaurora.org>
parent dfabe2ca
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -133,7 +133,8 @@ int cnss_suspend_pci_link(struct cnss_pci_data *pci_priv)
	pci_disable_device(pci_priv->pci_dev);

	if (pci_priv->pci_dev->device != QCA6174_DEVICE_ID) {
		if (pci_set_power_state(pci_priv->pci_dev, PCI_D3hot))
		ret = pci_set_power_state(pci_priv->pci_dev, PCI_D3hot);
		if (ret)
			cnss_pr_err("Failed to set D3Hot, err =  %d\n", ret);
	}

@@ -404,11 +405,13 @@ static int cnss_pci_suspend(struct device *dev)
					  SAVE_PCI_CONFIG_SPACE);
		pci_disable_device(pci_dev);

		if (pci_dev->device != QCA6174_DEVICE_ID) {
			ret = pci_set_power_state(pci_dev, PCI_D3hot);
			if (ret)
				cnss_pr_err("Failed to set D3Hot, err = %d\n",
					    ret);
		}
	}

	cnss_pci_set_monitor_wake_intr(pci_priv, false);

@@ -643,9 +646,12 @@ int cnss_auto_suspend(struct device *dev)
		cnss_set_pci_config_space(pci_priv, SAVE_PCI_CONFIG_SPACE);
		pci_disable_device(pci_dev);

		if (pci_dev->device != QCA6174_DEVICE_ID) {
			ret = pci_set_power_state(pci_dev, PCI_D3hot);
			if (ret)
			cnss_pr_err("Failed to set D3Hot, err =  %d\n", ret);
				cnss_pr_err("Failed to set D3Hot, err =  %d\n",
					    ret);
		}

		cnss_pr_dbg("Suspending PCI link\n");
		if (cnss_set_pci_link(pci_priv, PCI_LINK_DOWN)) {