Loading drivers/pci/controller/pci-msm-msi.c +23 −1 Original line number Diff line number Diff line // 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> Loading Loading @@ -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); Loading @@ -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); } Loading @@ -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]; Loading @@ -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; Loading @@ -554,6 +575,7 @@ static int msm_msi_qgic_irq_setup(struct msm_msi *msi) 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 Loading
drivers/pci/controller/pci-msm-msi.c +23 −1 Original line number Diff line number Diff line // 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> Loading Loading @@ -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); Loading @@ -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); } Loading @@ -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]; Loading @@ -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; Loading @@ -554,6 +575,7 @@ static int msm_msi_qgic_irq_setup(struct msm_msi *msi) 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