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

Commit 5769cd22 authored by Yue Ma's avatar Yue Ma
Browse files

cnss2: Save default config space without BME enabled



BME should be enabled after config space has been restored. Make
sure the default config space saved which is restored during PCIe
link down recovery doesn't have BME enabled.

Change-Id: I227d09620128cbb3232f63a026bc6eb789a0b70c
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent 59c11dee
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -3653,18 +3653,21 @@ static int cnss_pci_enable_bus(struct cnss_pci_data *pci_priv)
		goto release_region;
	}

	pci_set_master(pci_dev);

	pci_priv->bar = pci_iomap(pci_dev, PCI_BAR_NUM, 0);
	if (!pci_priv->bar) {
		cnss_pr_err("Failed to do PCI IO map!\n");
		ret = -EIO;
		goto clear_master;
		goto release_region;
	}

	/* Save default config space without BME enabled */
	pci_save_state(pci_dev);
	pci_priv->default_state = pci_store_saved_state(pci_dev);

	pci_set_master(pci_dev);

	return 0;

clear_master:
	pci_clear_master(pci_dev);
release_region:
	pci_release_region(pci_dev, PCI_BAR_NUM);
disable_device:
@@ -3677,12 +3680,14 @@ static void cnss_pci_disable_bus(struct cnss_pci_data *pci_priv)
{
	struct pci_dev *pci_dev = pci_priv->pci_dev;

	pci_clear_master(pci_dev);
	pci_load_and_free_saved_state(pci_dev, &pci_priv->saved_state);

	if (pci_priv->bar) {
		pci_iounmap(pci_dev, pci_priv->bar);
		pci_priv->bar = NULL;
	}

	pci_clear_master(pci_dev);
	pci_release_region(pci_dev, PCI_BAR_NUM);
	if (pci_is_enabled(pci_dev))
		pci_disable_device(pci_dev);
@@ -4512,9 +4517,6 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
	if (ret)
		goto dereg_pci_event;

	pci_save_state(pci_dev);
	pci_priv->default_state = pci_store_saved_state(pci_dev);

	switch (pci_dev->device) {
	case QCA6174_DEVICE_ID:
		pci_read_config_word(pci_dev, QCA6174_REV_ID_OFFSET,
@@ -4600,8 +4602,6 @@ static void cnss_pci_remove(struct pci_dev *pci_dev)
		break;
	}

	pci_load_and_free_saved_state(pci_dev, &pci_priv->saved_state);

	cnss_pci_disable_bus(pci_priv);
	cnss_dereg_pci_event(pci_priv);
	cnss_pci_deinit_smmu(pci_priv);