omap: iommu: Return IRQ_HANDLED in fault handler when no fault occured
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 10 May 2011 14:56:46 +0000 (16:56 +0200)
committerTony Lindgren <tony@atomide.com>
Wed, 11 May 2011 17:47:50 +0000 (10:47 -0700)
Commit d594f1f31afe13edd8c02f3854a65cc58cfb3b74 (omap: IOMMU: add
support to callback during fault handling) broke interrupt line sharing
between the OMAP3 ISP and its IOMMU. Because of this, every interrupt
generated by the OMAP3 ISP is handled by the IOMMU driver instead of
being passed to the OMAP3 ISP driver.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/plat-omap/iommu.c

index 8a51fd58f656e15f6f1fa7d51eb0501e18143149..34fc31ee9081ff8624d77dfb664ebe059d4c9343 100644 (file)
@@ -793,6 +793,8 @@ static irqreturn_t iommu_fault_handler(int irq, void *data)
        clk_enable(obj->clk);
        errs = iommu_report_fault(obj, &da);
        clk_disable(obj->clk);
+       if (errs == 0)
+               return IRQ_HANDLED;
 
        /* Fault callback or TLB/PTE Dynamic loading */
        if (obj->isr && !obj->isr(obj, da, errs, obj->isr_priv))