mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-07 22:03:14 +00: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) \
|
#define for_each_dpcm_be_rollback(fe, stream, _dpcm) \
|
||||||
list_for_each_entry_continue_reverse(_dpcm, &(fe)->dpcm[stream].be_clients, list_be)
|
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 */
|
/* get the substream for this BE */
|
||||||
struct snd_pcm_substream *
|
struct snd_pcm_substream *
|
||||||
|
@ -49,6 +49,105 @@ static inline int _soc_pcm_ret(struct snd_soc_pcm_runtime *rtd,
|
|||||||
return ret;
|
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
|
#define DPCM_MAX_BE_USERS 8
|
||||||
|
|
||||||
static inline const char *soc_cpu_dai_name(struct snd_soc_pcm_runtime *rtd)
|
static inline const char *soc_cpu_dai_name(struct snd_soc_pcm_runtime *rtd)
|
||||||
@ -2969,27 +3068,6 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
|
|||||||
return ret;
|
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 */
|
/* get the substream for this BE */
|
||||||
struct snd_pcm_substream *
|
struct snd_pcm_substream *
|
||||||
snd_soc_dpcm_get_substream(struct snd_soc_pcm_runtime *be, int stream)
|
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;
|
return be->pcm->streams[stream].substream;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_soc_dpcm_get_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