diff --git a/firmware/target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c b/firmware/target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c index c26349b72e..76789a7dbd 100644 --- a/firmware/target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c +++ b/firmware/target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c @@ -428,20 +428,20 @@ void pcm_rec_dma_start(void *addr, size_t size) if (!sdma_channel_reset(DMA_REC_CH_NUM)) return; + SSI_SRCR1 |= SSI_SRCR_RFEN0; /* Enable RX FIFO */ + /* Ensure clear FIFO */ while (SSI_SFCSR1 & SSI_SFCSR_RFCNT0) SSI_SRX0_1; - dma_rec_data.state = 1; /* Check callback on unlock */ - - SSI_SRCR1 |= SSI_SRCR_RFEN0; /* Enable RX FIFO */ - /* Enable receive */ SSI_SCR1 |= SSI_SCR_RE; SSI_SIER1 |= SSI_SIER_RDMAE; /* Enable DMA req. */ /* Begin DMA transfer */ rec_start_dma(addr, size); + + dma_rec_data.state = 1; /* Check callback on unlock */ } void pcm_rec_dma_close(void)