mirror of https://gitee.com/openkylin/linux.git
ASoC: soc-dai.c: add .no_capture_mute support
snd_soc_dai_digital_mute() is internally using both mute_stream() (1) or digital_mute() (2), but the difference between these 2 are only handling "direction". We can merge digital_mute() into mute_stream int snd_soc_dai_digital_mute(xxx, int direction) { ... else if (dai->driver->ops->mute_stream) (1) return dai->driver->ops->mute_stream(xxx, direction); else if (direction == SNDRV_PCM_STREAM_PLAYBACK && dai->driver->ops->digital_mute) (2) return dai->driver->ops->digital_mute(xxx); ... } To prepare merging mute_stream()/digital_mute(), this patch adds .no_capture_mute support to emulate .digital_mute(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87eeplxxj7.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e07e49c0d1
commit
350d993510
|
@ -280,6 +280,9 @@ struct snd_soc_dai_ops {
|
|||
*/
|
||||
snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *,
|
||||
struct snd_soc_dai *);
|
||||
|
||||
/* bit field */
|
||||
unsigned int no_capture_mute:1;
|
||||
};
|
||||
|
||||
struct snd_soc_cdai_ops {
|
||||
|
|
|
@ -298,8 +298,14 @@ int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute,
|
|||
{
|
||||
int ret = -ENOTSUPP;
|
||||
|
||||
/*
|
||||
* ignore if direction was CAPTURE
|
||||
* and it had .no_capture_mute flag
|
||||
*/
|
||||
if (dai->driver->ops &&
|
||||
dai->driver->ops->mute_stream)
|
||||
dai->driver->ops->mute_stream &&
|
||||
(direction == SNDRV_PCM_STREAM_PLAYBACK ||
|
||||
!dai->driver->ops->no_capture_mute))
|
||||
ret = dai->driver->ops->mute_stream(dai, mute, direction);
|
||||
else if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
|
||||
dai->driver->ops &&
|
||||
|
|
Loading…
Reference in New Issue