Fix SPI dma problems; other cleanups #47
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Helping to fix adafruit/circuitpython#10663, plus some other changes. Part of PR adafruit/circuitpython#10668
shared_dma_transfer_*routines were passing thedma_descr_tstruct by value, which caused the caller not to see changes made by the callee,. In particular.progressstruct member changes were lost. Changed to pass by pointer.dma_descr_ttodma_transfer_tto avoid confusion with hardware DMA descriptors also used in that code.NO_DMA_CHANNELinstead ofAUDIO_DMA_CHANNEL_COUNTandDMA_CHANNEL_COUNTto indicate an invalid channel number.dma_allocate_channel(bool audio_channel)replaced bydma_allocate_audio_channel(void)anddma_allocate_non_audio_channel(void)to not pass control requests as arg and to clarify.samd/samd21/dma.c.dma.h: SAMD21 and SAMx5x have different numbers of DMA channels, so defineDMA_CHANNEL_COUNTseparately for each chip family.Taggin @Randall-Scharpf for interest.