diff options
author | Keerthy <j-keerthy@ti.com> | 2017-03-13 09:43:28 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2017-04-04 09:41:30 -0400 |
commit | d4c7d1a089d6fddf38c4fcdc91f15791bfb59a95 (patch) | |
tree | bb0ddc5219f278d224edceaeb8432fda8c839984 | |
parent | edd45e3968299f9b4635bdfeca1edab842d81eac (diff) |
PCI: dwc: dra7xx: Push request_irq() call to the bottom of probe
Currently devm_request_irq() is being called before base, PCI fields of
dra7xx_pcie structure are populated. It is called even before
pm_runtime_enable() and pm_runtime_get_sync() are called. This will lead
to exceptions if in case an interrupt is triggered before the all of the
above are done. Hence push the devm_request_irq() call to the end of the
probe.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r-- | drivers/pci/dwc/pci-dra7xx.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c index 07c45ec07662..7c9ed6a6675c 100644 --- a/drivers/pci/dwc/pci-dra7xx.c +++ b/drivers/pci/dwc/pci-dra7xx.c | |||
@@ -410,13 +410,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) | |||
410 | return -EINVAL; | 410 | return -EINVAL; |
411 | } | 411 | } |
412 | 412 | ||
413 | ret = devm_request_irq(dev, irq, dra7xx_pcie_irq_handler, | ||
414 | IRQF_SHARED, "dra7xx-pcie-main", dra7xx); | ||
415 | if (ret) { | ||
416 | dev_err(dev, "failed to request irq\n"); | ||
417 | return ret; | ||
418 | } | ||
419 | |||
420 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ti_conf"); | 413 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ti_conf"); |
421 | base = devm_ioremap_nocache(dev, res->start, resource_size(res)); | 414 | base = devm_ioremap_nocache(dev, res->start, resource_size(res)); |
422 | if (!base) | 415 | if (!base) |
@@ -478,6 +471,13 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) | |||
478 | if (ret < 0) | 471 | if (ret < 0) |
479 | goto err_gpio; | 472 | goto err_gpio; |
480 | 473 | ||
474 | ret = devm_request_irq(dev, irq, dra7xx_pcie_irq_handler, | ||
475 | IRQF_SHARED, "dra7xx-pcie-main", dra7xx); | ||
476 | if (ret) { | ||
477 | dev_err(dev, "failed to request irq\n"); | ||
478 | goto err_gpio; | ||
479 | } | ||
480 | |||
481 | return 0; | 481 | return 0; |
482 | 482 | ||
483 | err_gpio: | 483 | err_gpio: |