diff options
Diffstat (limited to 'drivers/net/3c59x.c')
-rw-r--r-- | drivers/net/3c59x.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 07746b95fd83..455ba915ede7 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -973,6 +973,11 @@ static int vortex_suspend (struct pci_dev *pdev, pm_message_t state) | |||
973 | netif_device_detach(dev); | 973 | netif_device_detach(dev); |
974 | vortex_down(dev, 1); | 974 | vortex_down(dev, 1); |
975 | } | 975 | } |
976 | pci_save_state(pdev); | ||
977 | pci_enable_wake(pdev, pci_choose_state(pdev, state), 0); | ||
978 | free_irq(dev->irq, dev); | ||
979 | pci_disable_device(pdev); | ||
980 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); | ||
976 | } | 981 | } |
977 | return 0; | 982 | return 0; |
978 | } | 983 | } |
@@ -980,8 +985,19 @@ static int vortex_suspend (struct pci_dev *pdev, pm_message_t state) | |||
980 | static int vortex_resume (struct pci_dev *pdev) | 985 | static int vortex_resume (struct pci_dev *pdev) |
981 | { | 986 | { |
982 | struct net_device *dev = pci_get_drvdata(pdev); | 987 | struct net_device *dev = pci_get_drvdata(pdev); |
988 | struct vortex_private *vp = netdev_priv(dev); | ||
983 | 989 | ||
984 | if (dev && dev->priv) { | 990 | if (dev && vp) { |
991 | pci_set_power_state(pdev, PCI_D0); | ||
992 | pci_restore_state(pdev); | ||
993 | pci_enable_device(pdev); | ||
994 | pci_set_master(pdev); | ||
995 | if (request_irq(dev->irq, vp->full_bus_master_rx ? | ||
996 | &boomerang_interrupt : &vortex_interrupt, SA_SHIRQ, dev->name, dev)) { | ||
997 | printk(KERN_WARNING "%s: Could not reserve IRQ %d\n", dev->name, dev->irq); | ||
998 | pci_disable_device(pdev); | ||
999 | return -EBUSY; | ||
1000 | } | ||
985 | if (netif_running(dev)) { | 1001 | if (netif_running(dev)) { |
986 | vortex_up(dev); | 1002 | vortex_up(dev); |
987 | netif_device_attach(dev); | 1003 | netif_device_attach(dev); |
@@ -1873,6 +1889,7 @@ vortex_timer(unsigned long data) | |||
1873 | { | 1889 | { |
1874 | spin_lock_bh(&vp->lock); | 1890 | spin_lock_bh(&vp->lock); |
1875 | mii_status = mdio_read(dev, vp->phys[0], 1); | 1891 | mii_status = mdio_read(dev, vp->phys[0], 1); |
1892 | mii_status = mdio_read(dev, vp->phys[0], 1); | ||
1876 | ok = 1; | 1893 | ok = 1; |
1877 | if (vortex_debug > 2) | 1894 | if (vortex_debug > 2) |
1878 | printk(KERN_DEBUG "%s: MII transceiver has status %4.4x.\n", | 1895 | printk(KERN_DEBUG "%s: MII transceiver has status %4.4x.\n", |