mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
ASoC: soc-pcm: move snd_soc_dpcm_can_be_xxx() to top
This patch moves snd_soc_dpcm_can_be_xxx() functions to top of soc-pcm.c This is prepare for cleanup. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/87ikvmdf7j.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
69a8d0edb9
commit
4dd4baa440
@ -49,6 +49,108 @@ static inline int _soc_pcm_ret(struct snd_soc_pcm_runtime *rtd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* is the current PCM operation for this FE ? */
|
||||
int snd_soc_dpcm_fe_can_update(struct snd_soc_pcm_runtime *fe, int stream)
|
||||
{
|
||||
if (fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_FE)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_fe_can_update);
|
||||
|
||||
/* is the current PCM operation for this BE ? */
|
||||
int snd_soc_dpcm_be_can_update(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
if ((fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_FE) ||
|
||||
((fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_BE) &&
|
||||
be->dpcm[stream].runtime_update))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_be_can_update);
|
||||
|
||||
static int snd_soc_dpcm_check_state(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be,
|
||||
int stream,
|
||||
const enum snd_soc_dpcm_state *states,
|
||||
int num_states)
|
||||
{
|
||||
struct snd_soc_dpcm *dpcm;
|
||||
int state;
|
||||
int ret = 1;
|
||||
int i;
|
||||
|
||||
for_each_dpcm_fe(be, stream, dpcm) {
|
||||
|
||||
if (dpcm->fe == fe)
|
||||
continue;
|
||||
|
||||
state = dpcm->fe->dpcm[stream].state;
|
||||
for (i = 0; i < num_states; i++) {
|
||||
if (state == states[i]) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* it's safe to do this BE DAI */
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* We can only hw_free, stop, pause or suspend a BE DAI if any of it's FE
|
||||
* are not running, paused or suspended for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_free_stop(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_SUSPEND,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_free_stop);
|
||||
|
||||
/*
|
||||
* We can only change hw params a BE DAI if any of it's FE are not prepared,
|
||||
* running, paused or suspended for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_params(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_SUSPEND,
|
||||
SND_SOC_DPCM_STATE_PREPARE,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_params);
|
||||
|
||||
/*
|
||||
* We can only prepare a BE DAI if any of it's FE are not prepared,
|
||||
* running or paused for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_prepared(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_PREPARE,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_prepared);
|
||||
|
||||
#define DPCM_MAX_BE_USERS 8
|
||||
|
||||
static inline const char *soc_cpu_dai_name(struct snd_soc_pcm_runtime *rtd)
|
||||
@ -2969,27 +3071,6 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* is the current PCM operation for this FE ? */
|
||||
int snd_soc_dpcm_fe_can_update(struct snd_soc_pcm_runtime *fe, int stream)
|
||||
{
|
||||
if (fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_FE)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_fe_can_update);
|
||||
|
||||
/* is the current PCM operation for this BE ? */
|
||||
int snd_soc_dpcm_be_can_update(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
if ((fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_FE) ||
|
||||
((fe->dpcm[stream].runtime_update == SND_SOC_DPCM_UPDATE_BE) &&
|
||||
be->dpcm[stream].runtime_update))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_be_can_update);
|
||||
|
||||
/* get the substream for this BE */
|
||||
struct snd_pcm_substream *
|
||||
snd_soc_dpcm_get_substream(struct snd_soc_pcm_runtime *be, int stream)
|
||||
@ -2997,84 +3078,3 @@ struct snd_pcm_substream *
|
||||
return be->pcm->streams[stream].substream;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_get_substream);
|
||||
|
||||
static int snd_soc_dpcm_check_state(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be,
|
||||
int stream,
|
||||
const enum snd_soc_dpcm_state *states,
|
||||
int num_states)
|
||||
{
|
||||
struct snd_soc_dpcm *dpcm;
|
||||
int state;
|
||||
int ret = 1;
|
||||
int i;
|
||||
|
||||
for_each_dpcm_fe(be, stream, dpcm) {
|
||||
|
||||
if (dpcm->fe == fe)
|
||||
continue;
|
||||
|
||||
state = dpcm->fe->dpcm[stream].state;
|
||||
for (i = 0; i < num_states; i++) {
|
||||
if (state == states[i]) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* it's safe to do this BE DAI */
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* We can only hw_free, stop, pause or suspend a BE DAI if any of it's FE
|
||||
* are not running, paused or suspended for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_free_stop(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_SUSPEND,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_free_stop);
|
||||
|
||||
/*
|
||||
* We can only change hw params a BE DAI if any of it's FE are not prepared,
|
||||
* running, paused or suspended for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_params(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_SUSPEND,
|
||||
SND_SOC_DPCM_STATE_PREPARE,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_params);
|
||||
|
||||
/*
|
||||
* We can only prepare a BE DAI if any of it's FE are not prepared,
|
||||
* running or paused for the specified stream direction.
|
||||
*/
|
||||
int snd_soc_dpcm_can_be_prepared(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream)
|
||||
{
|
||||
const enum snd_soc_dpcm_state state[] = {
|
||||
SND_SOC_DPCM_STATE_START,
|
||||
SND_SOC_DPCM_STATE_PAUSED,
|
||||
SND_SOC_DPCM_STATE_PREPARE,
|
||||
};
|
||||
|
||||
return snd_soc_dpcm_check_state(fe, be, stream, state, ARRAY_SIZE(state));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_can_be_prepared);
|
||||
|
Loading…
Reference in New Issue
Block a user