| From 4af6bb2bc9279f9acb617ae18c3d57d98ec59bc7 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Tue, 28 Mar 2017 02:31:23 +0000 |
| Subject: [PATCH 093/286] ASoC: rcar: remove rsnd_kctrl_remove() |
| |
| 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> |
| (cherry picked from commit e0c4211854bfebd5507761a2bfddaa9e37074230) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| sound/soc/sh/rcar/core.c | 9 --------- |
| sound/soc/sh/rcar/dvc.c | 16 ---------------- |
| sound/soc/sh/rcar/rsnd.h | 3 --- |
| 3 files changed, 28 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c |
| index 672783e18711..35c96e4bbd64 100644 |
| --- a/sound/soc/sh/rcar/core.c |
| +++ b/sound/soc/sh/rcar/core.c |
| @@ -1037,15 +1037,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, |
| diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c |
| index cf8f59cdd8d7..994fdb7d0034 100644 |
| --- a/sound/soc/sh/rcar/dvc.c |
| +++ b/sound/soc/sh/rcar/dvc.c |
| @@ -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, |
| diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h |
| index 7410ec0174db..81ef3f18834a 100644 |
| --- a/sound/soc/sh/rcar/rsnd.h |
| +++ b/sound/soc/sh/rcar/rsnd.h |
| @@ -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, |
| -- |
| 2.13.3 |
| |