aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8993.c
diff options
context:
space:
mode:
authorLiam Girdwood <lrg@slimlogic.co.uk>2010-11-05 09:53:46 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-06 11:28:29 -0400
commitce6120cca2589ede530200c7cfe11ac9f144333c (patch)
tree6ea7c26ce64dd4753e7cf9a3b048e74614b169dc /sound/soc/codecs/wm8993.c
parent22e2fda5660cdf62513acabdb5c82a5af415f838 (diff)
ASoC: Decouple DAPM from CODECs
Decoupling Dynamic Audio Power Management (DAPM) from codec devices is required when developing ASoC further. Such as for other ASoC components to have DAPM widgets or when extending DAPM to handle cross-device paths. This patch decouples DAPM related variables from struct snd_soc_codec and moves them to new struct snd_soc_dapm_context that is used to encapsulate DAPM context of a device. ASoC core and API of DAPM functions are modified to use DAPM context instead of codec. This patch does not change current functionality and a large part of changes come because of structure and internal API changes. Core implementation is from Liam Girdwood <lrg@slimlogic.co.uk> with some minor core changes, codecs and machine driver conversions from Jarkko Nikula <jhnikula@gmail.com>. Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Manuel Lauss <manuel.lauss@googlemail.com> Cc: Mike Frysinger <vapier.adi@gmail.com> Cc: Cliff Cai <cliff.cai@analog.com> Cc: Kevin Hilman <khilman@deeprootsystems.com> Cc: Ryan Mallon <ryan@bluewatersys.com> Cc: Timur Tabi <timur@freescale.com> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Lars-Peter Clausen <lars@metafoo.de> Cc: Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org> Cc: Wan ZongShun <mcuos.com@gmail.com> Cc: Eric Miao <eric.y.miao@gmail.com> Cc: Jassi Brar <jassi.brar@samsung.com> Cc: Daniel Gloeckner <dg@emlix.com> Cc: Kuninori Morimoto <morimoto.kuninori@renesas.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm8993.c')
-rw-r--r--sound/soc/codecs/wm8993.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index 67fe5ccc608..bcc54be572c 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -970,7 +970,7 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec,
970 break; 970 break;
971 971
972 case SND_SOC_BIAS_STANDBY: 972 case SND_SOC_BIAS_STANDBY:
973 if (codec->bias_level == SND_SOC_BIAS_OFF) { 973 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
974 ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies), 974 ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies),
975 wm8993->supplies); 975 wm8993->supplies);
976 if (ret != 0) 976 if (ret != 0)
@@ -1045,7 +1045,7 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec,
1045 break; 1045 break;
1046 } 1046 }
1047 1047
1048 codec->bias_level = level; 1048 codec->dapm.bias_level = level;
1049 1049
1050 return 0; 1050 return 0;
1051} 1051}
@@ -1424,6 +1424,7 @@ static struct snd_soc_dai_driver wm8993_dai = {
1424static int wm8993_probe(struct snd_soc_codec *codec) 1424static int wm8993_probe(struct snd_soc_codec *codec)
1425{ 1425{
1426 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); 1426 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
1427 struct snd_soc_dapm_context *dapm = &codec->dapm;
1427 int ret, i, val; 1428 int ret, i, val;
1428 1429
1429 wm8993->hubs_data.hp_startup_mode = 1; 1430 wm8993->hubs_data.hp_startup_mode = 1;
@@ -1505,11 +1506,11 @@ static int wm8993_probe(struct snd_soc_codec *codec)
1505 ARRAY_SIZE(wm8993_eq_controls)); 1506 ARRAY_SIZE(wm8993_eq_controls));
1506 } 1507 }
1507 1508
1508 snd_soc_dapm_new_controls(codec, wm8993_dapm_widgets, 1509 snd_soc_dapm_new_controls(dapm, wm8993_dapm_widgets,
1509 ARRAY_SIZE(wm8993_dapm_widgets)); 1510 ARRAY_SIZE(wm8993_dapm_widgets));
1510 wm_hubs_add_analogue_controls(codec); 1511 wm_hubs_add_analogue_controls(codec);
1511 1512
1512 snd_soc_dapm_add_routes(codec, routes, ARRAY_SIZE(routes)); 1513 snd_soc_dapm_add_routes(dapm, routes, ARRAY_SIZE(routes));
1513 wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, 1514 wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff,
1514 wm8993->pdata.lineout2_diff); 1515 wm8993->pdata.lineout2_diff);
1515 1516