mirror of
https://github.com/apache/nuttx.git
synced 2026-10-02 19:58:01 +00:00
esp_gpio_irq() registers per-pin GPIO interrupts through gpio_isr_handler_add(), never through esp_setup_irq(), so esp_get_handle() never finds them and up_disable_irq()/up_enable_irq() silently no-op for any GPIO-derived irq number. Fall back to esp_gpioirqdisable()/esp_gpioirqenable() (translating irq back to a pin via ESP_IRQ2PIN()) when the normal interrupt-matrix lookup misses. This surfaced through drivers/sensors/lsm6ds3trc_uorb.c: its ISR schedules a worker to drain the sensor's FIFO over I2C and disables its own IRQ until the worker re-enables it, so a level-triggered source (e.g. a PM GPIO wake source left in level mode) doesn't refire continuously and starve every task, HPWORK included, before the worker ever gets to run. That disable/enable only works now that up_disable_irq()/up_enable_irq() actually do something for GPIO irqs. Signed-off-by: Felipe Moura <moura.fmo@gmail.com> Assisted-by: Claude:claude-sonnet-5 |
||
|---|---|---|
| .. | ||
| arm | ||
| arm64 | ||
| avr | ||
| ceva | ||
| dummy | ||
| hc | ||
| mips | ||
| misoc | ||
| or1k | ||
| renesas | ||
| risc-v | ||
| sim | ||
| sparc | ||
| tricore | ||
| x86 | ||
| x86_64 | ||
| xtensa | ||
| z16 | ||
| z80 | ||
| CMakeLists.txt | ||
| Kconfig | ||