mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 20:55:17 -05:00
Gigeabeat S: Reset DMA size info when stopping audio playback and recording transfers so that size remaing/peak buffer calls return 0/NULL when stopped.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28941 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
5f43d0db5c
commit
4048cf27a2
1 changed files with 22 additions and 0 deletions
|
|
@ -270,6 +270,17 @@ static void play_stop_pcm(void)
|
|||
SSI_STCR2 &= ~SSI_STCR_TFEN0; /* Disable TX */
|
||||
SSI_SCR2 &= ~(SSI_SCR_TE | SSI_SCR_SSIEN); /* Disable transmission, SSI */
|
||||
|
||||
if (pcm_playing)
|
||||
{
|
||||
/* Stopping: clear buffer info to ensure 0-size readbacks when
|
||||
* stopped */
|
||||
unsigned long dsa = 0;
|
||||
dma_play_bd.buf_addr = NULL;
|
||||
dma_play_bd.mode.count = 0;
|
||||
clean_dcache_range(&dsa, sizeof(dsa));
|
||||
sdma_write_words(&dsa, CHANNEL_CONTEXT_ADDR(DMA_PLAY_CH_NUM)+0x0b, 1);
|
||||
}
|
||||
|
||||
/* Clear any pending callback */
|
||||
dma_play_data.callback_pending = 0;
|
||||
}
|
||||
|
|
@ -463,6 +474,17 @@ void pcm_rec_dma_stop(void)
|
|||
SSI_SCR1 &= ~SSI_SCR_RE; /* Disable RX */
|
||||
SSI_SRCR1 &= ~SSI_SRCR_RFEN0; /* Disable RX FIFO */
|
||||
|
||||
if (pcm_recording)
|
||||
{
|
||||
/* Stopping: clear buffer info to ensure 0-size readbacks when
|
||||
* stopped */
|
||||
unsigned long pda = 0;
|
||||
dma_rec_bd.buf_addr = NULL;
|
||||
dma_rec_bd.mode.count = 0;
|
||||
clean_dcache_range(&pda, sizeof(pda));
|
||||
sdma_write_words(&pda, CHANNEL_CONTEXT_ADDR(DMA_REC_CH_NUM)+0x0a, 1);
|
||||
}
|
||||
|
||||
/* Clear any pending callback */
|
||||
dma_rec_data.callback_pending = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue