dwc2/hcd: retire a closing DMA channel on its halt without re-arming it (#4151)

In buffer DMA mode the halt requested by edpt_close() can arrive with NAK,
ACK, NYET or XactErr. The per-direction handlers re-armed the channel for
those before their trailing closing check, so the channel was de-allocated
with HCCHAR.ChEna still set (W1S, cleared only by the core) and its next
transfer was never serviced. This defeated the enumeration retry after a
control timeout (#4096): the UDisk NAKs its first GET_DESCRIPTOR, the abort
and dev0 close re-armed then retired EP0's channel, and the hub request that
starts the retry hung. Retire closing channels in the DMA halt early exit,
alongside aborted ones, for both directions.
1 file changed