1
0
Fork 0
forked from len0rd/rockbox

pcm: Get rid of pcm_play_pause() and associated APIs

Nothing in the core has used it for some time.  It's exported to the
plugin API but the last plugins to use it were switched to the mixer API
back in 2011.

This allows us to get rid of pcm_play_dma_pause() from all audio drivers

Change-Id: Ic3fa02592316f84963e41d792d1cabb436d1ff6b
This commit is contained in:
Solomon Peachy 2020-10-30 20:30:27 -04:00
parent 2d85c72151
commit fe2d52cc7d
35 changed files with 20 additions and 388 deletions

View file

@ -152,26 +152,6 @@ void pcm_play_dma_stop(void)
play_callback_pending = false;
}
void pcm_play_dma_pause(bool pause)
{
is_playing = !pause;
if(pause)
{
dma_pause_channel(0);
/* if producer's buffer finished, upper layer starts anew */
if (dma_rem_size == 0)
play_callback_pending = false;
}
else
{
if (play_sub_size != 0)
dma_resume_channel(0);
/* else unlock calls the callback if sub buffers remain */
}
}
void pcm_play_dma_init(void)
{
bitset32(&CGU_PERI, CGU_I2SOUT_APB_CLOCK_ENABLE);

View file

@ -149,12 +149,6 @@ void pcm_play_dma_start(const void *addr, size_t size)
pcm_play_unlock();
}
void pcm_play_dma_pause(bool pause)
{
imx233_dma_freeze_channel(APB_AUDIO_DAC, pause);
dac_freezed = pause;
}
void pcm_play_dma_init(void)
{
audiohw_preinit();

View file

@ -224,20 +224,6 @@ void pcm_play_dma_stop(void)
play_stop_pcm();
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
sdma_channel_pause(DMA_PLAY_CH_NUM);
play_stop_pcm();
}
else
{
play_start_pcm();
sdma_channel_run(DMA_PLAY_CH_NUM);
}
}
/* Return the number of bytes waiting - full L-R sample pairs only */
size_t pcm_get_bytes_waiting(void)
{

View file

@ -194,15 +194,6 @@ void pcm_play_unlock(void)
restore_fiq(status);
}
void pcm_play_dma_pause(bool pause)
{
if (pause) {
play_stop_pcm();
} else {
play_start_pcm();
}
}
size_t pcm_get_bytes_waiting(void)
{
return dma_play_data.size & ~3;

View file

@ -49,11 +49,6 @@ void pcm_play_dma_stop(void)
{
}
void pcm_play_dma_pause(bool pause)
{
(void)pause;
}
static inline void fill_dma_buf(int offset)
{
short *l, *r, *lend;
@ -62,7 +57,7 @@ static inline void fill_dma_buf(int offset)
lend = l + DMA_BUF_SAMPLES / 2;
r = dma_buf_right + offset;
if (pcm_playing && !pcm_paused)
if (pcm_playing)
{
bool new_buffer =false;

View file

@ -497,15 +497,6 @@ void pcm_play_dma_stop(void)
#endif
}
void pcm_play_dma_pause(bool pause)
{
if (pause) {
play_stop_pcm();
} else {
play_start_pcm();
}
}
size_t pcm_get_bytes_waiting(void)
{
return dma_play_data.size & ~3;

View file

@ -114,21 +114,6 @@ void pcm_play_dma_start(const void *addr, size_t size)
hdma_i2s_transfer(addr, size);
}
/* pause DMA transfer by disabling clock to DMA module */
void pcm_play_dma_pause(bool pause)
{
if(pause)
{
SCU_CLKCFG |= CLKCFG_HDMA;
locked = 1;
}
else
{
SCU_CLKCFG &= ~CLKCFG_HDMA;
locked = 0;
}
}
static void i2s_init(void)
{
#if defined(HAVE_RK27XX_CODEC)

View file

@ -195,24 +195,6 @@ void pcm_play_dma_stop(void)
bitclr32(&CLKCON, 1<<17);
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
/* pause playback on current buffer */
play_stop_pcm();
}
else
{
/* restart playback on current buffer */
/* make sure we're aligned on left channel - skip any right
channel sample left waiting */
DISRC2 = (DCSRC2 + 2) & ~0x3;
DCON2 = DMA_CONTROL_SETUP | (DSTAT2 & 0xFFFFE);
play_start_pcm();
}
}
void fiq_handler(void)
{
static const void *start;

View file

@ -235,24 +235,6 @@ void pcm_play_dma_stop(void)
bitclr32(&CLKCON, 1<<17);
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
/* pause playback on current buffer */
play_stop_pcm();
}
else
{
/* restart playback on current buffer */
/* make sure we're aligned on left channel - skip any right
channel sample left waiting */
DISRC2 = (DCSRC2 + 2) & ~0x3;
DCON2 = DMA_CONTROL_SETUP | (DSTAT2 & 0xFFFFE);
play_start_pcm();
}
}
void fiq_handler(void)
{
static const void *start;

View file

@ -35,7 +35,6 @@
/* Driver for the IIS/PCM part of the s5l8700 using DMA
Notes:
- pcm_play_dma_pause is untested, not sure if implemented the right way
- pcm_play_dma_stop is untested, not sure if implemented the right way
- recording is not implemented
*/
@ -173,17 +172,6 @@ void pcm_play_dma_stop(void)
(0 << 0); /* 0 = LRCK on */
}
/* pause playback by disabling the I2S interface */
void pcm_play_dma_pause(bool pause)
{
if (pause) {
I2STXCOM |= (1 << 0); /* LRCK off */
}
else {
I2STXCOM &= ~(1 << 0); /* LRCK on */
}
}
static void pcm_dma_set_freq(enum hw_freq_indexes idx)
{
struct div_entry div = div_table[idx];

View file

@ -157,13 +157,6 @@ void pcm_play_dma_stop(void)
I2STXCOM = 0xa;
}
/* pause playback by disabling LRCK */
void pcm_play_dma_pause(bool pause)
{
if (pause) I2STXCOM |= 1;
else I2STXCOM &= ~1;
}
/* MCLK = 12MHz (MCLKDIV2=1), [CS42L55 DS, s4.8] */
#define MCLK_FREQ 12000000

