aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2014-03-12 10:27:35 -0400
committerMark Brown <broonie@linaro.org>2014-03-13 15:11:19 -0400
commitd343a660d3c94423759382869b7f90c8657ebbf1 (patch)
tree204dedfa0fa2cb5511b21b1b3e1f35bb82f8e7ce
parent64ebdec36a2a70dc9805c7172b50c43d868dedb6 (diff)
ASoC: davinci-evm: Register machine level DAPM elements with the card
Machine level DAPM widgets and routes should be registered in the card's DAPM context, rather than in the CODEC's context. While we are at it also drop the snd_soc_dapm_enable_pin() calls, since pins are enabled by default and also turn the snd_soc_dapm_disable_pin() calls into snd_soc_dapm_nc_pin() calls for unconnected pins. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--sound/soc/davinci/davinci-evm.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 621e9a997d4c..cab98a580053 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -123,35 +123,29 @@ static const struct snd_soc_dapm_route audio_map[] = {
123/* Logic for a aic3x as connected on a davinci-evm */ 123/* Logic for a aic3x as connected on a davinci-evm */
124static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd) 124static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd)
125{ 125{
126 struct snd_soc_card *card = rtd->card;
126 struct snd_soc_codec *codec = rtd->codec; 127 struct snd_soc_codec *codec = rtd->codec;
127 struct snd_soc_dapm_context *dapm = &codec->dapm;
128 struct device_node *np = codec->card->dev->of_node; 128 struct device_node *np = codec->card->dev->of_node;
129 int ret; 129 int ret;
130 130
131 /* Add davinci-evm specific widgets */ 131 /* Add davinci-evm specific widgets */
132 snd_soc_dapm_new_controls(dapm, aic3x_dapm_widgets, 132 snd_soc_dapm_new_controls(&card->dapm, aic3x_dapm_widgets,
133 ARRAY_SIZE(aic3x_dapm_widgets)); 133 ARRAY_SIZE(aic3x_dapm_widgets));
134 134
135 if (np) { 135 if (np) {
136 ret = snd_soc_of_parse_audio_routing(codec->card, 136 ret = snd_soc_of_parse_audio_routing(card, "ti,audio-routing");
137 "ti,audio-routing");
138 if (ret) 137 if (ret)
139 return ret; 138 return ret;
140 } else { 139 } else {
141 /* Set up davinci-evm specific audio path audio_map */ 140 /* Set up davinci-evm specific audio path audio_map */
142 snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map)); 141 snd_soc_dapm_add_routes(&card->dapm, audio_map,
142 ARRAY_SIZE(audio_map));
143 } 143 }
144 144
145 /* not connected */ 145 /* not connected */
146 snd_soc_dapm_disable_pin(dapm, "MONO_LOUT"); 146 snd_soc_dapm_nc_pin(&codec->dapm, "MONO_LOUT");
147 snd_soc_dapm_disable_pin(dapm, "HPLCOM"); 147 snd_soc_dapm_nc_pin(&codec->dapm, "HPLCOM");
148 snd_soc_dapm_disable_pin(dapm, "HPRCOM"); 148 snd_soc_dapm_nc_pin(&codec->dapm, "HPRCOM");
149
150 /* always connected */
151 snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
152 snd_soc_dapm_enable_pin(dapm, "Line Out");
153 snd_soc_dapm_enable_pin(dapm, "Mic Jack");
154 snd_soc_dapm_enable_pin(dapm, "Line In");
155 149
156 return 0; 150 return 0;
157} 151}