Lines Matching refs:dai

11 #include <sound/soc-dai.h>
38 int axg_tdm_set_tdm_slots(struct snd_soc_dai *dai, u32 *tx_mask,
42 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
43 struct axg_tdm_stream *tx = snd_soc_dai_dma_data_get_playback(dai);
44 struct axg_tdm_stream *rx = snd_soc_dai_dma_data_get_capture(dai);
53 dev_err(dai->dev, "interface has no slot\n");
77 dev_err(dai->dev, "unsupported slot width: %d\n", slot_width);
83 /* Amend the dai driver and let dpcm merge do its job */
86 dai->driver->playback.channels_max = tx_slots;
87 dai->driver->playback.formats = fmt;
92 dai->driver->capture.channels_max = rx_slots;
93 dai->driver->capture.formats = fmt;
100 static int axg_tdm_iface_set_sysclk(struct snd_soc_dai *dai, int clk_id,
103 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
108 dev_warn(dai->dev, "master clock not provided\n");
119 static int axg_tdm_iface_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
121 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
126 dev_err(dai->dev, "cpu clock master: mclk missing\n");
136 dev_err(dai->dev, "only CBS_CFS and CBM_CFM are supported\n");
147 struct snd_soc_dai *dai)
149 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
151 snd_soc_dai_get_dma_data(dai, substream);
155 dev_err(dai->dev, "interface has not slots\n");
159 if (snd_soc_component_active(dai->component)) {
175 dev_err(dai->dev, "can't set iface rate constraint\n");
184 struct snd_soc_dai *dai)
186 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
187 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream);
196 dev_err(dai->dev, "not enough slots for channels\n");
201 dev_err(dai->dev, "incompatible slots width for stream\n");
213 static int axg_tdm_iface_set_lrclk(struct snd_soc_dai *dai,
216 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
222 dev_err(dai->dev, "setting sample clock failed: %d\n", ret);
251 dev_err(dai->dev,
260 dev_err(dai->dev,
268 static int axg_tdm_iface_set_sclk(struct snd_soc_dai *dai,
271 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
283 dev_err(dai->dev,
292 dev_err(dai->dev, "setting bit clock failed: %d\n", ret);
300 dev_err(dai->dev, "setting bit clock phase failed: %d\n", ret);
309 struct snd_soc_dai *dai)
311 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
319 dev_err(dai->dev, "bad slot number for format: %d\n",
330 dev_err(dai->dev, "unsupported dai format\n");
334 ret = axg_tdm_iface_set_stream(substream, params, dai);
340 ret = axg_tdm_iface_set_sclk(dai, params);
344 ret = axg_tdm_iface_set_lrclk(dai, params);
353 struct snd_soc_dai *dai)
355 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream);
364 struct snd_soc_dai *dai)
366 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream);
372 static int axg_tdm_iface_remove_dai(struct snd_soc_dai *dai)
377 struct axg_tdm_stream *ts = snd_soc_dai_dma_data_get(dai, stream);
386 static int axg_tdm_iface_probe_dai(struct snd_soc_dai *dai)
388 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai);
394 if (!snd_soc_dai_get_widget(dai, stream))
399 axg_tdm_iface_remove_dai(dai);
402 snd_soc_dai_dma_data_set(dai, stream, ts);
516 * Duplicate dai driver: depending on the slot masks configuration
540 * mclk maybe be missing when the cpu dai is in slave mode and
543 * throw an error if the cpu dai is master and mclk is missing