Lines Matching +full:mclk +full:- +full:fs

1 // SPDX-License-Identifier: GPL-2.0-only
15 #include <sound/soc-dapm.h>
20 /* sysconf 5041: Audio-Gue-Control */
22 /* sysconf 5042: Audio-DAC-Control */
54 int mclk; member
59 int mclk; member
84 status = regmap_read(drvdata->dac.regmap, reg, &val); in sti_sas_read_reg()
96 return regmap_write(drvdata->dac.regmap, reg, value); in sti_sas_write_reg()
108 /* Initialise bi-phase formatter to disabled */ in sti_sas_init_sas_registers()
113 /* Initialise bi-phase formatter idle value to 0 */ in sti_sas_init_sas_registers()
117 dev_err(component->dev, "Failed to update SPDIF registers\n"); in sti_sas_init_sas_registers()
137 dev_err(component->dev, "Failed to update DAC registers\n"); in sti_sas_init_sas_registers()
151 dev_err(dai->component->dev, in sti_sas_dac_set_fmt()
154 return -EINVAL; in sti_sas_dac_set_fmt()
176 struct snd_soc_component *component = dai->component; in stih407_sas_dac_mute()
196 dev_err(dai->component->dev, in sti_sas_spdif_set_fmt()
199 return -EINVAL; in sti_sas_spdif_set_fmt()
214 struct snd_soc_component *component = dai->component; in sti_sas_spdif_trigger()
230 return -EINVAL; in sti_sas_spdif_trigger()
248 * get MCLK input frequency to check that MCLK-FS ratio is coherent
253 struct snd_soc_component *component = dai->component; in sti_sas_set_sysclk()
254 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_set_sysclk()
260 return -EINVAL; in sti_sas_set_sysclk()
262 switch (dai->id) { in sti_sas_set_sysclk()
264 drvdata->spdif.mclk = freq; in sti_sas_set_sysclk()
268 drvdata->dac.mclk = freq; in sti_sas_set_sysclk()
278 struct snd_soc_component *component = dai->component; in sti_sas_prepare()
279 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_prepare()
280 struct snd_pcm_runtime *runtime = substream->runtime; in sti_sas_prepare()
282 switch (dai->id) { in sti_sas_prepare()
284 if ((drvdata->spdif.mclk / runtime->rate) != 128) { in sti_sas_prepare()
285 dev_err(component->dev, "unexpected mclk-fs ratio\n"); in sti_sas_prepare()
286 return -EINVAL; in sti_sas_prepare()
290 if ((drvdata->dac.mclk / runtime->rate) != 256) { in sti_sas_prepare()
291 dev_err(component->dev, "unexpected mclk-fs ratio\n"); in sti_sas_prepare()
292 return -EINVAL; in sti_sas_prepare()
327 .name = "sas-dai-spdif-out",
350 .name = "sas-dai-dac",
366 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_resume()
376 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_component_probe()
395 .compatible = "st,stih407-sas-codec",
404 struct device_node *pnode = pdev->dev.of_node; in sti_sas_driver_probe()
409 drvdata = devm_kzalloc(&pdev->dev, sizeof(struct sti_sas_data), in sti_sas_driver_probe()
412 return -ENOMEM; in sti_sas_driver_probe()
416 if (!of_id->data) { in sti_sas_driver_probe()
417 dev_err(&pdev->dev, "data associated to device is missing\n"); in sti_sas_driver_probe()
418 return -EINVAL; in sti_sas_driver_probe()
421 drvdata->dev_data = (struct sti_sas_dev_data *)of_id->data; in sti_sas_driver_probe()
424 drvdata->dev = &pdev->dev; in sti_sas_driver_probe()
427 drvdata->dac.virt_regmap = devm_regmap_init(&pdev->dev, NULL, drvdata, in sti_sas_driver_probe()
428 drvdata->dev_data->regmap); in sti_sas_driver_probe()
429 if (IS_ERR(drvdata->dac.virt_regmap)) { in sti_sas_driver_probe()
430 dev_err(&pdev->dev, "audio registers not enabled\n"); in sti_sas_driver_probe()
431 return PTR_ERR(drvdata->dac.virt_regmap); in sti_sas_driver_probe()
435 drvdata->dac.regmap = in sti_sas_driver_probe()
437 if (IS_ERR(drvdata->dac.regmap)) { in sti_sas_driver_probe()
438 dev_err(&pdev->dev, "syscon registers not available\n"); in sti_sas_driver_probe()
439 return PTR_ERR(drvdata->dac.regmap); in sti_sas_driver_probe()
441 drvdata->spdif.regmap = drvdata->dac.regmap; in sti_sas_driver_probe()
443 sti_sas_dai[STI_SAS_DAI_ANALOG_OUT].ops = drvdata->dev_data->dac_ops; in sti_sas_driver_probe()
446 dev_set_drvdata(&pdev->dev, drvdata); in sti_sas_driver_probe()
448 return devm_snd_soc_register_component(&pdev->dev, &sti_sas_driver, in sti_sas_driver_probe()
455 .name = "sti-sas-codec",