123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /* orinoco_pci.h
- *
- * Common code for all Orinoco drivers for PCI devices, including
- * both native PCI and PCMCIA-to-PCI bridges.
- *
- * Copyright (C) 2005, Pavel Roskin.
- * See main.c for license.
- */
- #ifndef _ORINOCO_PCI_H
- #define _ORINOCO_PCI_H
- #include <linux/netdevice.h>
- /* Driver specific data */
- struct orinoco_pci_card {
- void __iomem *bridge_io;
- void __iomem *attr_io;
- };
- #ifdef CONFIG_PM
- static int orinoco_pci_suspend(struct pci_dev *pdev, pm_message_t state)
- {
- struct orinoco_private *priv = pci_get_drvdata(pdev);
- orinoco_down(priv);
- free_irq(pdev->irq, priv);
- pci_save_state(pdev);
- pci_disable_device(pdev);
- pci_set_power_state(pdev, PCI_D3hot);
- return 0;
- }
- static int orinoco_pci_resume(struct pci_dev *pdev)
- {
- struct orinoco_private *priv = pci_get_drvdata(pdev);
- struct net_device *dev = priv->ndev;
- int err;
- pci_set_power_state(pdev, 0);
- err = pci_enable_device(pdev);
- if (err) {
- printk(KERN_ERR "%s: pci_enable_device failed on resume\n",
- dev->name);
- return err;
- }
- pci_restore_state(pdev);
- err = request_irq(pdev->irq, orinoco_interrupt, IRQF_SHARED,
- dev->name, priv);
- if (err) {
- printk(KERN_ERR "%s: cannot re-allocate IRQ on resume\n",
- dev->name);
- pci_disable_device(pdev);
- return -EBUSY;
- }
- err = orinoco_up(priv);
- return err;
- }
- #else
- #define orinoco_pci_suspend NULL
- #define orinoco_pci_resume NULL
- #endif
- #endif /* _ORINOCO_PCI_H */
|