Lines Matching +full:rclk +full:-

1 // SPDX-License-Identifier: GPL-2.0
34 struct snow_priv *priv = snd_soc_card_get_drvdata(rtd->card); in snow_card_hw_params()
36 unsigned long int rclk; in snow_card_hw_params() local
37 long int freq = -EINVAL; in snow_card_hw_params()
42 dev_err(rtd->card->dev, "Invalid bit-width: %d\n", bitwidth); in snow_card_hw_params()
47 dev_err(rtd->card->dev, "Unsupported bit-width: %d\n", bitwidth); in snow_card_hw_params()
48 return -EINVAL; in snow_card_hw_params()
73 return -EINVAL; in snow_card_hw_params()
76 rclk = params_rate(params) * rfs; in snow_card_hw_params()
80 if ((pll_rate[i] - rclk * psr) <= 2) { in snow_card_hw_params()
87 dev_err(rtd->card->dev, "Unsupported RCLK rate: %lu\n", rclk); in snow_card_hw_params()
88 return -EINVAL; in snow_card_hw_params()
91 ret = clk_set_rate(priv->clk_i2s_bus, freq); in snow_card_hw_params()
93 dev_err(rtd->card->dev, "I2S bus clock rate set failed\n"); in snow_card_hw_params()
109 rtd = snd_soc_get_pcm_runtime(card, &card->dai_link[0]); in snow_late_probe()
111 /* In the multi-codec case codec_dais 0 is MAX98095 and 1 is HDMI. */ in snow_late_probe()
112 if (rtd->num_codecs > 1) in snow_late_probe()
123 .name = "Snow-I2S",
130 struct device *dev = &pdev->dev; in snow_probe()
139 return -ENOMEM; in snow_probe()
141 link = &priv->dai_link; in snow_probe()
143 link->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | in snow_probe()
146 link->name = "Primary"; in snow_probe()
147 link->stream_name = link->name; in snow_probe()
149 link->cpus = links_cpus; in snow_probe()
150 link->num_cpus = ARRAY_SIZE(links_cpus); in snow_probe()
151 link->codecs = links_codecs; in snow_probe()
152 link->num_codecs = ARRAY_SIZE(links_codecs); in snow_probe()
153 link->platforms = links_platforms; in snow_probe()
154 link->num_platforms = ARRAY_SIZE(links_platforms); in snow_probe()
156 card->dai_link = link; in snow_probe()
157 card->num_links = 1; in snow_probe()
158 card->dev = dev; in snow_probe()
161 cpu = of_get_child_by_name(dev->of_node, "cpu"); in snow_probe()
164 link->ops = &snow_card_ops; in snow_probe()
166 link->cpus->of_node = of_parse_phandle(cpu, "sound-dai", 0); in snow_probe()
169 if (!link->cpus->of_node) { in snow_probe()
170 dev_err(dev, "Failed parsing cpu/sound-dai property\n"); in snow_probe()
171 return -EINVAL; in snow_probe()
174 codec = of_get_child_by_name(dev->of_node, "codec"); in snow_probe()
179 of_node_put(link->cpus->of_node); in snow_probe()
184 priv->clk_i2s_bus = of_clk_get_by_name(link->cpus->of_node, in snow_probe()
186 if (IS_ERR(priv->clk_i2s_bus)) { in snow_probe()
188 of_node_put(link->cpus->of_node); in snow_probe()
189 return PTR_ERR(priv->clk_i2s_bus); in snow_probe()
192 link->codecs->dai_name = "HiFi", in snow_probe()
194 link->cpus->of_node = of_parse_phandle(dev->of_node, in snow_probe()
195 "samsung,i2s-controller", 0); in snow_probe()
196 if (!link->cpus->of_node) { in snow_probe()
197 dev_err(dev, "i2s-controller property parse error\n"); in snow_probe()
198 return -EINVAL; in snow_probe()
201 link->codecs->of_node = of_parse_phandle(dev->of_node, in snow_probe()
202 "samsung,audio-codec", 0); in snow_probe()
203 if (!link->codecs->of_node) { in snow_probe()
204 of_node_put(link->cpus->of_node); in snow_probe()
205 dev_err(dev, "audio-codec property parse error\n"); in snow_probe()
206 return -EINVAL; in snow_probe()
210 link->platforms->of_node = link->cpus->of_node; in snow_probe()
212 /* Update card-name if provided through DT, else use default name */ in snow_probe()
219 return dev_err_probe(&pdev->dev, ret, in snow_probe()
228 struct snd_soc_dai_link *link = &priv->dai_link; in snow_remove()
230 of_node_put(link->cpus->of_node); in snow_remove()
231 of_node_put(link->codecs->of_node); in snow_remove()
234 clk_put(priv->clk_i2s_bus); in snow_remove()
240 { .compatible = "google,snow-audio-max98090", },
241 { .compatible = "google,snow-audio-max98091", },
242 { .compatible = "google,snow-audio-max98095", },
249 .name = "snow-audio",