Lines Matching full:dai
39 struct snd_soc_dai *dai) in q6slim_hw_params() argument
42 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6slim_hw_params()
43 struct q6afe_slim_cfg *slim = &dai_data->port_config[dai->id].slim; in q6slim_hw_params()
69 struct snd_soc_dai *dai) in q6hdmi_hw_params() argument
71 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6hdmi_hw_params()
73 struct q6afe_hdmi_cfg *hdmi = &dai_data->port_config[dai->id].hdmi; in q6hdmi_hw_params()
97 struct snd_soc_dai *dai) in q6i2s_hw_params() argument
99 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6i2s_hw_params()
100 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg; in q6i2s_hw_params()
105 i2s->sd_line_mask = dai_data->priv[dai->id].sd_line_mask; in q6i2s_hw_params()
110 static int q6i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) in q6i2s_set_fmt() argument
112 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6i2s_set_fmt()
113 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg; in q6i2s_set_fmt()
120 static int q6tdm_set_tdm_slot(struct snd_soc_dai *dai, in q6tdm_set_tdm_slot() argument
126 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6tdm_set_tdm_slot()
127 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm; in q6tdm_set_tdm_slot()
133 dev_err(dai->dev, "%s: invalid slot_width %d\n", in q6tdm_set_tdm_slot()
153 dev_err(dai->dev, "%s: invalid slots %d\n", in q6tdm_set_tdm_slot()
158 switch (dai->id) { in q6tdm_set_tdm_slot()
163 tdm->slot_mask = ((dai->id & 0x1) ? tx_mask : rx_mask) & cap_mask; in q6tdm_set_tdm_slot()
166 dev_err(dai->dev, "%s: invalid dai id 0x%x\n", in q6tdm_set_tdm_slot()
167 __func__, dai->id); in q6tdm_set_tdm_slot()
174 static int q6tdm_set_channel_map(struct snd_soc_dai *dai, in q6tdm_set_channel_map() argument
179 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6tdm_set_channel_map()
180 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm; in q6tdm_set_channel_map()
184 switch (dai->id) { in q6tdm_set_channel_map()
186 if (dai->id & 0x1) { in q6tdm_set_channel_map()
188 dev_err(dai->dev, "tx slot not found\n"); in q6tdm_set_channel_map()
192 dev_err(dai->dev, "invalid tx num %d\n", in q6tdm_set_channel_map()
207 dev_err(dai->dev, "rx slot not found\n"); in q6tdm_set_channel_map()
211 dev_err(dai->dev, "invalid rx num %d\n", in q6tdm_set_channel_map()
227 dev_err(dai->dev, "%s: invalid dai id 0x%x\n", in q6tdm_set_channel_map()
228 __func__, dai->id); in q6tdm_set_channel_map()
237 struct snd_soc_dai *dai) in q6tdm_hw_params() argument
239 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6tdm_hw_params()
240 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm; in q6tdm_hw_params()
245 tdm->data_align_type = dai_data->priv[dai->id].data_align; in q6tdm_hw_params()
246 tdm->sync_src = dai_data->priv[dai->id].sync_src; in q6tdm_hw_params()
247 tdm->sync_mode = dai_data->priv[dai->id].sync_mode; in q6tdm_hw_params()
252 static int q6dma_set_channel_map(struct snd_soc_dai *dai, in q6dma_set_channel_map() argument
259 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6dma_set_channel_map()
260 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg; in q6dma_set_channel_map()
264 switch (dai->id) { in q6dma_set_channel_map()
278 dev_err(dai->dev, "tx slot not found\n"); in q6dma_set_channel_map()
283 dev_err(dai->dev, "invalid tx num %d\n", in q6dma_set_channel_map()
302 dev_err(dai->dev, "rx slot not found\n"); in q6dma_set_channel_map()
306 dev_err(dai->dev, "invalid rx num %d\n", in q6dma_set_channel_map()
314 dev_err(dai->dev, "%s: invalid dai id 0x%x\n", in q6dma_set_channel_map()
315 __func__, dai->id); in q6dma_set_channel_map()
326 struct snd_soc_dai *dai) in q6dma_hw_params() argument
328 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6dma_hw_params()
329 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg; in q6dma_hw_params()
338 struct snd_soc_dai *dai) in q6afe_dai_shutdown() argument
340 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6afe_dai_shutdown()
343 if (!dai_data->is_port_started[dai->id]) in q6afe_dai_shutdown()
346 rc = q6afe_port_stop(dai_data->port[dai->id]); in q6afe_dai_shutdown()
348 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc); in q6afe_dai_shutdown()
350 dai_data->is_port_started[dai->id] = false; in q6afe_dai_shutdown()
355 struct snd_soc_dai *dai) in q6afe_dai_prepare() argument
357 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6afe_dai_prepare()
360 if (dai_data->is_port_started[dai->id]) { in q6afe_dai_prepare()
362 rc = q6afe_port_stop(dai_data->port[dai->id]); in q6afe_dai_prepare()
364 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc); in q6afe_dai_prepare()
369 switch (dai->id) { in q6afe_dai_prepare()
372 q6afe_hdmi_port_prepare(dai_data->port[dai->id], in q6afe_dai_prepare()
373 &dai_data->port_config[dai->id].hdmi); in q6afe_dai_prepare()
376 q6afe_slim_port_prepare(dai_data->port[dai->id], in q6afe_dai_prepare()
377 &dai_data->port_config[dai->id].slim); in q6afe_dai_prepare()
381 rc = q6afe_i2s_port_prepare(dai_data->port[dai->id], in q6afe_dai_prepare()
382 &dai_data->port_config[dai->id].i2s_cfg); in q6afe_dai_prepare()
384 dev_err(dai->dev, "fail to prepare AFE port %x\n", in q6afe_dai_prepare()
385 dai->id); in q6afe_dai_prepare()
390 q6afe_tdm_port_prepare(dai_data->port[dai->id], in q6afe_dai_prepare()
391 &dai_data->port_config[dai->id].tdm); in q6afe_dai_prepare()
394 q6afe_cdc_dma_port_prepare(dai_data->port[dai->id], in q6afe_dai_prepare()
395 &dai_data->port_config[dai->id].dma_cfg); in q6afe_dai_prepare()
401 rc = q6afe_port_start(dai_data->port[dai->id]); in q6afe_dai_prepare()
403 dev_err(dai->dev, "fail to start AFE port %x\n", dai->id); in q6afe_dai_prepare()
406 dai_data->is_port_started[dai->id] = true; in q6afe_dai_prepare()
411 static int q6slim_set_channel_map(struct snd_soc_dai *dai, in q6slim_set_channel_map() argument
417 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6slim_set_channel_map()
418 struct q6afe_port_config *pcfg = &dai_data->port_config[dai->id]; in q6slim_set_channel_map()
421 if (dai->id & 0x1) { in q6slim_set_channel_map()
450 static int q6afe_mi2s_set_sysclk(struct snd_soc_dai *dai, in q6afe_mi2s_set_sysclk() argument
453 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in q6afe_mi2s_set_sysclk()
454 struct q6afe_port *port = dai_data->port[dai->id]; in q6afe_mi2s_set_sysclk()
627 static int msm_dai_q6_dai_probe(struct snd_soc_dai *dai) in msm_dai_q6_dai_probe() argument
629 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in msm_dai_q6_dai_probe()
632 port = q6afe_port_get_from_id(dai->dev, dai->id); in msm_dai_q6_dai_probe()
634 dev_err(dai->dev, "Unable to get afe port\n"); in msm_dai_q6_dai_probe()
637 dai_data->port[dai->id] = port; in msm_dai_q6_dai_probe()
642 static int msm_dai_q6_dai_remove(struct snd_soc_dai *dai) in msm_dai_q6_dai_remove() argument
644 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev); in msm_dai_q6_dai_remove()
646 q6afe_port_put(dai_data->port[dai->id]); in msm_dai_q6_dai_remove()
647 dai_data->port[dai->id] = NULL; in msm_dai_q6_dai_remove()
953 .name = "q6afe-dai-component",
975 dev_err(dev, "valid dai id not found:%d\n", ret); in of_q6afe_parse_dai_data()
1079 .name = "q6afe-dai",
1086 MODULE_DESCRIPTION("Q6 Audio Frontend dai driver");