mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
ASoC: soc-pcm: makes snd_soc_dpcm_can_be_xxx() local
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: No driver is calling snd_soc_dpcm_can_be_xxx() functions. We don't need to have EXPORT_SYMBOL_GPL() for them. This patch-set makes it static function.
This commit is contained in:
commit
a1a94016db
@ -113,24 +113,6 @@ struct snd_soc_dpcm_runtime {
|
||||
#define for_each_dpcm_be_rollback(fe, stream, _dpcm) \
|
||||
list_for_each_entry_continue_reverse(_dpcm, &(fe)->dpcm[stream].be_clients, list_be)
|
||||
|
||||
/* can this BE stop and free */
|
||||
int snd_soc_dpcm_can_be_free_stop(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream);
|
||||
|
||||
/* can this BE perform a hw_params() */
|
||||
int snd_soc_dpcm_can_be_params(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream);
|
||||
|
||||
/* can this BE perform prepare */
|
||||
int snd_soc_dpcm_can_be_prepared(struct snd_soc_pcm_runtime *fe,
|
||||
struct snd_soc_pcm_runtime *be, int stream);
|
||||
|
||||
/* is the current PCM operation for this FE ? */
|
||||
int snd_soc_dpcm_fe_can_update(struct snd_soc_pcm_runtime *fe, int stream);
|
||||
|
||||
/* 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);
|
||||
|
||||
/* get the substream for this BE */
|
||||
struct snd_pcm_substream *
|
||||
|
@ -49,6 +49,105 @@ static inline int _soc_pcm_ret(struct snd_soc_pcm_runtime *rtd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* is the current PCM operation for this FE ? */
|
||||
#if 0
|
||||
static 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;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* is the current PCM operation for this BE ? */
|
||||
static 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;
|
||||
}
|
||||
|
||||
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.
|
||||
*/
|
||||
static 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));
|
||||
}
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
static 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));
|
||||
}
|
||||
|
||||
/*
|
||||
* We can only prepare a BE DAI if any of it's FE are not prepared,
|
||||
* running or paused for the specified stream direction.
|
||||
*/
|
||||
static 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));
|
||||
}
|
||||
|
||||
#define DPCM_MAX_BE_USERS 8
|
||||
|
||||
static inline const char *soc_cpu_dai_name(struct snd_soc_pcm_runtime *rtd)
|
||||
@ -2969,27 +3068,6 @@ out:
|
||||
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 +3075,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