Lines Matching +full:audio +full:- +full:graph

1 // SPDX-License-Identifier: GPL-2.0-only
3 // tegra_audio_graph_card.c - Audio Graph based Tegra Machine Driver
5 // Copyright (c) 2020-2021 NVIDIA CORPORATION. All rights reserved.
41 /* Tegra audio chip data */
52 struct asoc_simple_priv *simple = snd_soc_card_get_drvdata(rtd->card); in tegra_audio_graph_update_pll()
54 struct device *dev = rtd->card->dev; in tegra_audio_graph_update_pll()
66 plla_out0_rate = data->plla_out0_rates[x11_RATE]; in tegra_audio_graph_update_pll()
67 plla_rate = data->plla_rates[x11_RATE]; in tegra_audio_graph_update_pll()
75 plla_out0_rate = data->plla_out0_rates[x8_RATE]; in tegra_audio_graph_update_pll()
76 plla_rate = data->plla_rates[x8_RATE]; in tegra_audio_graph_update_pll()
79 dev_err(rtd->card->dev, "Unsupported sample rate %u\n", in tegra_audio_graph_update_pll()
81 return -EINVAL; in tegra_audio_graph_update_pll()
89 * |--> PLLA_OUT0 in tegra_audio_graph_update_pll()
91 * |---> I2S modules in tegra_audio_graph_update_pll()
93 * |---> DMIC modules in tegra_audio_graph_update_pll()
95 * |---> DSPK modules in tegra_audio_graph_update_pll()
100 * clock rates and glitchy audio. The maximum divider is 128 in tegra_audio_graph_update_pll()
111 dev_dbg(rtd->card->dev, in tegra_audio_graph_update_pll()
116 err = clk_set_rate(priv->clk_plla, plla_rate); in tegra_audio_graph_update_pll()
118 dev_err(rtd->card->dev, in tegra_audio_graph_update_pll()
125 err = clk_set_rate(priv->clk_plla_out0, plla_out0_rate); in tegra_audio_graph_update_pll()
127 dev_err(rtd->card->dev, in tegra_audio_graph_update_pll()
155 if (cpu_dai->driver->ops && rtd->dai_link->no_pcm) { in tegra_audio_graph_hw_params()
175 priv->clk_plla = devm_clk_get(card->dev, "pll_a"); in tegra_audio_graph_card_probe()
176 if (IS_ERR(priv->clk_plla)) { in tegra_audio_graph_card_probe()
177 dev_err(card->dev, "Can't retrieve clk pll_a\n"); in tegra_audio_graph_card_probe()
178 return PTR_ERR(priv->clk_plla); in tegra_audio_graph_card_probe()
181 priv->clk_plla_out0 = devm_clk_get(card->dev, "plla_out0"); in tegra_audio_graph_card_probe()
182 if (IS_ERR(priv->clk_plla_out0)) { in tegra_audio_graph_card_probe()
183 dev_err(card->dev, "Can't retrieve clk plla_out0\n"); in tegra_audio_graph_card_probe()
184 return PTR_ERR(priv->clk_plla_out0); in tegra_audio_graph_card_probe()
193 struct device *dev = &pdev->dev; in tegra_audio_graph_probe()
198 return -ENOMEM; in tegra_audio_graph_probe()
200 card = simple_priv_to_card(&priv->simple); in tegra_audio_graph_probe()
201 card->driver_name = "tegra-ape"; in tegra_audio_graph_probe()
203 card->probe = tegra_audio_graph_card_probe; in tegra_audio_graph_probe()
206 card->component_chaining = 1; in tegra_audio_graph_probe()
207 priv->simple.ops = &tegra_audio_graph_ops; in tegra_audio_graph_probe()
208 priv->simple.force_dpcm = 1; in tegra_audio_graph_probe()
210 return audio_graph_parse_of(&priv->simple, dev); in tegra_audio_graph_probe()
232 { .compatible = "nvidia,tegra210-audio-graph-card",
234 { .compatible = "nvidia,tegra186-audio-graph-card",
242 .name = "tegra-audio-graph-card",
252 MODULE_DESCRIPTION("ASoC Tegra Audio Graph Sound Card");