Lines Matching +full:mclk +full:- +full:fs
1 // SPDX-License-Identifier: GPL-2.0-or-later
13 #include <sound/soc-dapm.h>
16 #include "mxs-saif.h"
25 u32 mclk;
28 /* sgtl5000 does not support 512*rate when in 96000 fs */
31 mclk = 256 * rate;
34 mclk = 512 * rate;
38 /* Set SGTL5000's SYSCLK (provided by SAIF MCLK) */
39 ret = snd_soc_dai_set_sysclk(codec_dai, SGTL5000_SYSCLK, mclk, 0);
41 dev_err(codec_dai->dev, "Failed to set sysclk to %u.%03uMHz\n",
42 mclk / 1000000, mclk / 1000 % 1000);
46 /* The SAIF MCLK should be the same as SGTL5000_SYSCLK */
47 ret = snd_soc_dai_set_sysclk(cpu_dai, MXS_SAIF_MCLK, mclk, 0);
49 dev_err(cpu_dai->dev, "Failed to set sysclk to %u.%03uMHz\n",
50 mclk / 1000000, mclk / 1000 % 1000);
112 struct device_node *np = pdev->dev.of_node;
115 saif_np[0] = of_parse_phandle(np, "saif-controllers", 0);
116 saif_np[1] = of_parse_phandle(np, "saif-controllers", 1);
117 codec_np = of_parse_phandle(np, "audio-codec", 0);
119 dev_err(&pdev->dev, "phandle missing or invalid\n");
123 return -EINVAL;
127 mxs_sgtl5000_dai[i].codecs->name = NULL;
128 mxs_sgtl5000_dai[i].codecs->of_node = codec_np;
129 mxs_sgtl5000_dai[i].cpus->dai_name = NULL;
130 mxs_sgtl5000_dai[i].cpus->of_node = saif_np[i];
131 mxs_sgtl5000_dai[i].platforms->name = NULL;
132 mxs_sgtl5000_dai[i].platforms->of_node = saif_np[i];
141 * The Sgtl5000 sysclk is derived from saif0 mclk and it's range
146 dev_err(&pdev->dev, "failed to get mclk\n");
150 card->dev = &pdev->dev;
152 if (of_property_present(np, "audio-routing")) {
153 card->dapm_widgets = mxs_sgtl5000_dapm_widgets;
154 card->num_dapm_widgets = ARRAY_SIZE(mxs_sgtl5000_dapm_widgets);
156 ret = snd_soc_of_parse_audio_routing(card, "audio-routing");
158 dev_err(&pdev->dev, "failed to parse audio-routing (%d)\n",
164 ret = devm_snd_soc_register_card(&pdev->dev, card);
166 return dev_err_probe(&pdev->dev, ret, "snd_soc_register_card failed\n");
177 { .compatible = "fsl,mxs-audio-sgtl5000", },
184 .name = "mxs-sgtl5000",
196 MODULE_ALIAS("platform:mxs-sgtl5000");