View file

@ -85,11 +85,6 @@ void pcm_play_unlock(void)
}
void pcm_play_dma_pause(bool pause)
{
(void) pause;
}
size_t pcm_get_bytes_waiting(void)
{
return 0;

View file

@ -120,20 +120,6 @@ void pcm_play_unlock(void)
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
DSP_(_dma0_stopped)=2;
dsp_wake();
}
else
{
DSP_(_dma0_stopped)=0;
dsp_wake();
}
}
size_t pcm_get_bytes_waiting(void)
{
return DSP_(_sdem_dsp_size)-DSP_(_sdem_level);

View file

@ -127,20 +127,6 @@ void pcm_play_unlock(void)
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
DSP_(_dma0_stopped)=2;
dsp_wake();
}
else
{
DSP_(_dma0_stopped)=0;
dsp_wake();
}
}
size_t pcm_get_bytes_waiting(void)
{
return DSP_(_sdem_dsp_size)-DSP_(_sdem_level);

View file

@ -264,25 +264,6 @@ void pcm_play_dma_stop(void)
dma_play_lock.state = (1 << 14);
} /* pcm_play_dma_stop */
void pcm_play_dma_pause(bool pause)
{
if (pause)
{
/* pause playback on current buffer */
and_l(~(DMA_EEXT | DMA_INT), &DCR0); /* per request and int OFF */
DSR0 = 1; /* stop channel */
iis_play_reset_if_playback(true);
dma_play_lock.state = (1 << 14);
}
else
{
/* restart playback on current buffer */
iis_play_reset_if_playback(true);
or_l(DMA_INT | DMA_EEXT | DMA_START, &DCR0); /* everything ON */
dma_play_lock.state = (0 << 14);
}
} /* pcm_play_dma_pause */
size_t pcm_get_bytes_waiting(void)
{
return BCR0 & 0xffffff;

View file

@ -153,8 +153,11 @@ void pcm_play_dma_start(const void *addr, size_t size)
{
pcm_data_start = addr;
pcm_data_size = size;
pcm_play_dma_pause(false);
(*env_ptr)->CallVoidMethod(env_ptr,
RockboxPCM_instance,
play_pause_method,
(int)pause);
}
void pcm_play_dma_stop(void)
@ -168,14 +171,6 @@ void pcm_play_dma_stop(void)
stop_method);
}
void pcm_play_dma_pause(bool pause)
{
(*env_ptr)->CallVoidMethod(env_ptr,
RockboxPCM_instance,
play_pause_method,
(int)pause);
}
size_t pcm_get_bytes_waiting(void)
{
return pcm_data_size;

View file

@ -364,22 +364,6 @@ void pcm_play_dma_start(const void *addr, size_t size)
pthread_mutex_unlock(&_dma_suspended_mtx);
}
/* TODO: Why is this in the API if it gets never called? */
void pcm_play_dma_pause(bool pause)
{
TRACE;
pthread_mutex_lock(&_dma_suspended_mtx);
_dma_stopped = pause ? 1 : 0;
if(_dma_stopped == 0)
{
pthread_cond_signal(&_dma_suspended_cond);
}
pthread_mutex_unlock(&_dma_suspended_mtx);
}
void pcm_play_dma_stop(void)
{
TRACE;

View file

@ -154,23 +154,6 @@ void pcm_play_dma_stop(void)
gst_element_set_state (GST_ELEMENT(gst_pipeline), GST_STATE_NULL);
}
void pcm_play_dma_pause(bool pause)
{
if (inside_feed_data)
{
if (pause)
g_signal_emit_by_name (gst_appsrc, "end-of-stream", NULL);
else
DEBUGF("ERROR: Called dma_pause(0) while inside feed_data\n");
} else
{
if (pause)
gst_element_set_state (GST_ELEMENT(gst_pipeline), GST_STATE_NULL);
else
gst_element_set_state (GST_ELEMENT(gst_pipeline), GST_STATE_PLAYING);
}
}
size_t pcm_get_bytes_waiting(void)
{
return pcm_data_size;

View file

@ -489,7 +489,7 @@ static void close_hwdev(void)
if (handle) {
snd_pcm_drain(handle);
#ifdef AUDIOHW_MUTE_ON_PAUSE
#ifdef AUDIOHW_MUTE_ON_STOP
audiohw_mute(true);
#endif
if (ahandler) {
@ -634,20 +634,6 @@ void pcm_dma_apply_settings(void)
pcm_play_unlock();
}
void pcm_play_dma_pause(bool pause)
{
logf("PCM DMA pause %d", pause);
if (!handle) return;
#ifdef AUDIOHW_MUTE_ON_PAUSE
if (pause) audiohw_mute(true);
#endif
snd_pcm_pause(handle, pause);
#ifdef AUDIOHW_MUTE_ON_PAUSE
if (!pause) audiohw_mute(false);
#endif
}
void pcm_play_dma_stop(void)
{
logf("PCM DMA stop (%d)", snd_pcm_state(handle));
@ -656,7 +642,7 @@ void pcm_play_dma_stop(void)
if (err < 0)
if (err < 0)
logf("Drain failed: %s", snd_strerror(err));
#ifdef AUDIOHW_MUTE_ON_PAUSE
#ifdef AUDIOHW_MUTE_ON_STOP
audiohw_mute(true);
#endif
}
@ -669,7 +655,7 @@ void pcm_play_dma_start(const void *addr, size_t size)
pcm_data = addr;
pcm_size = size;
#if !defined(AUDIOHW_MUTE_ON_PAUSE) && defined(AUDIOHW_MUTE_ON_SRATE_CHANGE)
#if !defined(AUDIOHW_MUTE_ON_STOP) && defined(AUDIOHW_MUTE_ON_SRATE_CHANGE)
audiohw_mute(false);
#endif
@ -681,7 +667,7 @@ void pcm_play_dma_start(const void *addr, size_t size)
switch (state)
{
case SND_PCM_STATE_RUNNING:
#if defined(AUDIOHW_MUTE_ON_PAUSE)
#if defined(AUDIOHW_MUTE_ON_STOP)
audiohw_mute(false);
#endif
return;
@ -740,11 +726,6 @@ void pcm_play_dma_start(const void *addr, size_t size)
break;
}
case SND_PCM_STATE_PAUSED:
{ /* paused, simply resume */
pcm_play_dma_pause(0);
return;
}
case SND_PCM_STATE_DRAINING:
/* run until drained */
continue;
@ -850,11 +831,6 @@ void pcm_rec_dma_start(void *start, size_t size)
panicf("Start error: %s", snd_strerror(err));
return;
}
case SND_PCM_STATE_PAUSED:
{ /* paused, simply resume */
pcm_play_dma_pause(0);
return;
}
case SND_PCM_STATE_DRAINING:
/* run until drained */
continue;

View file

@ -124,14 +124,6 @@ void pcm_play_dma_stop(void)
#endif
}
void pcm_play_dma_pause(bool pause)
{
if (pause)
SDL_PauseAudio(1);
else
SDL_PauseAudio(0);
}
size_t pcm_get_bytes_waiting(void)
{
return pcm_data_size;

View file

@ -184,18 +184,6 @@ void pcm_play_unlock(void)
restore_irq(flags);
}
void pcm_play_dma_pause(bool pause)
{
int flags = disable_irq_save();
if(pause)
REG_DMAC_DCCSR(DMA_AIC_TX_CHANNEL) &= ~DMAC_DCCSR_EN;
else
REG_DMAC_DCCSR(DMA_AIC_TX_CHANNEL) |= DMAC_DCCSR_EN;
restore_irq(flags);
}
static int get_dma_count(void)
{
int count = REG_DMAC_DTCR(DMA_AIC_TX_CHANNEL);

View file

@ -173,18 +173,6 @@ void pcm_play_unlock(void)
restore_irq(flags);
}
void pcm_play_dma_pause(bool pause)
{
int flags = disable_irq_save();
if(pause)
REG_DMAC_DCCSR(DMA_AIC_TX_CHANNEL) &= ~DMAC_DCCSR_EN;
else
REG_DMAC_DCCSR(DMA_AIC_TX_CHANNEL) |= DMAC_DCCSR_EN;
restore_irq(flags);
}
static int get_dma_count(void)
{
int count = REG_DMAC_DTCR(DMA_AIC_TX_CHANNEL);