aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2009-12-31 12:15:54 +0100
committerJesse Barnes <jbarnes@virtuousgeek.org>2010-01-04 15:41:47 -0800
commit1ae861e652b5457e7fa98ccbc55abea1e207916e (patch)
treed0326aab2746a779f3ab140ec9fdea2508f2e99b /drivers/net/sky2.c
parent6be954d1f91b81ca85c74792b13654069278c577 (diff)
downloadkernel_samsung_smdk4412-1ae861e652b5457e7fa98ccbc55abea1e207916e.zip
kernel_samsung_smdk4412-1ae861e652b5457e7fa98ccbc55abea1e207916e.tar.gz
kernel_samsung_smdk4412-1ae861e652b5457e7fa98ccbc55abea1e207916e.tar.bz2
PCI/PM: Use per-device D3 delays
It turns out that some PCI devices require extra delays when changing power state from D3 to D0 (and the other way around). Although this is against the PCI specification, we can handle it quite easily by allowing drivers to define arbitrary D3 delays for devices known to require extra time for switching power states. Introduce additional field d3_delay in struct pci_dev and use it to store the value of the device's D0->D3 delay, in miliseconds. Make the PCI PM core code use the per-device d3_delay unless pci_pm_d3_delay is greater (in which case the latter is used). [This also allows the driver to specify d3_delay shorter than the 10 ms required by the PCI standard if the device is known to be able to handle that.] Make the sky2 driver set d3_delay to 150 for devices handled by it. Fixes http://bugzilla.kernel.org/show_bug.cgi?id=14730 which is a listed regression from 2.6.30. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r--drivers/net/sky2.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 1c01b96..2d28d58 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -4684,6 +4684,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
INIT_WORK(&hw->restart_work, sky2_restart);
pci_set_drvdata(pdev, hw);
+ pdev->d3_delay = 150;
return 0;