Lines Matching refs:dai
35 int axg_tdm_set_tdm_slots(struct snd_soc_dai *dai, u32 *tx_mask, in axg_tdm_set_tdm_slots() argument
39 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_set_tdm_slots()
40 struct axg_tdm_stream *tx = snd_soc_dai_dma_data_get_playback(dai); in axg_tdm_set_tdm_slots()
41 struct axg_tdm_stream *rx = snd_soc_dai_dma_data_get_capture(dai); in axg_tdm_set_tdm_slots()
50 dev_err(dai->dev, "interface has no slot\n"); in axg_tdm_set_tdm_slots()
74 dev_err(dai->dev, "unsupported slot width: %d\n", slot_width); in axg_tdm_set_tdm_slots()
83 dai->driver->playback.channels_max = tx_slots; in axg_tdm_set_tdm_slots()
84 dai->driver->playback.formats = fmt; in axg_tdm_set_tdm_slots()
89 dai->driver->capture.channels_max = rx_slots; in axg_tdm_set_tdm_slots()
90 dai->driver->capture.formats = fmt; in axg_tdm_set_tdm_slots()
97 static int axg_tdm_iface_set_sysclk(struct snd_soc_dai *dai, int clk_id, in axg_tdm_iface_set_sysclk() argument
100 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_set_sysclk()
105 dev_warn(dai->dev, "master clock not provided\n"); in axg_tdm_iface_set_sysclk()
116 static int axg_tdm_iface_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) in axg_tdm_iface_set_fmt() argument
118 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_set_fmt()
123 dev_err(dai->dev, "cpu clock master: mclk missing\n"); in axg_tdm_iface_set_fmt()
133 dev_err(dai->dev, "only CBS_CFS and CBM_CFM are supported\n"); in axg_tdm_iface_set_fmt()
144 struct snd_soc_dai *dai) in axg_tdm_iface_startup() argument
146 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_startup()
148 snd_soc_dai_get_dma_data(dai, substream); in axg_tdm_iface_startup()
152 dev_err(dai->dev, "interface has not slots\n"); in axg_tdm_iface_startup()
157 if (snd_soc_component_active(dai->component)) { in axg_tdm_iface_startup()
162 dev_err(dai->dev, in axg_tdm_iface_startup()
173 struct snd_soc_dai *dai) in axg_tdm_iface_set_stream() argument
175 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_set_stream()
176 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream); in axg_tdm_iface_set_stream()
185 dev_err(dai->dev, "not enough slots for channels\n"); in axg_tdm_iface_set_stream()
190 dev_err(dai->dev, "incompatible slots width for stream\n"); in axg_tdm_iface_set_stream()
202 static int axg_tdm_iface_set_lrclk(struct snd_soc_dai *dai, in axg_tdm_iface_set_lrclk() argument
205 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_set_lrclk()
211 dev_err(dai->dev, "setting sample clock failed: %d\n", ret); in axg_tdm_iface_set_lrclk()
240 dev_err(dai->dev, in axg_tdm_iface_set_lrclk()
249 dev_err(dai->dev, in axg_tdm_iface_set_lrclk()
257 static int axg_tdm_iface_set_sclk(struct snd_soc_dai *dai, in axg_tdm_iface_set_sclk() argument
260 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_set_sclk()
272 dev_err(dai->dev, in axg_tdm_iface_set_sclk()
281 dev_err(dai->dev, "setting bit clock failed: %d\n", ret); in axg_tdm_iface_set_sclk()
289 dev_err(dai->dev, "setting bit clock phase failed: %d\n", ret); in axg_tdm_iface_set_sclk()
298 struct snd_soc_dai *dai) in axg_tdm_iface_hw_params() argument
300 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_hw_params()
308 dev_err(dai->dev, "bad slot number for format: %d\n", in axg_tdm_iface_hw_params()
319 dev_err(dai->dev, "unsupported dai format\n"); in axg_tdm_iface_hw_params()
323 ret = axg_tdm_iface_set_stream(substream, params, dai); in axg_tdm_iface_hw_params()
329 ret = axg_tdm_iface_set_sclk(dai, params); in axg_tdm_iface_hw_params()
333 ret = axg_tdm_iface_set_lrclk(dai, params); in axg_tdm_iface_hw_params()
342 struct snd_soc_dai *dai) in axg_tdm_iface_hw_free() argument
344 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream); in axg_tdm_iface_hw_free()
353 struct snd_soc_dai *dai) in axg_tdm_iface_prepare() argument
355 struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream); in axg_tdm_iface_prepare()
361 static int axg_tdm_iface_remove_dai(struct snd_soc_dai *dai) in axg_tdm_iface_remove_dai() argument
366 struct axg_tdm_stream *ts = snd_soc_dai_dma_data_get(dai, stream); in axg_tdm_iface_remove_dai()
375 static int axg_tdm_iface_probe_dai(struct snd_soc_dai *dai) in axg_tdm_iface_probe_dai() argument
377 struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); in axg_tdm_iface_probe_dai()
383 if (!snd_soc_dai_get_widget(dai, stream)) in axg_tdm_iface_probe_dai()
388 axg_tdm_iface_remove_dai(dai); in axg_tdm_iface_probe_dai()
391 snd_soc_dai_dma_data_set(dai, stream, ts); in axg_tdm_iface_probe_dai()