aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/orinoco/airport.c
diff options
context:
space:
mode:
authorDavid Kilroy <kilroyd@googlemail.com>2009-06-18 18:21:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-10 15:01:46 -0400
commit6415f7df10573bf1ec42644f42bef565127114a1 (patch)
tree6aa981f181010faca22989ffd70ef89b0d32ff07 /drivers/net/wireless/orinoco/airport.c
parentef96b5c9ed6ba4b45fd4cf45810c34978bb8d8bb (diff)
orinoco: Handle suspend/restore in core driver
Each device does almost exactly the same things on suspend and resume when upping and downing the interface. So move this logic into a common routine. Signed-off-by: David Kilroy <kilroyd@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/orinoco/airport.c')
-rw-r--r--drivers/net/wireless/orinoco/airport.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/drivers/net/wireless/orinoco/airport.c b/drivers/net/wireless/orinoco/airport.c
index 70f1331512bd..c60df2c1aca3 100644
--- a/drivers/net/wireless/orinoco/airport.c
+++ b/drivers/net/wireless/orinoco/airport.c
@@ -50,15 +50,7 @@ airport_suspend(struct macio_dev *mdev, pm_message_t state)
50 return 0; 50 return 0;
51 } 51 }
52 52
53 err = __orinoco_down(priv); 53 orinoco_down(priv);
54 if (err)
55 printk(KERN_WARNING "%s: PBOOK_SLEEP_NOW: Error %d downing interface\n",
56 dev->name, err);
57
58 netif_device_detach(dev);
59
60 priv->hw_unavailable++;
61
62 orinoco_unlock(priv, &flags); 54 orinoco_unlock(priv, &flags);
63 55
64 disable_irq(card->irq); 56 disable_irq(card->irq);
@@ -85,30 +77,11 @@ airport_resume(struct macio_dev *mdev)
85 77
86 enable_irq(card->irq); 78 enable_irq(card->irq);
87 79
88 err = orinoco_reinit_firmware(priv);
89 if (err) {
90 printk(KERN_ERR "%s: Error %d re-initializing firmware on PBOOK_WAKE\n",
91 dev->name, err);
92 return 0;
93 }
94
95 spin_lock_irqsave(&priv->lock, flags); 80 spin_lock_irqsave(&priv->lock, flags);
96 81 err = orinoco_up(priv);
97 netif_device_attach(dev);
98
99 priv->hw_unavailable--;
100
101 if (priv->open && (!priv->hw_unavailable)) {
102 err = __orinoco_up(priv);
103 if (err)
104 printk(KERN_ERR "%s: Error %d restarting card on PBOOK_WAKE\n",
105 dev->name, err);
106 }
107
108
109 spin_unlock_irqrestore(&priv->lock, flags); 82 spin_unlock_irqrestore(&priv->lock, flags);
110 83
111 return 0; 84 return err;
112} 85}
113 86
114static int 87static int