From cabd46d0440706bfcc1e470b9e71f0bd8254a47b Mon Sep 17 00:00:00 2001 From: "Pamidipati, Vijay" Date: Wed, 30 May 2018 23:34:42 +0530 Subject: [PATCH] qcacmn: Set IRQ_DISABLE_UNLAZY flag for DP interrupts Since DP interrupts are not disabled at source, and enabled and disabled only at GIC level, set IRQ_DISABLE_UNLAZY flag to avoid spurious interrupt detection Change-Id: Ie935bee5bf31171d75342cd7607b0478d5e16906 CRs-Fixed: 2257162 --- hif/src/snoc/if_ahb.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hif/src/snoc/if_ahb.c b/hif/src/snoc/if_ahb.c index ce1ae0fde31e..b508e5fee08a 100644 --- a/hif/src/snoc/if_ahb.c +++ b/hif/src/snoc/if_ahb.c @@ -300,6 +300,7 @@ int hif_ahb_configure_grp_irq(struct hif_softc *scn, irq = platform_get_irq_byname(pdev, irq_name); ic_irqnum[hif_ext_group->irq[j]] = irq; + irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY); ret = request_irq(irq, hif_ext_group_interrupt_handler, IRQF_TRIGGER_RISING, ic_irqname[hif_ext_group->irq[j]], @@ -322,6 +323,7 @@ void hif_ahb_deconfigure_grp_irq(struct hif_softc *scn) struct HIF_CE_state *hif_state = HIF_GET_CE_STATE(scn); struct hif_exec_context *hif_ext_group; int i, j; + int irq = 0; /* configure external interrupts */ for (i = 0; i < hif_state->hif_num_extgroup; i++) { @@ -329,8 +331,10 @@ void hif_ahb_deconfigure_grp_irq(struct hif_softc *scn) if (hif_ext_group->irq_requested == true) { hif_ext_group->irq_requested = false; for (j = 0; j < hif_ext_group->numirq; j++) { - free_irq(hif_ext_group->os_irq[j], - hif_ext_group); + irq = hif_ext_group->os_irq[j]; + irq_clear_status_flags(irq, + IRQ_DISABLE_UNLAZY); + free_irq(irq, hif_ext_group); } } }