Commit befb270f authored by David S. Miller's avatar David S. Miller

Merge branch 'realtek-ethernet-use-generic-power-management'

Vaibhav Gupta says:

====================
realtek ethernet : use generic power management.

The purpose of this patch series is to remove legacy power management callbacks
from realtek ethernet drivers.

The callbacks performing suspend() and resume() operations are still calling
pci_save_state(), pci_set_power_state(), etc. and handling the powermanagement
themselves, which is not recommended.

The conversion requires the removal of the those function calls and change the
callback definition accordingly.

All Changes are compile-tested only.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents f8e48fca a1eae9f6
...@@ -2054,10 +2054,9 @@ static void cp_remove_one (struct pci_dev *pdev) ...@@ -2054,10 +2054,9 @@ static void cp_remove_one (struct pci_dev *pdev)
free_netdev(dev); free_netdev(dev);
} }
#ifdef CONFIG_PM static int __maybe_unused cp_suspend(struct device *device)
static int cp_suspend (struct pci_dev *pdev, pm_message_t state)
{ {
struct net_device *dev = pci_get_drvdata(pdev); struct net_device *dev = dev_get_drvdata(device);
struct cp_private *cp = netdev_priv(dev); struct cp_private *cp = netdev_priv(dev);
unsigned long flags; unsigned long flags;
...@@ -2075,16 +2074,14 @@ static int cp_suspend (struct pci_dev *pdev, pm_message_t state) ...@@ -2075,16 +2074,14 @@ static int cp_suspend (struct pci_dev *pdev, pm_message_t state)
spin_unlock_irqrestore (&cp->lock, flags); spin_unlock_irqrestore (&cp->lock, flags);
pci_save_state(pdev); device_set_wakeup_enable(device, cp->wol_enabled);
pci_enable_wake(pdev, pci_choose_state(pdev, state), cp->wol_enabled);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0; return 0;
} }
static int cp_resume (struct pci_dev *pdev) static int __maybe_unused cp_resume(struct device *device)
{ {
struct net_device *dev = pci_get_drvdata (pdev); struct net_device *dev = dev_get_drvdata(device);
struct cp_private *cp = netdev_priv(dev); struct cp_private *cp = netdev_priv(dev);
unsigned long flags; unsigned long flags;
...@@ -2093,10 +2090,6 @@ static int cp_resume (struct pci_dev *pdev) ...@@ -2093,10 +2090,6 @@ static int cp_resume (struct pci_dev *pdev)
netif_device_attach (dev); netif_device_attach (dev);
pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev);
pci_enable_wake(pdev, PCI_D0, 0);
/* FIXME: sh*t may happen if the Rx ring buffer is depleted */ /* FIXME: sh*t may happen if the Rx ring buffer is depleted */
cp_init_rings_index (cp); cp_init_rings_index (cp);
cp_init_hw (cp); cp_init_hw (cp);
...@@ -2111,7 +2104,6 @@ static int cp_resume (struct pci_dev *pdev) ...@@ -2111,7 +2104,6 @@ static int cp_resume (struct pci_dev *pdev)
return 0; return 0;
} }
#endif /* CONFIG_PM */
static const struct pci_device_id cp_pci_tbl[] = { static const struct pci_device_id cp_pci_tbl[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, PCI_DEVICE_ID_REALTEK_8139), }, { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, PCI_DEVICE_ID_REALTEK_8139), },
...@@ -2120,15 +2112,14 @@ static const struct pci_device_id cp_pci_tbl[] = { ...@@ -2120,15 +2112,14 @@ static const struct pci_device_id cp_pci_tbl[] = {
}; };
MODULE_DEVICE_TABLE(pci, cp_pci_tbl); MODULE_DEVICE_TABLE(pci, cp_pci_tbl);
static SIMPLE_DEV_PM_OPS(cp_pm_ops, cp_suspend, cp_resume);
static struct pci_driver cp_driver = { static struct pci_driver cp_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.id_table = cp_pci_tbl, .id_table = cp_pci_tbl,
.probe = cp_init_one, .probe = cp_init_one,
.remove = cp_remove_one, .remove = cp_remove_one,
#ifdef CONFIG_PM .driver.pm = &cp_pm_ops,
.resume = cp_resume,
.suspend = cp_suspend,
#endif
}; };
module_pci_driver(cp_driver); module_pci_driver(cp_driver);
...@@ -2603,17 +2603,13 @@ static void rtl8139_set_rx_mode (struct net_device *dev) ...@@ -2603,17 +2603,13 @@ static void rtl8139_set_rx_mode (struct net_device *dev)
spin_unlock_irqrestore (&tp->lock, flags); spin_unlock_irqrestore (&tp->lock, flags);
} }
#ifdef CONFIG_PM static int __maybe_unused rtl8139_suspend(struct device *device)
static int rtl8139_suspend (struct pci_dev *pdev, pm_message_t state)
{ {
struct net_device *dev = pci_get_drvdata (pdev); struct net_device *dev = dev_get_drvdata(device);
struct rtl8139_private *tp = netdev_priv(dev); struct rtl8139_private *tp = netdev_priv(dev);
void __iomem *ioaddr = tp->mmio_addr; void __iomem *ioaddr = tp->mmio_addr;
unsigned long flags; unsigned long flags;
pci_save_state (pdev);
if (!netif_running (dev)) if (!netif_running (dev))
return 0; return 0;
...@@ -2631,38 +2627,30 @@ static int rtl8139_suspend (struct pci_dev *pdev, pm_message_t state) ...@@ -2631,38 +2627,30 @@ static int rtl8139_suspend (struct pci_dev *pdev, pm_message_t state)
spin_unlock_irqrestore (&tp->lock, flags); spin_unlock_irqrestore (&tp->lock, flags);
pci_set_power_state (pdev, PCI_D3hot);
return 0; return 0;
} }
static int __maybe_unused rtl8139_resume(struct device *device)
static int rtl8139_resume (struct pci_dev *pdev)
{ {
struct net_device *dev = pci_get_drvdata (pdev); struct net_device *dev = dev_get_drvdata(device);
pci_restore_state (pdev);
if (!netif_running (dev)) if (!netif_running (dev))
return 0; return 0;
pci_set_power_state (pdev, PCI_D0);
rtl8139_init_ring (dev); rtl8139_init_ring (dev);
rtl8139_hw_start (dev); rtl8139_hw_start (dev);
netif_device_attach (dev); netif_device_attach (dev);
return 0; return 0;
} }
#endif /* CONFIG_PM */ static SIMPLE_DEV_PM_OPS(rtl8139_pm_ops, rtl8139_suspend, rtl8139_resume);
static struct pci_driver rtl8139_pci_driver = { static struct pci_driver rtl8139_pci_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.id_table = rtl8139_pci_tbl, .id_table = rtl8139_pci_tbl,
.probe = rtl8139_init_one, .probe = rtl8139_init_one,
.remove = rtl8139_remove_one, .remove = rtl8139_remove_one,
#ifdef CONFIG_PM .driver.pm = &rtl8139_pm_ops,
.suspend = rtl8139_suspend,
.resume = rtl8139_resume,
#endif /* CONFIG_PM */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment