ASoC: export DPCM runtime update functions

This makes DPCM runtime update functions available for external
calling. As an example, virtualised ASoC component drivers may need
to call these when managing shared DAPM routes that are used by more
than one driver (i.e. when host driver and guest drivers have a DAPM
path from guest PCM to host DAI where some parts are owned by host
driver and others by guest driver).

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Link: https://lore.kernel.org/r/20200312095214.15126-3-guennadi.liakhovetski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Guennadi Liakhovetski 2020-03-12 10:52:14 +01:00 committed by Mark Brown
parent 8cce6569e4
commit f17a14789e
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0
3 changed files with 10 additions and 7 deletions

View File

@ -132,8 +132,8 @@ int snd_soc_dpcm_be_can_update(struct snd_soc_pcm_runtime *fe,
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);
/* internal use only */ /* update audio routing between PCMs and any DAI links */
int soc_dpcm_runtime_update(struct snd_soc_card *); int snd_soc_dpcm_runtime_update(struct snd_soc_card *card);
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd); void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd);

View File

@ -2291,7 +2291,7 @@ int snd_soc_dapm_mux_update_power(struct snd_soc_dapm_context *dapm,
card->update = NULL; card->update = NULL;
mutex_unlock(&card->dapm_mutex); mutex_unlock(&card->dapm_mutex);
if (ret > 0) if (ret > 0)
soc_dpcm_runtime_update(card); snd_soc_dpcm_runtime_update(card);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_mux_update_power); EXPORT_SYMBOL_GPL(snd_soc_dapm_mux_update_power);
@ -2356,7 +2356,7 @@ int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_context *dapm,
card->update = NULL; card->update = NULL;
mutex_unlock(&card->dapm_mutex); mutex_unlock(&card->dapm_mutex);
if (ret > 0) if (ret > 0)
soc_dpcm_runtime_update(card); snd_soc_dpcm_runtime_update(card);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_mixer_update_power); EXPORT_SYMBOL_GPL(snd_soc_dapm_mixer_update_power);
@ -3396,7 +3396,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
mutex_unlock(&card->dapm_mutex); mutex_unlock(&card->dapm_mutex);
if (ret > 0) if (ret > 0)
soc_dpcm_runtime_update(card); snd_soc_dpcm_runtime_update(card);
return change; return change;
} }
@ -3501,7 +3501,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
mutex_unlock(&card->dapm_mutex); mutex_unlock(&card->dapm_mutex);
if (ret > 0) if (ret > 0)
soc_dpcm_runtime_update(card); snd_soc_dpcm_runtime_update(card);
return change; return change;
} }

View File

@ -295,6 +295,7 @@ void snd_soc_runtime_activate(struct snd_soc_pcm_runtime *rtd, int stream)
{ {
snd_soc_runtime_action(rtd, stream, 1); snd_soc_runtime_action(rtd, stream, 1);
} }
EXPORT_SYMBOL_GPL(snd_soc_runtime_activate);
/** /**
* snd_soc_runtime_deactivate() - Decrement active count for PCM runtime components * snd_soc_runtime_deactivate() - Decrement active count for PCM runtime components
@ -310,6 +311,7 @@ void snd_soc_runtime_deactivate(struct snd_soc_pcm_runtime *rtd, int stream)
{ {
snd_soc_runtime_action(rtd, stream, -1); snd_soc_runtime_action(rtd, stream, -1);
} }
EXPORT_SYMBOL_GPL(snd_soc_runtime_deactivate);
/** /**
* snd_soc_runtime_ignore_pmdown_time() - Check whether to ignore the power down delay * snd_soc_runtime_ignore_pmdown_time() - Check whether to ignore the power down delay
@ -2969,7 +2971,7 @@ static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new)
/* Called by DAPM mixer/mux changes to update audio routing between PCMs and /* Called by DAPM mixer/mux changes to update audio routing between PCMs and
* any DAI links. * any DAI links.
*/ */
int soc_dpcm_runtime_update(struct snd_soc_card *card) int snd_soc_dpcm_runtime_update(struct snd_soc_card *card)
{ {
struct snd_soc_pcm_runtime *fe; struct snd_soc_pcm_runtime *fe;
int ret = 0; int ret = 0;
@ -2993,6 +2995,7 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card)
mutex_unlock(&card->mutex); mutex_unlock(&card->mutex);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dpcm_runtime_update);
static void dpcm_fe_dai_cleanup(struct snd_pcm_substream *fe_substream) static void dpcm_fe_dai_cleanup(struct snd_pcm_substream *fe_substream)
{ {