mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 12:58:12 -04:00
Merge "msm: msi: set enable_irq_wake for PCIe MSI IRQ"
This commit is contained in:
commit
bb168a0f46
1 changed files with 23 additions and 1 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.*/
|
||||
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.*/
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/iommu.h>
|
||||
|
|
@ -480,6 +480,14 @@ static int msm_msi_snps_irq_setup(struct msm_msi *msi)
|
|||
goto free_irqs;
|
||||
}
|
||||
|
||||
ret = enable_irq_wake(irq);
|
||||
if (ret) {
|
||||
dev_err(msi->dev,
|
||||
"MSI: Unable to set enable_irq_wake for interrupt: %d: %d\n",
|
||||
i, irq);
|
||||
goto free_irq;
|
||||
}
|
||||
|
||||
msi_grp = &msi->grps[i];
|
||||
msi_grp->int_en_reg = msi->pcie_cfg +
|
||||
PCIE_MSI_CTRL_INT_N_EN_OFFS(i);
|
||||
|
|
@ -503,11 +511,14 @@ static int msm_msi_snps_irq_setup(struct msm_msi *msi)
|
|||
|
||||
return 0;
|
||||
|
||||
free_irq:
|
||||
irq_dispose_mapping(irq);
|
||||
free_irqs:
|
||||
for (--i; i >= 0; i--) {
|
||||
irq = msi->grps[i].irqs[0].hwirq;
|
||||
|
||||
irq_set_chained_handler_and_data(irq, NULL, NULL);
|
||||
disable_irq_wake(irq);
|
||||
irq_dispose_mapping(irq);
|
||||
}
|
||||
|
||||
|
|
@ -531,6 +542,14 @@ static int msm_msi_qgic_irq_setup(struct msm_msi *msi)
|
|||
goto free_irqs;
|
||||
}
|
||||
|
||||
ret = enable_irq_wake(irq);
|
||||
if (ret) {
|
||||
dev_err(msi->dev,
|
||||
"MSI: Unable to set enable_irq_wake for interrupt: %d: %d\n",
|
||||
i, irq);
|
||||
goto free_irq;
|
||||
}
|
||||
|
||||
grp = i / MSI_IRQ_PER_GRP;
|
||||
index = i % MSI_IRQ_PER_GRP;
|
||||
msi_grp = &msi->grps[grp];
|
||||
|
|
@ -547,6 +566,8 @@ static int msm_msi_qgic_irq_setup(struct msm_msi *msi)
|
|||
|
||||
return 0;
|
||||
|
||||
free_irq:
|
||||
irq_dispose_mapping(irq);
|
||||
free_irqs:
|
||||
for (--i; i >= 0; i--) {
|
||||
grp = i / MSI_IRQ_PER_GRP;
|
||||
|
|
@ -554,6 +575,7 @@ free_irqs:
|
|||
irq = msi->grps[grp].irqs[index].hwirq;
|
||||
|
||||
irq_set_chained_handler_and_data(irq, NULL, NULL);
|
||||
disable_irq_wake(irq);
|
||||
irq_dispose_mapping(irq);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue