cnss2: Save default config space without BME enabled

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

Change-Id: I227d09620128cbb3232f63a026bc6eb789a0b70c
Signed-off-by: Yue Ma <yuem@codeaurora.org>
This commit is contained in:
Yue Ma 2020-06-12 18:47:24 -07:00 • committed by Gerrit - the friendly Code Review server
commit 0d77d5e665

View file

@ -3789,18 +3789,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:
@ -3813,12 +3816,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);
@ -4620,9 +4625,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,
@ -4708,8 +4710,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);