summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHiFiPHile <[email protected]>2026-09-01 03:46:15 +0200
committerHiFiPHile <[email protected]>2026-09-02 10:50:03 +0200
commitc023de98f44a6c0563e8addc2be3864887aa1d41 (patch)
tree51ef2b37edd50dcc9156b90e7435e847a9ad8056 /lib
parentee92fa7607c8eacac0ea44ffa09ece2d4e67a6f0 (diff)
fix(dwc2): preserve simultaneous slave channel halt
Slave-mode channel handlers process one interrupt cause per pass, but the dispatcher acknowledged every HCINT bit before invoking them. When ChHltd arrived together with another cause, the handler consumed the other cause and the halt was lost. A subsequent disable could then leave CHENA|CHDIS asserted with HCINT and HAINT clear, so the submitted periodic transfer never completed. When a slave channel reports ChHltd with another cause, acknowledge only the non-halt causes and leave ChHltd pending for the next channel-IRQ pass. DMA handlers retain their existing combined-cause behavior. The uninstrumented negative capture reproduced the lost terminal state with HCCHAR=0xe044881c, HCTSIZ=0x0008001c, HCINT=0, and XFER_RESULT_INVALID.
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions