msm: pcie: do not set irq chip data when using QGIC MSI
When using QGIC MSI, the MSI controller is GIC not PCIe host driver. Only set irq chip data if PCIe host is the MSI controller. Change-Id: I0ba9e78127424ab3da4b1f46b3ed3fa5d65d05f6 Signed-off-by: Tony Truong <truong@codeaurora.org>
This commit is contained in:
parent
55a25be010
commit
df92ddf7ad
1 changed files with 6 additions and 5 deletions
|
@ -5608,16 +5608,18 @@ static void msm_pcie_unmap_qgic_addr(struct msm_pcie_dev_t *dev,
|
|||
}
|
||||
}
|
||||
|
||||
void msm_pcie_destroy_irq(unsigned int irq)
|
||||
void msm_pcie_destroy_irq(unsigned int irq, struct pci_dev *pdev)
|
||||
{
|
||||
int pos;
|
||||
struct pci_dev *pdev = irq_get_chip_data(irq);
|
||||
struct msi_desc *entry = irq_get_msi_desc(irq);
|
||||
struct msi_desc *firstentry;
|
||||
struct msm_pcie_dev_t *dev;
|
||||
u32 nvec;
|
||||
int firstirq;
|
||||
|
||||
if (!pdev)
|
||||
pdev = irq_get_chip_data(irq);
|
||||
|
||||
if (!pdev) {
|
||||
pr_err("PCIe: pci device is null. IRQ:%d\n", irq);
|
||||
return;
|
||||
|
@ -5677,7 +5679,7 @@ void msm_pcie_destroy_irq(unsigned int irq)
|
|||
void arch_teardown_msi_irq(unsigned int irq)
|
||||
{
|
||||
PCIE_GEN_DBG("irq %d deallocated\n", irq);
|
||||
msm_pcie_destroy_irq(irq);
|
||||
msm_pcie_destroy_irq(irq, NULL);
|
||||
}
|
||||
|
||||
void arch_teardown_msi_irqs(struct pci_dev *dev)
|
||||
|
@ -5696,7 +5698,7 @@ void arch_teardown_msi_irqs(struct pci_dev *dev)
|
|||
continue;
|
||||
nvec = 1 << entry->msi_attrib.multiple;
|
||||
for (i = 0; i < nvec; i++)
|
||||
arch_teardown_msi_irq(entry->irq + i);
|
||||
msm_pcie_destroy_irq(entry->irq + i, dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5892,7 +5894,6 @@ static int arch_setup_msi_irq_qgic(struct pci_dev *pdev,
|
|||
firstirq = irq;
|
||||
|
||||
irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
|
||||
irq_set_chip_data(irq, pdev);
|
||||
}
|
||||
|
||||
/* write msi vector and data */
|
||||
|
|
Loading…
Add table
Reference in a new issue