1
0
Fork 0
forked from len0rd/rockbox

Gigabeat S: Fix the recording locking upon using it a second time.

Apparently I got the "just-in-case" RXFIFO purge in there before the
RXFIFO was enabled, causing severe hardware spasms.

Change-Id: I2ea4b6d28e06372b61cb3f21ab2fce71dd408213
This commit is contained in:
Michael Sevakis 2012-05-23 10:18:32 -04:00
parent 5b9a5054f5
commit 5c36e2f21c

View file

@ -428,20 +428,20 @@ void pcm_rec_dma_start(void *addr, size_t size)
if (!sdma_channel_reset(DMA_REC_CH_NUM)) if (!sdma_channel_reset(DMA_REC_CH_NUM))
return; return;
SSI_SRCR1 |= SSI_SRCR_RFEN0; /* Enable RX FIFO */
/* Ensure clear FIFO */ /* Ensure clear FIFO */
while (SSI_SFCSR1 & SSI_SFCSR_RFCNT0) while (SSI_SFCSR1 & SSI_SFCSR_RFCNT0)
SSI_SRX0_1; SSI_SRX0_1;
dma_rec_data.state = 1; /* Check callback on unlock */
SSI_SRCR1 |= SSI_SRCR_RFEN0; /* Enable RX FIFO */
/* Enable receive */ /* Enable receive */
SSI_SCR1 |= SSI_SCR_RE; SSI_SCR1 |= SSI_SCR_RE;
SSI_SIER1 |= SSI_SIER_RDMAE; /* Enable DMA req. */ SSI_SIER1 |= SSI_SIER_RDMAE; /* Enable DMA req. */
/* Begin DMA transfer */ /* Begin DMA transfer */
rec_start_dma(addr, size); rec_start_dma(addr, size);
dma_rec_data.state = 1; /* Check callback on unlock */
} }
void pcm_rec_dma_close(void) void pcm_rec_dma_close(void)