ASoC: rsnd: enable DVC when capture
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 23 Jun 2014 00:57:04 +0000 (17:57 -0700)
committerSimon Horman <horms@verge.net.au>
Fri, 5 Dec 2014 00:24:34 +0000 (09:24 +0900)
Current DVC can be enabled only when playback,
but, this came from misunderstanding.
It is not correct.

DVC <-> DMA relationship is...

Playback: MEM -> DMAC  -> SRC -> DVC -> DMACp -> SSI
Capture:  SSI -> DMACp -> SRC -> DVC -> DMAC  -> MEM

DVC can be used for both Playback/Capture

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 65f459923b7926f6a7f156970d83360bd80cb169)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
sound/soc/sh/rcar/dvc.c

index ed00070..deef310 100644 (file)
@@ -191,24 +191,20 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod,
                            struct snd_soc_pcm_runtime *rtd)
 {
        struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
-       struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
-       struct device *dev = rsnd_priv_to_dev(priv);
        struct snd_card *card = rtd->card->snd_card;
        struct snd_kcontrol *kctrl;
        static struct snd_kcontrol_new knew = {
                .iface          = SNDRV_CTL_ELEM_IFACE_MIXER,
-               .name           = "Playback Volume",
                .info           = rsnd_dvc_volume_info,
                .get            = rsnd_dvc_volume_get,
                .put            = rsnd_dvc_volume_put,
        };
        int ret;
 
-       if (!rsnd_dai_is_play(rdai, io)) {
-               dev_err(dev, "DVC%d is connected to Capture DAI\n",
-                       rsnd_mod_id(mod));
-               return -EINVAL;
-       }
+       if (rsnd_dai_is_play(rdai, io))
+               knew.name = "Playback Volume";
+       else
+               knew.name = "Capture Volume";
 
        kctrl = snd_ctl_new1(&knew, mod);
        if (!kctrl)