From b33376d7c8baa6355a101434e3101ecfa0c218d1 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Stierlin Date: Thu, 16 Jun 2011 17:47:48 +0200 Subject: [PATCH] [PORT FROM R2] pci.c: dont call msleep(0) in suspend flow BZ: 2700 Gerrit patch #9116 was introduced to decrease the delay after changing the device state. Unfortunately, msleep(0) will actually delay until the next tick which is about 10ms on Medfield. Solution: do not call msleep() if the requested delay is 0. Added the same check before udelay(PCI_PM_D2_DELAY). Change-Id: Ic07477be6c5f293f5007a1420a34d749571d04cd Orig-Change-Id: Ifea81bdc31836dbbc26c4a7a6e6c5419dfb38f4e Signed-off-by: Jean-Pierre Stierlin Signed-off-by: Pierre Tardy Signed-off-by: Loic Martin Reviewed-on: http://android.intel.com:8080/32685 Reviewed-by: Mansoor, Illyas Reviewed-by: Yang, Fei Reviewed-by: Kuppuswamy, Sathyanarayanan Reviewed-by: buildbot Tested-by: buildbot --- drivers/pci/pci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index d549bbc..b195ec3 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -58,7 +58,8 @@ static void pci_dev_d3_sleep(struct pci_dev *dev) if (delay < pci_pm_d3_delay) delay = pci_pm_d3_delay; - msleep(delay); + if (delay) + msleep(delay); } #ifdef CONFIG_PCI_DOMAINS @@ -601,7 +602,8 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) /* see PCI PM 1.1 5.6.1 table 18 */ if (state == PCI_D3hot || dev->current_state == PCI_D3hot) pci_dev_d3_sleep(dev); - else if (state == PCI_D2 || dev->current_state == PCI_D2) + else if ((state == PCI_D2 || dev->current_state == PCI_D2) + && (PCI_PM_D2_DELAY)) udelay(PCI_PM_D2_DELAY); pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr); -- 2.7.4