linguini1 opened a new pull request, #16281:
URL: https://github.com/apache/nuttx/pull/16281
## Summary
The RP2040 chip supports 4 different GPIO interrupt modes. They can be
configured to be used simultaneously, although previously the NuttX support
only allowed one type of interrupt to be enabled per GPIO pin. This allows up
to all four to be selected without changing previous behaviour.
## Impact
This impacts the interrupt configuration behaviour for the RP2040. Where it
used to only be previously possible to select one interrupt per pin:
```c
ret = rp2040_gpio_irq_attach(irq,
RP2040_GPIO_INTR_EDGE_HIGH,
rp2040gpio_interrupt,
&g_gpint[rp2040gpint->rp2040gpio.id]);
```
it is now possible to select multiple interrupts per pin using the OR
operator:
```c
ret = rp2040_gpio_irq_attach(irq,
RP2040_GPIO_INTR_EDGE_LOW |
RP2040_GPIO_INTR_EDGE_HIGH,
rp2040gpio_interrupt,
&g_gpint[rp2040gpint->rp2040gpio.id]);
```
This change does not affect any previous code relying on the old behaviour,
since it is still possible to only enable one interrupt mode at a time.
No other part of the system is affected by this change.
## Testing
This change was compiled and tested on the W5500-EVB Pico board. I enabled
the gpio driver and `gpio` example. In the gpio driver, I enabled both rising
and falling edge interrupts (as in the second code snippet above). The GPIO
pins were enabled with a pull-down resistor.
I then used the gpio example to wait for interrupt on GPIO2 and verified
that it works for both rising and falling interrupts by plugging a 3.3V signal
into GPIO2 (triggering rising interrupt), and then removing it (triggering
falling interrupt).
Logs:
```console
nsh> gpio -w 30 /dev/gpio2
Driver: /dev/gpio2
Interrupt pin: Value=1
Verify: Value=0
nsh> gpio -w 30 /de/gpio2
Driver: /dev/gpio2
Interrupt pin: Value=0
Verify: Value=1
nsh>
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]