irq_desc[i].probing = 1;
irq_desc[i].triggered = 0;
+ if (irq_desc[i].chip->type)
+ irq_desc[i].chip->type(i, IRQT_PROBE);
irq_desc[i].chip->unmask(i);
irqs += 1;
}
else
mask = GPIO11_27_MASK(irq);
+ if (type == IRQT_PROBE) {
+ if ((GPIO_IRQ_rising_edge | GPIO_IRQ_falling_edge) & mask)
+ return 0;
+ type == __IRQT_RISEDGE | __IRQT_FALEDGE;
+ }
+
if (type & __IRQT_RISEDGE) {
GPIO_IRQ_rising_edge |= mask;
} else
{
unsigned int mask = SA1111_IRQMASK_LO(irq);
+ if (flags == IRQT_PROBE)
+ return 0;
+
if ((!(flags & __IRQT_RISEDGE) ^ !(flags & __IRQT_FALEDGE)) == 0)
return -EINVAL;
- printk("IRQ%d: %s edge\n", irq, flags & __IRQT_RISEDGE ? "rising" : "falling");
-
if (flags & __IRQT_RISEDGE)
INTPOL0 &= ~mask;
else
{
unsigned int mask = SA1111_IRQMASK_HI(irq);
+ if (flags == IRQT_PROBE)
+ return 0;
+
if ((!(flags & __IRQT_RISEDGE) ^ !(flags & __IRQT_FALEDGE)) == 0)
return -EINVAL;
- printk("IRQ%d: %s edge\n", irq, flags & __IRQT_RISEDGE ? "rising" : "falling");
-
if (flags & __IRQT_RISEDGE)
INTPOL1 &= ~mask;
else