nuttx/arch/arm/src
Marco Casaroli 446a7d6934 arch/arm/rp23xx: Clear the DMA callback before invoking it.
The completion handler did:

    dmach->callback(...);
    dmach->callback = NULL;     /* after the call */

so a callback that registers itself again -- which is the only way for a
driver to keep a channel running continuously -- has that registration
wiped the moment it returns.  The channel transfers one more block and
then goes deaf, with no error raised anywhere and nothing in the
registers to say why.  A PWM audio driver hit this and worked around it
by restarting from a thread instead, which put a millisecond of silence
into every buffer boundary.

Lift the callback and its argument out first and clear them before the
call.  One-shot behaviour is unchanged for every existing user, since
none of them re-register from inside the call; the difference is only
that one which does now survives.

Tested on a Pimoroni Pico Plus 2 W (pimoroni-pico-plus-2-w:nsh) with a
local test: a memory-to-memory transfer whose callback starts the next
one, 100 times.  Master gives 1 completion of 100; this change gives 100.
The existing users (SPI, I2S, CYW43439, WS2812) do not start a transfer
from inside the callback, so they do not change.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-10-08 15:53:54 -03:00
..
a1x
am67 drivers/vhost: Optimize vhost-net performance and robustness 2026-09-27 18:41:30 +08:00
am335x boards/arm: Add support for the original BeagleBone 2026-08-19 10:11:38 +08:00
arm
armv6-m arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
armv7-a arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
armv7-m arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
armv7-r arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
armv8-m arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
armv8-r arch: bound syscall numbers and nesting in every build 2026-10-01 22:53:55 +08:00
at32 {arm,xtensa}/otg: indent switch bodies per the coding standard. 2026-08-25 16:07:35 +08:00
c5471
cmake arch/arm: Keep GCC from making tail calls in an FDPIC module. 2026-10-07 11:45:09 -03:00
common arch/arm/stm32h5: Use common Cortex-M33 USART support 2026-10-08 15:53:21 -03:00
csk6
cxd32xx
cxd56xx arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
dm320
efm32 {arm,xtensa}/otg: indent switch bodies per the coding standard. 2026-08-25 16:07:35 +08:00
eoss3
fvp-v8r-aarch32
gd32f4
goldfish
ht32f491x3
imx1
imx6
imx9 arch/arm/src/imx9: add GPIO5 base address for i.MX95 2026-10-07 08:50:46 -03:00
imxrt arch/arm/imxrt: Make performance optimized memory configuration for M7 NSH 2026-10-08 16:25:44 +08:00
kinetis net, arch: Fix nxstyle errors in files the CAN ioctl merge touches. 2026-09-01 17:40:47 +08:00
kl
lc823450 arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
lpc17xx_40xx
lpc31xx
lpc43xx
lpc54xx
lpc214x
lpc2378
max326xx
mcx-nxxx
moxart
mps arch/arm/mps: Let user code run modules from the text and data heaps. 2026-09-28 16:46:05 -03:00
mx8mp
n32h7 arch/arm/n32h7: Add N32H762IIL7 BSP 2026-09-17 09:39:41 -03:00
nrf52 arch/nrf52: add SAADC external TIMER trigger over PPI 2026-09-28 11:20:31 +02:00
nrf53 arch/nrf52,nrf53,nrf91: fix nxstyle issues 2026-09-25 18:24:36 +08:00
nrf54l arm/nrf54l: add USBHS device support 2026-10-08 09:54:55 -03:00
nrf91 arch/nrf52,nrf53,nrf91: fix nxstyle issues 2026-09-25 18:24:36 +08:00
nuc1xx
phy62xx
qemu
ra4
ra8m1 arch/arm/ra8m1: Add DTC and per-instance SCI FIFO/DTC/termios support 2026-10-06 16:56:58 -03:00
rp23xx arch/arm/rp23xx: Clear the DMA callback before invoking it. 2026-10-08 15:53:54 -03:00
rp2040 arch/arm/rp2040: fix IN endpoint DPSRAM index for bare-eplog callers 2026-09-08 08:22:37 -03:00
rtl8720c sched/semaphore: Fix pre-existing nxstyle issues in the touched files 2026-09-25 10:37:43 +02:00
rtl8720f arch/arm/rtl8720f: add timer driver support 2026-09-01 17:41:14 +08:00
rtl8721dx arch/arm/rtl8721dx: add shared Ameba timer driver 2026-09-01 17:41:14 +08:00
rtl8721f arch/arm/rtl8721f: add timer driver support 2026-09-01 17:41:14 +08:00
rtl8730e arch/arm/rtl8730e: add I2C master driver support 2026-10-08 15:49:34 -03:00
s32k1xx arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
s32k3xx arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
sam34
sama5
samd2l2
samd5e5
samv7 arch/arm/src/samv7/sam_mcan.c: fix coding style issues 2026-09-23 11:28:27 +08:00
stm32c0 arch/arm/stm32c0: Add USB device support 2026-09-14 18:32:23 -03:00
stm32c5 arch/arm/stm32c5: Add STM32C562 architecture support 2026-08-27 01:07:10 +08:00
stm32f0 boards/nucleo-f072rb: Add USB device support and a CDC/ACM configuration. 2026-08-20 15:16:33 -03:00
stm32f1
stm32f2
stm32f3
stm32f4 arch/arm/stm32f4: add STM32F412CG chip selection 2026-09-01 17:40:30 +08:00
stm32f7 arch/arm/stm32: fix compare-match race and zero-period hang in tickless 2026-09-18 09:30:22 +08:00
stm32g0 arm/stm32g0: Expose SPI2 capability on STM32G0B1. 2026-10-01 23:14:44 +08:00
stm32g4
stm32h5 arch/arm/stm32h5: Use common Cortex-M33 USART support 2026-10-08 15:53:21 -03:00
stm32h7 arm/stm32h7: Allow PendSV with high-priority interrupts. 2026-10-08 10:36:28 -03:00
stm32l0 boards/nucleo-l073rz: Add USB device support and a CDC/ACM configuration. 2026-08-22 01:23:12 +08:00
stm32l1
stm32l4 {arm,xtensa}/otg: indent switch bodies per the coding standard. 2026-08-25 16:07:35 +08:00
stm32l5 stm32l5: Fix nxstyle errors in drivers and board LEDs 2026-09-22 09:21:35 -03:00
stm32n6 arm/stm32n6: allow debugger access after flash boot 2026-10-06 15:34:14 -03:00
stm32u0 arch/arm: add stm32u0 support 2026-08-18 15:00:15 +02:00
stm32u3 arch/arm/stm32: Unify Cortex-M33 RCC include names 2026-08-27 01:07:10 +08:00
stm32u5 arch/arm/stm32: Unify Cortex-M33 RCC include names 2026-08-27 01:07:10 +08:00
stm32wb arch/arm/stm32: fix compare-match race and zero-period hang in tickless 2026-09-18 09:30:22 +08:00
stm32wl5 arch/arm/stm32: use common SYSTICK_HCLKd8 symbol 2026-08-18 09:34:58 +08:00
str71x
tiva
tlsr82
tms570
xmc4
.gitignore
CMakeLists.txt
Makefile