FS#8830 - Sansa: DMA support for sd-card data access (experimentary)
First approach, to add dma read/write disk access to the sansa.
There are some restrictions on the dma functionality with this patch:
- only stabile at 80MHz => cpu boost control added to the driver
- only on 16byte aligned data ptr => all data are copied to/from aligned memory
- no interrupt support => using polling method
At 30MHz the driver is much more stable with the following PLL settings:
PLL_CONTROL = 0x8a221e0c; /* 30 MHz = (48MHz/12*30) / 4 */
CLOCK_SOURCE = 0x40007777; /* source #1, #2, #3, #4: PLL (#4 active) */
Reading seems to be in general more reliable than writing of the cards.
The data throughput is a little worse than in the current implementation.
This is partly due to the data copying.
The sporadical '2bytes inserted' problem with the USB file transfer is still
there. Interestingly @30MHz with the above settings, there is another problem:
sporadically '2bytes missing' and '2bytes inserted'. Perhaps the DMA transfer
needs some more initialization for proper synchronization.
This task depends upon