jerpelea opened a new pull request, #20076: URL: https://github.com/apache/nuttx/pull/20076
## Summary The driver presents a single channel space of `GPIOTE_CHANNELS` entries across the application core's two GPIOTE peripherals, and splits it: ```c inst = (channel < GPIOTE_PER_CHANNEL) ? 0 : 1; rchan = (inst == 1) ? channel : (channel - GPIOTE_PER_CHANNEL); ``` `rchan` is the channel index *within* the selected instance, used to build the per-channel register offsets, so it must be ```c rchan = channel - GPIOTE_PER_CHANNEL * inst ``` The ternary has the two arms the other way round: a channel on instance 0 gets `rchan = channel - GPIOTE_PER_CHANNEL`, which is negative, and a channel on instance 1 gets an index still offset by a full instance. ### Corroboration The interrupt handler in this same file already applies that mapping in the opposite direction, converting a per-instance channel back to the global one: ```c off = i + GPIOTE_PER_CHANNEL * inst; /* nrf53_gpiote.c, nrf53_gpiote_isr() */ ``` The two were inconsistent, and it is the `rchan` sites that disagreed with the rest of the driver. Per the nRF5340 Product Specification, *GPIOTE - GPIO tasks and events*, the application core has two GPIOTE instances: | instance | base | channels | CONFIG | |---|---|---|---| | GPIOTE0 (secure) | `0x5000D000` | 8 | `CONFIG[n]`, n = 0..7 | | GPIOTE1 (non-secure) | `0x4002F000` | 8 | `CONFIG[n]`, n = 0..7 | `CONFIG[n]` sits at offset `0x510 + 4n`. That matches `GPIOTE_PER_CHANNEL == 8` in the driver, the two base addresses in `hardware/nrf53_memorymap_cpuapp.h`, and `NRF53_GPIOTE_CONFIG_OFFSET()` in `hardware/nrf53_gpiote.h` - so `rchan` is required to be in 0..7 and a negative value cannot address a CONFIG register. Both call sites are corrected. ## Impact RELEASE ## Testing CI -- 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]
