msm: ep-pcie: Enable global IRQ after enumeration
The global irqs are being enabled before EP driver has completed successful link enumeration. This causes a race condition where the BME IRQ is processed before link up causing the link up to exit before updating the link status. Any further processing results in LINK_DISABLED error. Avoid this scenario by enabling the global interrupts after enumeration has finished. Change-Id: I983a35f461da5d8966cadc9918b5529d16182b47 Signed-off-by: Gauri Joshi <gaurjosh@codeaurora.org>
This commit is contained in:
parent
9eb990d0a9
commit
e9b647b739
@ -2596,6 +2596,7 @@ int32_t ep_pcie_irq_init(struct ep_pcie_dev_t *dev)
|
|||||||
INIT_WORK(&dev->handle_d3cold_work, handle_d3cold_func);
|
INIT_WORK(&dev->handle_d3cold_work, handle_d3cold_func);
|
||||||
|
|
||||||
if (dev->aggregated_irq) {
|
if (dev->aggregated_irq) {
|
||||||
|
irq_set_status_flags(dev->irq[EP_PCIE_INT_GLOBAL].num, IRQ_NOAUTOEN);
|
||||||
ret = devm_request_irq(pdev,
|
ret = devm_request_irq(pdev,
|
||||||
dev->irq[EP_PCIE_INT_GLOBAL].num,
|
dev->irq[EP_PCIE_INT_GLOBAL].num,
|
||||||
ep_pcie_handle_global_irq,
|
ep_pcie_handle_global_irq,
|
||||||
@ -3440,6 +3441,7 @@ static int ep_pcie_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
qcom_edma_init(&pdev->dev);
|
qcom_edma_init(&pdev->dev);
|
||||||
|
|
||||||
|
enable_irq(ep_pcie_dev.irq[EP_PCIE_INT_GLOBAL].num);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
irq_deinit:
|
irq_deinit:
|
||||||
|
Loading…
Reference in New Issue
Block a user