Commit b35e94ed authored by Yao Zi's avatar Yao Zi Committed by Jakub Kicinski
Browse files

net: stmmac: pci: Use generic PCI suspend/resume routines



Convert STMMAC PCI glue driver to use the generic platform
suspend/resume routines for PCI controllers, instead of implementing its
own one.

Signed-off-by: default avatarYao Zi <ziyao@disroot.org>
Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarYanteng Si <siyanteng@cqsoftware.com.cn>
Link: https://patch.msgid.link/20251124160417.51514-4-ziyao@disroot.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c4064af1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -376,8 +376,9 @@ config DWMAC_LOONGSON

config STMMAC_PCI
	tristate "STMMAC PCI bus support"
	depends on STMMAC_ETH && PCI
	depends on PCI
	depends on COMMON_CLK
	select STMMAC_LIBPCI
	help
	  This selects the platform specific bus support for the stmmac driver.
	  This driver was tested on XLINX XC2V3000 FF1152AMT0221
+3 −33
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/dmi.h>

#include "stmmac.h"
#include "stmmac_libpci.h"

struct stmmac_pci_info {
	int (*setup)(struct pci_dev *pdev, struct plat_stmmacenet_data *plat);
@@ -102,37 +103,6 @@ static const struct stmmac_pci_info snps_gmac5_pci_info = {
	.setup = snps_gmac5_default_data,
};

static int stmmac_pci_suspend(struct device *dev, void *bsp_priv)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	int ret;

	ret = pci_save_state(pdev);
	if (ret)
		return ret;

	pci_disable_device(pdev);
	pci_wake_from_d3(pdev, true);
	return 0;
}

static int stmmac_pci_resume(struct device *dev, void *bsp_priv)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	int ret;

	pci_restore_state(pdev);
	pci_set_power_state(pdev, PCI_D0);

	ret = pci_enable_device(pdev);
	if (ret)
		return ret;

	pci_set_master(pdev);

	return 0;
}

/**
 * stmmac_pci_probe
 *
@@ -212,8 +182,8 @@ static int stmmac_pci_probe(struct pci_dev *pdev,
	plat->safety_feat_cfg->prtyen = 1;
	plat->safety_feat_cfg->tmouten = 1;

	plat->suspend = stmmac_pci_suspend;
	plat->resume = stmmac_pci_resume;
	plat->suspend = stmmac_pci_plat_suspend;
	plat->resume = stmmac_pci_plat_resume;

	return stmmac_dvr_probe(&pdev->dev, plat, &res);
}