summaryrefslogtreecommitdiff
path: root/firmware/target/arm/as3525/sd-as3525.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-12-12 20:12:22 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-12-12 20:12:22 +0000
commit184459fa54f1d3f1a6c13c6e729fa116689f225c (patch)
tree968dcda6fc2ad82e945f2ee7f750eb6873c0cc63 /firmware/target/arm/as3525/sd-as3525.c
parent5c1e9365928592a3b54b07e008ccfb5a0656932e (diff)
downloadrockbox-184459fa54f1d3f1a6c13c6e729fa116689f225c.tar.gz
rockbox-184459fa54f1d3f1a6c13c6e729fa116689f225c.zip
Deal with a complication when transferring recording method from PP5024: since the FIFO POP is always read until empty, keep track of sample parity instead of always saving the first one in the FIFO upon entering the ISR or else the first of a duplicate that is also the last in the FIFO would get duplicated. Also, give top priority to audio interrupts in all cases.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31218 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525.c')
-rw-r--r--firmware/target/arm/as3525/sd-as3525.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c
index 6a8606af6a..17f1bfa11d 100644
--- a/firmware/target/arm/as3525/sd-as3525.c
+++ b/firmware/target/arm/as3525/sd-as3525.c
@@ -665,7 +665,7 @@ static int sd_select_bank(signed char bank)
665 dma_retain(); 665 dma_retain();
666 /* we don't use the uncached buffer here, because we need the 666 /* we don't use the uncached buffer here, because we need the
667 * physical memory address for DMA transfers */ 667 * physical memory address for DMA transfers */
668 dma_enable_channel(0, AS3525_PHYSICAL_ADDR(&aligned_buffer[0]), 668 dma_enable_channel(1, AS3525_PHYSICAL_ADDR(&aligned_buffer[0]),
669 MCI_FIFO(INTERNAL_AS3525), DMA_PERI_SD, 669 MCI_FIFO(INTERNAL_AS3525), DMA_PERI_SD,
670 DMAC_FLOWCTRL_PERI_MEM_TO_PERI, true, false, 0, DMA_S8, NULL); 670 DMAC_FLOWCTRL_PERI_MEM_TO_PERI, true, false, 0, DMA_S8, NULL);
671 671
@@ -809,7 +809,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
809 809
810 if(write) 810 if(write)
811 { 811 {
812 dma_enable_channel(0, dma_buf, MCI_FIFO(drive), 812 dma_enable_channel(1, dma_buf, MCI_FIFO(drive),
813 (drive == INTERNAL_AS3525) ? DMA_PERI_SD : DMA_PERI_SD_SLOT, 813 (drive == INTERNAL_AS3525) ? DMA_PERI_SD : DMA_PERI_SD_SLOT,
814 DMAC_FLOWCTRL_PERI_MEM_TO_PERI, true, false, 0, DMA_S8, NULL); 814 DMAC_FLOWCTRL_PERI_MEM_TO_PERI, true, false, 0, DMA_S8, NULL);
815 815
@@ -823,7 +823,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
823#endif 823#endif
824 } 824 }
825 else 825 else
826 dma_enable_channel(0, MCI_FIFO(drive), dma_buf, 826 dma_enable_channel(1, MCI_FIFO(drive), dma_buf,
827 (drive == INTERNAL_AS3525) ? DMA_PERI_SD : DMA_PERI_SD_SLOT, 827 (drive == INTERNAL_AS3525) ? DMA_PERI_SD : DMA_PERI_SD_SLOT,
828 DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL); 828 DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL);
829 829
@@ -846,7 +846,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
846 * dma channel here, otherwise there are still 4 words in the fifo 846 * dma channel here, otherwise there are still 4 words in the fifo
847 * and the retried write will get corrupted. 847 * and the retried write will get corrupted.
848 */ 848 */
849 dma_disable_channel(0); 849 dma_disable_channel(1);
850 850
851 last_disk_activity = current_tick; 851 last_disk_activity = current_tick;
852 852