Lines Matching refs:dai
119 struct snd_soc_dai *dai)
122 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
123 struct q6afe_slim_cfg *slim = &dai_data->port_config[dai->id].slim;
149 struct snd_soc_dai *dai)
151 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
153 struct q6afe_hdmi_cfg *hdmi = &dai_data->port_config[dai->id].hdmi;
189 dev_err(dai->dev, "invalid Channels = %u\n", channels);
198 struct snd_soc_dai *dai)
200 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
201 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg;
206 i2s->sd_line_mask = dai_data->priv[dai->id].sd_line_mask;
211 static int q6i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
213 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
214 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg;
221 static int q6tdm_set_tdm_slot(struct snd_soc_dai *dai,
227 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
228 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
234 dev_err(dai->dev, "%s: invalid slot_width %d\n",
254 dev_err(dai->dev, "%s: invalid slots %d\n",
259 switch (dai->id) {
264 tdm->slot_mask = (dai->id & 0x1 ? tx_mask : rx_mask) & cap_mask;
267 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
268 __func__, dai->id);
275 static int q6tdm_set_channel_map(struct snd_soc_dai *dai,
280 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
281 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
285 switch (dai->id) {
287 if (dai->id & 0x1) {
289 dev_err(dai->dev, "tx slot not found\n");
293 dev_err(dai->dev, "invalid tx num %d\n",
308 dev_err(dai->dev, "rx slot not found\n");
312 dev_err(dai->dev, "invalid rx num %d\n",
328 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
329 __func__, dai->id);
338 struct snd_soc_dai *dai)
340 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
341 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
346 tdm->data_align_type = dai_data->priv[dai->id].data_align;
347 tdm->sync_src = dai_data->priv[dai->id].sync_src;
348 tdm->sync_mode = dai_data->priv[dai->id].sync_mode;
353 static int q6dma_set_channel_map(struct snd_soc_dai *dai,
358 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
359 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg;
363 switch (dai->id) {
377 dev_err(dai->dev, "tx slot not found\n");
382 dev_err(dai->dev, "invalid tx num %d\n",
401 dev_err(dai->dev, "rx slot not found\n");
405 dev_err(dai->dev, "invalid rx num %d\n",
413 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
414 __func__, dai->id);
425 struct snd_soc_dai *dai)
427 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
428 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg;
437 struct snd_soc_dai *dai)
439 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
442 if (!dai_data->is_port_started[dai->id])
445 rc = q6afe_port_stop(dai_data->port[dai->id]);
447 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc);
449 dai_data->is_port_started[dai->id] = false;
454 struct snd_soc_dai *dai)
456 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
459 if (dai_data->is_port_started[dai->id]) {
461 rc = q6afe_port_stop(dai_data->port[dai->id]);
463 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc);
468 switch (dai->id) {
471 q6afe_hdmi_port_prepare(dai_data->port[dai->id],
472 &dai_data->port_config[dai->id].hdmi);
475 q6afe_slim_port_prepare(dai_data->port[dai->id],
476 &dai_data->port_config[dai->id].slim);
479 rc = q6afe_i2s_port_prepare(dai_data->port[dai->id],
480 &dai_data->port_config[dai->id].i2s_cfg);
482 dev_err(dai->dev, "fail to prepare AFE port %x\n",
483 dai->id);
488 q6afe_tdm_port_prepare(dai_data->port[dai->id],
489 &dai_data->port_config[dai->id].tdm);
492 q6afe_cdc_dma_port_prepare(dai_data->port[dai->id],
493 &dai_data->port_config[dai->id].dma_cfg);
499 rc = q6afe_port_start(dai_data->port[dai->id]);
501 dev_err(dai->dev, "fail to start AFE port %x\n", dai->id);
504 dai_data->is_port_started[dai->id] = true;
509 static int q6slim_set_channel_map(struct snd_soc_dai *dai,
513 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
514 struct q6afe_port_config *pcfg = &dai_data->port_config[dai->id];
517 if (dai->id & 0x1) {
546 static int q6afe_mi2s_set_sysclk(struct snd_soc_dai *dai,
549 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
550 struct q6afe_port *port = dai_data->port[dai->id];
759 static int msm_dai_q6_dai_probe(struct snd_soc_dai *dai)
761 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
764 port = q6afe_port_get_from_id(dai->dev, dai->id);
766 dev_err(dai->dev, "Unable to get afe port\n");
769 dai_data->port[dai->id] = port;
774 static int msm_dai_q6_dai_remove(struct snd_soc_dai *dai)
776 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
778 q6afe_port_put(dai_data->port[dai->id]);
779 dai_data->port[dai->id] = NULL;
1585 .name = "q6afe-dai-component",
1607 dev_err(dev, "valid dai id not found:%d\n", ret);
1702 .name = "q6afe-dai",
1709 MODULE_DESCRIPTION("Q6 Audio Fronend dai driver");