mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-07 04:09:21 +00:00
[PATCH] 3c59x PM fixes
This patch adds some missing pci-related calls to the suspend and resume routines of the 3c59x driver. It also makes the driver free/request IRQ on suspend/resume, in accordance with the proposal at: http://lists.osdl.org/pipermail/linux-pm/2005-May/000955.html Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
d7ae79c72d
commit
5b039e681b
1 changed files with 17 additions and 1 deletions
|
@ -973,6 +973,11 @@ static int vortex_suspend (struct pci_dev *pdev, pm_message_t state)
|
||||||
netif_device_detach(dev);
|
netif_device_detach(dev);
|
||||||
vortex_down(dev, 1);
|
vortex_down(dev, 1);
|
||||||
}
|
}
|
||||||
|
pci_save_state(pdev);
|
||||||
|
pci_enable_wake(pdev, pci_choose_state(pdev, state), 0);
|
||||||
|
free_irq(dev->irq, dev);
|
||||||
|
pci_disable_device(pdev);
|
||||||
|
pci_set_power_state(pdev, pci_choose_state(pdev, state));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -980,8 +985,19 @@ static int vortex_suspend (struct pci_dev *pdev, pm_message_t state)
|
||||||
static int vortex_resume (struct pci_dev *pdev)
|
static int vortex_resume (struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
struct net_device *dev = pci_get_drvdata(pdev);
|
struct net_device *dev = pci_get_drvdata(pdev);
|
||||||
|
struct vortex_private *vp = netdev_priv(dev);
|
||||||
|
|
||||||
if (dev && dev->priv) {
|
if (dev && vp) {
|
||||||
|
pci_set_power_state(pdev, PCI_D0);
|
||||||
|
pci_restore_state(pdev);
|
||||||
|
pci_enable_device(pdev);
|
||||||
|
pci_set_master(pdev);
|
||||||
|
if (request_irq(dev->irq, vp->full_bus_master_rx ?
|
||||||
|
&boomerang_interrupt : &vortex_interrupt, SA_SHIRQ, dev->name, dev)) {
|
||||||
|
printk(KERN_WARNING "%s: Could not reserve IRQ %d\n", dev->name, dev->irq);
|
||||||
|
pci_disable_device(pdev);
|
||||||
|
return -EBUSY;
|
||||||
|
}
|
||||||
if (netif_running(dev)) {
|
if (netif_running(dev)) {
|
||||||
vortex_up(dev);
|
vortex_up(dev);
|
||||||
netif_device_attach(dev);
|
netif_device_attach(dev);
|
||||||
|
|
Loading…
Reference in a new issue