aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/tegra
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-05-22 18:09:51 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-06-03 08:06:37 -0400
commitaef9a37c01a63a132d43d65d231dfe515d0f918a (patch)
treec82075f9ea80e8e44bf9b850ecceb39fd1ef61b9 /sound/soc/tegra
parente44fbbd45896e684d44391aaf881dd3e36bd1a16 (diff)
ASoC: tegra+alc5632: move all GPIO setup into probe
Now that deferred probe exists, we can parse device tree and request GPIOs from probe(), rather than deferring this to the DAI link's init(). Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/tegra')
-rw-r--r--sound/soc/tegra/tegra_alc5632.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sound/soc/tegra/tegra_alc5632.c b/sound/soc/tegra/tegra_alc5632.c
index 32de7006daf0..facf6f00c6b0 100644
--- a/sound/soc/tegra/tegra_alc5632.c
+++ b/sound/soc/tegra/tegra_alc5632.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * tegra_alc5632.c -- Toshiba AC100(PAZ00) machine ASoC driver 2* tegra_alc5632.c -- Toshiba AC100(PAZ00) machine ASoC driver
3 * 3 *
4 * Copyright (C) 2011 The AC100 Kernel Team <ac100@lists.lauchpad.net> 4 * Copyright (C) 2011 The AC100 Kernel Team <ac100@lists.lauchpad.net>
5 * Copyright (C) 2012 - NVIDIA, Inc. 5 * Copyright (C) 2012 - NVIDIA, Inc.
@@ -110,7 +110,6 @@ static int tegra_alc5632_asoc_init(struct snd_soc_pcm_runtime *rtd)
110{ 110{
111 struct snd_soc_codec *codec = rtd->codec; 111 struct snd_soc_codec *codec = rtd->codec;
112 struct snd_soc_dapm_context *dapm = &codec->dapm; 112 struct snd_soc_dapm_context *dapm = &codec->dapm;
113 struct device_node *np = codec->card->dev->of_node;
114 struct tegra_alc5632 *machine = snd_soc_card_get_drvdata(codec->card); 113 struct tegra_alc5632 *machine = snd_soc_card_get_drvdata(codec->card);
115 114
116 snd_soc_jack_new(codec, "Headset Jack", SND_JACK_HEADSET, 115 snd_soc_jack_new(codec, "Headset Jack", SND_JACK_HEADSET,
@@ -119,8 +118,6 @@ static int tegra_alc5632_asoc_init(struct snd_soc_pcm_runtime *rtd)
119 ARRAY_SIZE(tegra_alc5632_hs_jack_pins), 118 ARRAY_SIZE(tegra_alc5632_hs_jack_pins),
120 tegra_alc5632_hs_jack_pins); 119 tegra_alc5632_hs_jack_pins);
121 120
122 machine->gpio_hp_det = of_get_named_gpio(np, "nvidia,hp-det-gpios", 0);
123
124 if (gpio_is_valid(machine->gpio_hp_det)) { 121 if (gpio_is_valid(machine->gpio_hp_det)) {
125 tegra_alc5632_hp_jack_gpio.gpio = machine->gpio_hp_det; 122 tegra_alc5632_hp_jack_gpio.gpio = machine->gpio_hp_det;
126 snd_soc_jack_add_gpios(&tegra_alc5632_hs_jack, 123 snd_soc_jack_add_gpios(&tegra_alc5632_hs_jack,
@@ -159,6 +156,7 @@ static struct snd_soc_card snd_soc_tegra_alc5632 = {
159 156
160static __devinit int tegra_alc5632_probe(struct platform_device *pdev) 157static __devinit int tegra_alc5632_probe(struct platform_device *pdev)
161{ 158{
159 struct device_node *np = pdev->dev.of_node;
162 struct snd_soc_card *card = &snd_soc_tegra_alc5632; 160 struct snd_soc_card *card = &snd_soc_tegra_alc5632;
163 struct tegra_alc5632 *alc5632; 161 struct tegra_alc5632 *alc5632;
164 int ret; 162 int ret;
@@ -181,6 +179,10 @@ static __devinit int tegra_alc5632_probe(struct platform_device *pdev)
181 goto err; 179 goto err;
182 } 180 }
183 181
182 alc5632->gpio_hp_det = of_get_named_gpio(np, "nvidia,hp-det-gpios", 0);
183 if (alc5632->gpio_hp_det == -ENODEV)
184 return -EPROBE_DEFER;
185
184 ret = snd_soc_of_parse_card_name(card, "nvidia,model"); 186 ret = snd_soc_of_parse_card_name(card, "nvidia,model");
185 if (ret) 187 if (ret)
186 goto err; 188 goto err;