• Home
  • Raw
  • Download

Lines Matching +full:ac100 +full:- +full:codec

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Tegra machine ASoC driver for boards using a MAX90809 CODEC.
9 * Copyright (C) 2010-2012 - NVIDIA, Inc.
10 * Copyright (C) 2011 The AC100 Kernel Team <ac100@lists.lauchpad.net>
29 #define DRV_NAME "tegra-snd-max98090"
42 struct snd_soc_card *card = rtd->card; in tegra_max98090_asoc_hw_params()
69 err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk); in tegra_max98090_asoc_hw_params()
71 dev_err(card->dev, "Can't configure clocks\n"); in tegra_max98090_asoc_hw_params()
78 dev_err(card->dev, "codec_dai clock not set\n"); in tegra_max98090_asoc_hw_params()
137 struct tegra_max98090 *machine = snd_soc_card_get_drvdata(rtd->card); in tegra_max98090_asoc_init()
139 if (gpio_is_valid(machine->gpio_hp_det)) { in tegra_max98090_asoc_init()
140 snd_soc_card_jack_new(rtd->card, "Headphones", in tegra_max98090_asoc_init()
146 tegra_max98090_hp_jack_gpio.gpio = machine->gpio_hp_det; in tegra_max98090_asoc_init()
152 if (gpio_is_valid(machine->gpio_mic_det)) { in tegra_max98090_asoc_init()
153 snd_soc_card_jack_new(rtd->card, "Mic Jack", in tegra_max98090_asoc_init()
159 tegra_max98090_mic_jack_gpio.gpio = machine->gpio_mic_det; in tegra_max98090_asoc_init()
184 .name = "tegra-max98090",
198 struct device_node *np = pdev->dev.of_node; in tegra_max98090_probe()
203 machine = devm_kzalloc(&pdev->dev, in tegra_max98090_probe()
206 return -ENOMEM; in tegra_max98090_probe()
208 card->dev = &pdev->dev; in tegra_max98090_probe()
211 machine->gpio_hp_det = of_get_named_gpio(np, "nvidia,hp-det-gpios", 0); in tegra_max98090_probe()
212 if (machine->gpio_hp_det == -EPROBE_DEFER) in tegra_max98090_probe()
213 return -EPROBE_DEFER; in tegra_max98090_probe()
215 machine->gpio_mic_det = in tegra_max98090_probe()
216 of_get_named_gpio(np, "nvidia,mic-det-gpios", 0); in tegra_max98090_probe()
217 if (machine->gpio_mic_det == -EPROBE_DEFER) in tegra_max98090_probe()
218 return -EPROBE_DEFER; in tegra_max98090_probe()
224 ret = snd_soc_of_parse_audio_routing(card, "nvidia,audio-routing"); in tegra_max98090_probe()
228 tegra_max98090_dai.codecs->of_node = of_parse_phandle(np, in tegra_max98090_probe()
229 "nvidia,audio-codec", 0); in tegra_max98090_probe()
230 if (!tegra_max98090_dai.codecs->of_node) { in tegra_max98090_probe()
231 dev_err(&pdev->dev, in tegra_max98090_probe()
232 "Property 'nvidia,audio-codec' missing or invalid\n"); in tegra_max98090_probe()
233 return -EINVAL; in tegra_max98090_probe()
236 tegra_max98090_dai.cpus->of_node = of_parse_phandle(np, in tegra_max98090_probe()
237 "nvidia,i2s-controller", 0); in tegra_max98090_probe()
238 if (!tegra_max98090_dai.cpus->of_node) { in tegra_max98090_probe()
239 dev_err(&pdev->dev, in tegra_max98090_probe()
240 "Property 'nvidia,i2s-controller' missing or invalid\n"); in tegra_max98090_probe()
241 return -EINVAL; in tegra_max98090_probe()
244 tegra_max98090_dai.platforms->of_node = tegra_max98090_dai.cpus->of_node; in tegra_max98090_probe()
246 ret = tegra_asoc_utils_init(&machine->util_data, &pdev->dev); in tegra_max98090_probe()
250 ret = devm_snd_soc_register_card(&pdev->dev, card); in tegra_max98090_probe()
252 dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", in tegra_max98090_probe()
261 { .compatible = "nvidia,tegra-audio-max98090", },