Lines Matching +full:tegra +full:- +full:audio +full:- +full:trimslice
1 // SPDX-License-Identifier: GPL-2.0-only
3 * trimslice.c - TrimSlice machine ASoC driver
5 * Copyright (C) 2011 - CompuLab, Ltd.
10 * Copyright (C) 2010-2011 - NVIDIA, Inc.
28 #define DRV_NAME "tegra-snd-trimslice"
39 struct snd_soc_card *card = rtd->card; in trimslice_asoc_hw_params()
40 struct tegra_trimslice *trimslice = snd_soc_card_get_drvdata(card); in trimslice_asoc_hw_params() local
47 err = tegra_asoc_utils_set_rate(&trimslice->util_data, srate, mclk); in trimslice_asoc_hw_params()
49 dev_err(card->dev, "Can't configure clocks\n"); in trimslice_asoc_hw_params()
56 dev_err(card->dev, "codec_dai clock not set\n"); in trimslice_asoc_hw_params()
82 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "tlv320aic23-hifi")),
96 .name = "tegra-trimslice",
97 .driver_name = "tegra",
111 struct device_node *np = pdev->dev.of_node; in tegra_snd_trimslice_probe()
113 struct tegra_trimslice *trimslice; in tegra_snd_trimslice_probe() local
116 trimslice = devm_kzalloc(&pdev->dev, sizeof(struct tegra_trimslice), in tegra_snd_trimslice_probe()
118 if (!trimslice) in tegra_snd_trimslice_probe()
119 return -ENOMEM; in tegra_snd_trimslice_probe()
121 card->dev = &pdev->dev; in tegra_snd_trimslice_probe()
122 snd_soc_card_set_drvdata(card, trimslice); in tegra_snd_trimslice_probe()
124 trimslice_tlv320aic23_dai.codecs->of_node = of_parse_phandle(np, in tegra_snd_trimslice_probe()
125 "nvidia,audio-codec", 0); in tegra_snd_trimslice_probe()
126 if (!trimslice_tlv320aic23_dai.codecs->of_node) { in tegra_snd_trimslice_probe()
127 dev_err(&pdev->dev, in tegra_snd_trimslice_probe()
128 "Property 'nvidia,audio-codec' missing or invalid\n"); in tegra_snd_trimslice_probe()
129 return -EINVAL; in tegra_snd_trimslice_probe()
132 trimslice_tlv320aic23_dai.cpus->of_node = of_parse_phandle(np, in tegra_snd_trimslice_probe()
133 "nvidia,i2s-controller", 0); in tegra_snd_trimslice_probe()
134 if (!trimslice_tlv320aic23_dai.cpus->of_node) { in tegra_snd_trimslice_probe()
135 dev_err(&pdev->dev, in tegra_snd_trimslice_probe()
136 "Property 'nvidia,i2s-controller' missing or invalid\n"); in tegra_snd_trimslice_probe()
137 return -EINVAL; in tegra_snd_trimslice_probe()
140 trimslice_tlv320aic23_dai.platforms->of_node = in tegra_snd_trimslice_probe()
141 trimslice_tlv320aic23_dai.cpus->of_node; in tegra_snd_trimslice_probe()
143 ret = tegra_asoc_utils_init(&trimslice->util_data, &pdev->dev); in tegra_snd_trimslice_probe()
147 ret = devm_snd_soc_register_card(&pdev->dev, card); in tegra_snd_trimslice_probe()
149 dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", in tegra_snd_trimslice_probe()
158 { .compatible = "nvidia,tegra-audio-trimslice", },
173 MODULE_DESCRIPTION("Trimslice machine ASoC driver");