diff options
| author | HiFiPHile <[email protected]> | 2026-09-01 03:46:15 +0200 |
|---|---|---|
| committer | HiFiPHile <[email protected]> | 2026-09-02 10:50:03 +0200 |
| commit | c023de98f44a6c0563e8addc2be3864887aa1d41 (patch) | |
| tree | 51ef2b37edd50dcc9156b90e7435e847a9ad8056 /docs/_templates | |
| parent | ee92fa7607c8eacac0ea44ffa09ece2d4e67a6f0 (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 'docs/_templates')
0 files changed, 0 insertions, 0 deletions
