On Wed, Oct 01, 2014 at 01:54:37PM -0400, Lennart Sorensen wrote:
> Well gpio-omap has this:
> 
>         if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
>                 __irq_set_handler_locked(d->irq, handle_level_irq);
>         else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
>                 __irq_set_handler_locked(d->irq, handle_edge_irq);
> 
> 
> So I imagine it would call handle_level_irq in my case.  When I don't
> specify HIGH or LOW, it would call neither and I get no hang.  I did
> not try FALLING or RISING yet, although currently I suspect those would
> hang too.
> 
> I also see:
> 
>                         ipipe_handle_demuxed_irq
>                                 (irq_find_mapping(bank->domain, bit));
> 
> That's in gpio-omap as well.  I see no calls to generic_handle_irq?

I noticed gpio_unmask_irq in gpio-omap.c uses irqd_get_trigger_type to
get the existing trigger type in case if was masked by setting it to
type NONE.  I don't see anywhere actually calling irqd_set_trigger_type
though to actually populate the data with the desired trigger.  Maybe I
just missed it but I just don't see where that is being done.  Doesn't
explain the hang, but sure looks weird.

-- 
Len Sorensen

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to