ASoC: rcar: remove rsnd_kctrl_remove()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 28 Mar 2017 02:31:23 +0000 (02:31 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 29 Mar 2017 11:01:10 +0000 (12:01 +0100)
Current rcar driver is trying to remove kctrl when remove time.
But, 1) rcar driver can't/shouldn't remove before removing sound
card driver, 2) sound card driver will call snd_ctl_dev_free()
and removes all kctrls by snd_ctl_remove().
Thus, rsnd_kctrl_remove() is not necessary. Current implementation
will get Oops when removing rcar driver after sound card.
This patch fix this issue.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/dvc.c
sound/soc/sh/rcar/rsnd.h

index 3e852e00b27788c0954a574300cbbf5409f27fca..134fe2ea4d9e16c5070d9b8013150f519dd30cdf 100644 (file)
@@ -1039,15 +1039,6 @@ static int __rsnd_kctrl_new(struct rsnd_mod *mod,
        return 0;
 }
 
-void _rsnd_kctrl_remove(struct rsnd_kctrl_cfg *cfg)
-{
-       if (cfg->card && cfg->kctrl)
-               snd_ctl_remove(cfg->card, cfg->kctrl);
-
-       cfg->card = NULL;
-       cfg->kctrl = NULL;
-}
-
 int rsnd_kctrl_new_m(struct rsnd_mod *mod,
                     struct rsnd_dai_stream *io,
                     struct snd_soc_pcm_runtime *rtd,
index cf8f59cdd8d7fc47ec1ad5d40519cd26bbc1e9bc..994fdb7d003424485c0dcdb715a5cb61ee235b82 100644 (file)
@@ -218,21 +218,6 @@ static int rsnd_dvc_probe_(struct rsnd_mod *mod,
        return rsnd_cmd_attach(io, rsnd_mod_id(mod));
 }
 
-static int rsnd_dvc_remove_(struct rsnd_mod *mod,
-                           struct rsnd_dai_stream *io,
-                           struct rsnd_priv *priv)
-{
-       struct rsnd_dvc *dvc = rsnd_mod_to_dvc(mod);
-
-       rsnd_kctrl_remove(dvc->volume);
-       rsnd_kctrl_remove(dvc->mute);
-       rsnd_kctrl_remove(dvc->ren);
-       rsnd_kctrl_remove(dvc->rup);
-       rsnd_kctrl_remove(dvc->rdown);
-
-       return 0;
-}
-
 static int rsnd_dvc_init(struct rsnd_mod *mod,
                         struct rsnd_dai_stream *io,
                         struct rsnd_priv *priv)
@@ -332,7 +317,6 @@ static struct rsnd_mod_ops rsnd_dvc_ops = {
        .name           = DVC_NAME,
        .dma_req        = rsnd_dvc_dma_req,
        .probe          = rsnd_dvc_probe_,
-       .remove         = rsnd_dvc_remove_,
        .init           = rsnd_dvc_init,
        .quit           = rsnd_dvc_quit,
        .pcm_new        = rsnd_dvc_pcm_new,
index 7410ec0174db7db8c172c60c62f20f91c247df8d..81ef3f18834a00f2a9ea6214e522d81c56e1c4ad 100644 (file)
@@ -611,9 +611,6 @@ struct rsnd_kctrl_cfg_s {
        u32 val;
 };
 
-void _rsnd_kctrl_remove(struct rsnd_kctrl_cfg *cfg);
-#define rsnd_kctrl_remove(_cfg)        _rsnd_kctrl_remove(&((_cfg).cfg))
-
 int rsnd_kctrl_new_m(struct rsnd_mod *mod,
                     struct rsnd_dai_stream *io,
                     struct snd_soc_pcm_runtime *rtd,