1 --- via-rhine.c.org 2004-08-05 00:31:19.796592888 +0200
2 +++ via-rhine.c 2004-08-05 00:39:26.241642000 +0200
4 dma_addr_t tx_bufs_dma;
11 struct net_device_stats stats;
15 dev->base_addr = ioaddr;
16 rp = netdev_priv(dev);
19 + rp->pioaddr = pioaddr;
22 /* Get chip registers into a sane state */
23 rhine_power_init(dev);
24 @@ -1951,11 +1958,64 @@
29 +static int rhine_suspend (struct pci_dev *pdev, u32 state)
31 + struct net_device *dev = pci_get_drvdata (pdev);
32 + struct rhine_private *rp = dev->priv;
34 + if (!netif_running (dev))
37 + netif_device_detach (dev);
39 + pci_save_state (pdev, rp->pci_state);
40 + pci_set_power_state (pdev, 3);
45 +static int rhine_resume (struct pci_dev *pdev)
47 + struct net_device *dev = pci_get_drvdata (pdev);
48 + struct rhine_private *rp = dev->priv;
49 + unsigned long flags;
51 + if (!netif_running (dev))
54 + pci_set_power_state (pdev, 0);
55 + pci_restore_state (pdev, rp->pci_state);
57 + spin_lock_irqsave (&rp->lock, flags);
59 + rhine_power_init(dev);
60 + rhine_hw_init(dev, rp->pioaddr);
67 + init_registers(dev);
69 + spin_unlock_irqrestore (&rp->lock, flags);
71 + netif_device_attach (dev);
75 +#endif /* CONFIG_PM */
77 static struct pci_driver rhine_driver = {
79 .id_table = rhine_pci_tbl,
80 .probe = rhine_init_one,
81 .remove = __devexit_p(rhine_remove_one),
83 + .suspend = rhine_suspend,
84 + .resume = rhine_resume,
85 +#endif /* CONFIG_PM */
87 .shutdown = rhine_shutdown,