Commit 07bbbfe7 authored by Russell King (Oracle)'s avatar Russell King (Oracle) Committed by Jakub Kicinski
Browse files

net: stmmac: add suspend()/resume() platform ops



Add suspend/resume platform operations, which, when populated, override
the init/exit platform operations when we suspend and resume. These
suspend()/resume() methods are called by core code, and thus are
designed to support any struct device, not just platform devices. This
allows them to be used by the PCI drivers we have.

Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/E1ulXbX-008gqZ-Bb@rmk-PC.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c88c6b2d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -7879,6 +7879,9 @@ int stmmac_suspend(struct device *dev)
	if (stmmac_fpe_supported(priv))
		ethtool_mmsv_stop(&priv->fpe_cfg.mmsv);

	if (priv->plat->suspend)
		return priv->plat->suspend(dev, priv->plat->bsp_priv);

	return 0;
}
EXPORT_SYMBOL_GPL(stmmac_suspend);
@@ -7931,6 +7934,12 @@ int stmmac_resume(struct device *dev)
	struct stmmac_priv *priv = netdev_priv(ndev);
	int ret;

	if (priv->plat->resume) {
		ret = priv->plat->resume(dev, priv->plat->bsp_priv);
		if (ret)
			return ret;
	}

	if (!netif_running(ndev))
		return 0;

+8 −4
Original line number Diff line number Diff line
@@ -901,6 +901,8 @@ static int __maybe_unused stmmac_pltfr_suspend(struct device *dev)
	struct platform_device *pdev = to_platform_device(dev);

	ret = stmmac_suspend(dev);

	if (!priv->plat->suspend)
		stmmac_pltfr_exit(pdev, priv->plat);

	return ret;
@@ -920,9 +922,11 @@ static int __maybe_unused stmmac_pltfr_resume(struct device *dev)
	struct platform_device *pdev = to_platform_device(dev);
	int ret;

	if (!priv->plat->resume) {
		ret = stmmac_pltfr_init(pdev, priv->plat);
		if (ret)
			return ret;
	}

	return stmmac_resume(dev);
}
+2 −0
Original line number Diff line number Diff line
@@ -248,6 +248,8 @@ struct plat_stmmacenet_data {
	void (*ptp_clk_freq_config)(struct stmmac_priv *priv);
	int (*init)(struct platform_device *pdev, void *priv);
	void (*exit)(struct platform_device *pdev, void *priv);
	int (*suspend)(struct device *dev, void *priv);
	int (*resume)(struct device *dev, void *priv);
	struct mac_device_info *(*setup)(void *priv);
	int (*clks_config)(void *priv, bool enabled);
	int (*crosststamp)(ktime_t *device, struct system_counterval_t *system,