<div dir="ltr">Hi Pavel,<div>Thanks for the feedback, we will definitely get the parameter change in when the code is submitted.</div><div><br></div><div>Alan</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Aug 21, 2014 at 8:20 AM, Pavel Pisa <span dir="ltr"><<a href="mailto:ppisa4lists@pikron.com" target="_blank">ppisa4lists@pikron.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello everybody,<br>
<br>
I am happy that the common GPIO API for RTEMS is developed<br>
but I have some concerns about IRQ handlers registration.<br>
<div class=""><br>
On Sunday 06 of July 2014 00:58:23 Andre Marques wrote:<br>
> Hello,<br>
><br>
> The Raspberry Pi GPIO interrupts are already working, and a test case is<br>
> available to test that [1]. A function is also provided to debounce a<br>
> switch if needed. The test case requires two switches and two LEDS using<br>
> the same setup described at [2] by only changing the pin numbers.<br>
<br>
</div><a href="https://github.com/asuol/rtems/blob/GPIO_API/testsuites/samples/LIBGPIO_TEST_IRQ/init.c" target="_blank">https://github.com/asuol/rtems/blob/GPIO_API/testsuites/samples/LIBGPIO_TEST_IRQ/init.c</a><br>
<br>
<a href="http://wiki.rtems.org/wiki/index.php/Raspberry_Pi_BSP_Peripherals" target="_blank">http://wiki.rtems.org/wiki/index.php/Raspberry_Pi_BSP_Peripherals</a><br>
<br>
The registered handler has no context parameter.This is unfortunate<br>
because there is often need to do same or similar processing<br>
for more interrupt sources and this way it means to write<br>
individual handler or trampoline for each pin.<br>
<br>
Please change registered handler prototype to same type<br>
as rtems_interrupt_handler used in rtems_interrupt_handler_install<br>
<br>
  typedef void (*rtems_interrupt_handler)(void *);<br>
<br>
then function prototype of gpio_enable_interrupt() should add<br>
void *arg and its value should be stored together with handler<br>
pointer and pass to the handler when called.<br>
<br>
In the fact, Linux kernel goes even more further where it<br>
statically or runtime allocates numbers for individual<br>
IO pins interrupt sources in the main interrupt table.<br>
Then GPIO provides only function to map GPIO number<br>
to IRQ source number and standard registration<br>
of interrupt handler is used to register to individual<br>
pin interrupt. That has advantage, that drivers of peripherals<br>
do not need to distinguish if their peripheral is connected<br>
to direct external IRQ source or to the GPIO pin which needs<br>
cascade IRQ event processing. In RTEMS that would lead to<br>
use of rtems_interrupt_handler_install even for GPIO IRQs.<br>
<br>
But that would require more changes. But passing of context<br>
to the handler is very important and fortunately RTEMS<br>
has switched from other handler prototypes to this standard<br>
years ago already.<br>
<br>
Best wishes,<br>
<br>
                Pavel<br>
<br>
</blockquote></div><br></div>