summaryrefslogtreecommitdiff
path: root/drivers/pci/pci.c
diff options
context:
space:
mode:
authorKukjin Kim <kgene.kim@samsung.com>2014-07-29 06:09:42 +0900
committerKukjin Kim <kgene.kim@samsung.com>2014-07-29 06:09:42 +0900
commit6da287ad0266cca1fa8f88fb8b1c466e8164671f (patch)
treecfdf86c200bf9f1199c45acf51644fc185c705ec /drivers/pci/pci.c
parentccaba4527156da1619a23bafcb944e8e029d0573 (diff)
parent6887d9e5682886b5d9fe81217ff2f1410724cdb9 (diff)
Merge branch 'v3.17-next/power-exynos' into v3.17-next/dt-samsung-2
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r--drivers/pci/pci.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 63a54a340863..1c8592b0e146 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3135,8 +3135,13 @@ static int pci_af_flr(struct pci_dev *dev, int probe)
if (probe)
return 0;
- /* Wait for Transaction Pending bit clean */
- if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
+ /*
+ * Wait for Transaction Pending bit to clear. A word-aligned test
+ * is used, so we use the conrol offset rather than status and shift
+ * the test bit to match.
+ */
+ if (pci_wait_for_pending(dev, pos + PCI_AF_CTRL,
+ PCI_AF_STATUS_TP << 8))
goto clear;
dev_err(&dev->dev, "transaction is not cleared; proceeding with reset anyway\n");