• Home
  • Raw
  • Download

Lines Matching +full:spdif +full:- +full:mclk

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 */
34 /* SPDIF definitions */
56 int mclk; member
62 int mclk; member
80 struct sti_spdif_audio spdif; member
91 status = regmap_read(drvdata->dac.regmap, reg, &val); in sti_sas_read_reg()
104 status = regmap_write(drvdata->dac.regmap, reg, value); in sti_sas_write_reg()
114 * DAC and SPDIF are activated by default in sti_sas_init_sas_registers()
118 /* Initialise bi-phase formatter to disabled */ in sti_sas_init_sas_registers()
123 /* Initialise bi-phase formatter idle value to 0 */ in sti_sas_init_sas_registers()
127 dev_err(component->dev, "Failed to update SPDIF registers\n"); in sti_sas_init_sas_registers()
147 dev_err(component->dev, "Failed to update DAC registers\n"); in sti_sas_init_sas_registers()
161 dev_err(dai->component->dev, in sti_sas_dac_set_fmt()
164 return -EINVAL; in sti_sas_dac_set_fmt()
186 struct snd_soc_component *component = dai->component; in stih407_sas_dac_mute()
200 * SPDIF
206 dev_err(dai->component->dev, in sti_sas_spdif_set_fmt()
209 return -EINVAL; in sti_sas_spdif_set_fmt()
224 struct snd_soc_component *component = dai->component; in sti_sas_spdif_trigger()
240 return -EINVAL; in sti_sas_spdif_trigger()
258 * get MCLK input frequency to check that MCLK-FS ratio is coherent
263 struct snd_soc_component *component = dai->component; in sti_sas_set_sysclk()
264 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_set_sysclk()
270 return -EINVAL; in sti_sas_set_sysclk()
272 switch (dai->id) { in sti_sas_set_sysclk()
274 drvdata->spdif.mclk = freq; in sti_sas_set_sysclk()
278 drvdata->dac.mclk = freq; in sti_sas_set_sysclk()
288 struct snd_soc_component *component = dai->component; in sti_sas_prepare()
289 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_prepare()
290 struct snd_pcm_runtime *runtime = substream->runtime; in sti_sas_prepare()
292 switch (dai->id) { in sti_sas_prepare()
294 if ((drvdata->spdif.mclk / runtime->rate) != 128) { in sti_sas_prepare()
295 dev_err(component->dev, "unexpected mclk-fs ratio\n"); in sti_sas_prepare()
296 return -EINVAL; in sti_sas_prepare()
300 if ((drvdata->dac.mclk / runtime->rate) != 256) { in sti_sas_prepare()
301 dev_err(component->dev, "unexpected mclk-fs ratio\n"); in sti_sas_prepare()
302 return -EINVAL; in sti_sas_prepare()
341 .name = "sas-dai-spdif-out",
364 .name = "sas-dai-dac",
380 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_resume()
390 struct sti_sas_data *drvdata = dev_get_drvdata(component->dev); in sti_sas_component_probe()
409 .compatible = "st,stih407-sas-codec",
418 struct device_node *pnode = pdev->dev.of_node; in sti_sas_driver_probe()
423 drvdata = devm_kzalloc(&pdev->dev, sizeof(struct sti_sas_data), in sti_sas_driver_probe()
426 return -ENOMEM; in sti_sas_driver_probe()
430 if (!of_id->data) { in sti_sas_driver_probe()
431 dev_err(&pdev->dev, "data associated to device is missing\n"); in sti_sas_driver_probe()
432 return -EINVAL; in sti_sas_driver_probe()
435 drvdata->dev_data = (struct sti_sas_dev_data *)of_id->data; in sti_sas_driver_probe()
438 drvdata->dev = &pdev->dev; in sti_sas_driver_probe()
440 /* Request the DAC & SPDIF registers memory region */ in sti_sas_driver_probe()
441 drvdata->dac.virt_regmap = devm_regmap_init(&pdev->dev, NULL, drvdata, in sti_sas_driver_probe()
442 drvdata->dev_data->regmap); in sti_sas_driver_probe()
443 if (IS_ERR(drvdata->dac.virt_regmap)) { in sti_sas_driver_probe()
444 dev_err(&pdev->dev, "audio registers not enabled\n"); in sti_sas_driver_probe()
445 return PTR_ERR(drvdata->dac.virt_regmap); in sti_sas_driver_probe()
449 drvdata->dac.regmap = in sti_sas_driver_probe()
451 if (IS_ERR(drvdata->dac.regmap)) { in sti_sas_driver_probe()
452 dev_err(&pdev->dev, "syscon registers not available\n"); in sti_sas_driver_probe()
453 return PTR_ERR(drvdata->dac.regmap); in sti_sas_driver_probe()
455 drvdata->spdif.regmap = drvdata->dac.regmap; in sti_sas_driver_probe()
457 sti_sas_dai[STI_SAS_DAI_ANALOG_OUT].ops = drvdata->dev_data->dac_ops; in sti_sas_driver_probe()
460 sti_sas_driver.dapm_widgets = drvdata->dev_data->dapm_widgets; in sti_sas_driver_probe()
461 sti_sas_driver.num_dapm_widgets = drvdata->dev_data->num_dapm_widgets; in sti_sas_driver_probe()
463 sti_sas_driver.dapm_routes = drvdata->dev_data->dapm_routes; in sti_sas_driver_probe()
464 sti_sas_driver.num_dapm_routes = drvdata->dev_data->num_dapm_routes; in sti_sas_driver_probe()
467 dev_set_drvdata(&pdev->dev, drvdata); in sti_sas_driver_probe()
469 return devm_snd_soc_register_component(&pdev->dev, &sti_sas_driver, in sti_sas_driver_probe()
476 .name = "sti-sas-codec",