Commit 9b44bacd authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown

ASoC: poodle: Automatically disconnect non-connected pins

The Zaurus SL-5600 seems to have a microphone input. Otherwise all DAPM
input and output pins of the wm8731 are either used in the card's DAPM
routing table or are marked as not connected.

So add the microphone to the DAPM tables and set the fully_routed flag of
the card instead of manually marking the unused inputs and outputs as not
connected. This makes the code a bit shorter and cleaner.
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6b9aa50c
...@@ -192,6 +192,7 @@ static int poodle_amp_event(struct snd_soc_dapm_widget *w, ...@@ -192,6 +192,7 @@ static int poodle_amp_event(struct snd_soc_dapm_widget *w,
static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = { static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_HP("Headphone Jack", NULL),
SND_SOC_DAPM_SPK("Ext Spk", poodle_amp_event), SND_SOC_DAPM_SPK("Ext Spk", poodle_amp_event),
SND_SOC_DAPM_MIC("Microphone", NULL),
}; };
/* Corgi machine connections to the codec pins */ /* Corgi machine connections to the codec pins */
...@@ -204,6 +205,8 @@ static const struct snd_soc_dapm_route poodle_audio_map[] = { ...@@ -204,6 +205,8 @@ static const struct snd_soc_dapm_route poodle_audio_map[] = {
/* speaker connected to LOUT, ROUT */ /* speaker connected to LOUT, ROUT */
{"Ext Spk", NULL, "ROUT"}, {"Ext Spk", NULL, "ROUT"},
{"Ext Spk", NULL, "LOUT"}, {"Ext Spk", NULL, "LOUT"},
{"MICIN", NULL, "Microphone"},
}; };
static const char *jack_function[] = {"Off", "Headphone"}; static const char *jack_function[] = {"Off", "Headphone"};
...@@ -220,20 +223,6 @@ static const struct snd_kcontrol_new wm8731_poodle_controls[] = { ...@@ -220,20 +223,6 @@ static const struct snd_kcontrol_new wm8731_poodle_controls[] = {
poodle_set_spk), poodle_set_spk),
}; };
/*
* Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
*/
static int poodle_wm8731_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
snd_soc_dapm_nc_pin(dapm, "LLINEIN");
snd_soc_dapm_nc_pin(dapm, "RLINEIN");
return 0;
}
/* poodle digital audio interface glue - connects codec <--> CPU */ /* poodle digital audio interface glue - connects codec <--> CPU */
static struct snd_soc_dai_link poodle_dai = { static struct snd_soc_dai_link poodle_dai = {
.name = "WM8731", .name = "WM8731",
...@@ -242,7 +231,6 @@ static struct snd_soc_dai_link poodle_dai = { ...@@ -242,7 +231,6 @@ static struct snd_soc_dai_link poodle_dai = {
.codec_dai_name = "wm8731-hifi", .codec_dai_name = "wm8731-hifi",
.platform_name = "pxa-pcm-audio", .platform_name = "pxa-pcm-audio",
.codec_name = "wm8731.0-001b", .codec_name = "wm8731.0-001b",
.init = poodle_wm8731_init,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAIFMT_CBS_CFS,
.ops = &poodle_ops, .ops = &poodle_ops,
...@@ -261,6 +249,7 @@ static struct snd_soc_card poodle = { ...@@ -261,6 +249,7 @@ static struct snd_soc_card poodle = {
.num_dapm_widgets = ARRAY_SIZE(wm8731_dapm_widgets), .num_dapm_widgets = ARRAY_SIZE(wm8731_dapm_widgets),
.dapm_routes = poodle_audio_map, .dapm_routes = poodle_audio_map,
.num_dapm_routes = ARRAY_SIZE(poodle_audio_map), .num_dapm_routes = ARRAY_SIZE(poodle_audio_map),
.fully_routed = true,
}; };
static int poodle_probe(struct platform_device *pdev) static int poodle_probe(struct platform_device *pdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment