]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/irq/chip.c
Merge branch 'linus' into irq/genirq
[linux-2.6-omap-h63xx.git] / kernel / irq / chip.c
index b343deedae914b59399a504854b2a97a105742c8..9a7fbb84f5651894891e8c9c591cc2da55593e91 100644 (file)
@@ -125,6 +125,7 @@ int set_irq_type(unsigned int irq, unsigned int type)
                return -ENODEV;
        }
 
+       type &= IRQ_TYPE_SENSE_MASK;
        if (type == IRQ_TYPE_NONE)
                return 0;
 
@@ -289,7 +290,8 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq)
                desc->chip->mask_ack(irq);
        else {
                desc->chip->mask(irq);
-               desc->chip->ack(irq);
+               if (desc->chip->ack)
+                       desc->chip->ack(irq);
        }
 }
 
@@ -474,7 +476,8 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
        kstat_incr_irqs_this_cpu(irq, desc);
 
        /* Start handling the irq */
-       desc->chip->ack(irq);
+       if (desc->chip->ack)
+               desc->chip->ack(irq);
        desc = irq_remap_to_desc(irq, desc);
 
        /* Mark the IRQ currently in progress.*/