Lines Matching refs:dai
38 struct snd_soc_dai *dai)
41 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
42 struct q6afe_slim_cfg *slim = &dai_data->port_config[dai->id].slim;
68 struct snd_soc_dai *dai)
70 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
72 struct q6afe_hdmi_cfg *hdmi = &dai_data->port_config[dai->id].hdmi;
96 struct snd_soc_dai *dai)
98 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
99 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg;
104 i2s->sd_line_mask = dai_data->priv[dai->id].sd_line_mask;
109 static int q6i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
111 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
112 struct q6afe_i2s_cfg *i2s = &dai_data->port_config[dai->id].i2s_cfg;
119 static int q6tdm_set_tdm_slot(struct snd_soc_dai *dai,
125 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
126 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
132 dev_err(dai->dev, "%s: invalid slot_width %d\n",
152 dev_err(dai->dev, "%s: invalid slots %d\n",
157 switch (dai->id) {
162 tdm->slot_mask = ((dai->id & 0x1) ? tx_mask : rx_mask) & cap_mask;
165 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
166 __func__, dai->id);
173 static int q6tdm_set_channel_map(struct snd_soc_dai *dai,
178 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
179 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
183 switch (dai->id) {
185 if (dai->id & 0x1) {
187 dev_err(dai->dev, "tx slot not found\n");
191 dev_err(dai->dev, "invalid tx num %d\n",
206 dev_err(dai->dev, "rx slot not found\n");
210 dev_err(dai->dev, "invalid rx num %d\n",
226 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
227 __func__, dai->id);
236 struct snd_soc_dai *dai)
238 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
239 struct q6afe_tdm_cfg *tdm = &dai_data->port_config[dai->id].tdm;
244 tdm->data_align_type = dai_data->priv[dai->id].data_align;
245 tdm->sync_src = dai_data->priv[dai->id].sync_src;
246 tdm->sync_mode = dai_data->priv[dai->id].sync_mode;
251 static int q6dma_set_channel_map(struct snd_soc_dai *dai,
256 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
257 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg;
261 switch (dai->id) {
275 dev_err(dai->dev, "tx slot not found\n");
280 dev_err(dai->dev, "invalid tx num %d\n",
299 dev_err(dai->dev, "rx slot not found\n");
303 dev_err(dai->dev, "invalid rx num %d\n",
311 dev_err(dai->dev, "%s: invalid dai id 0x%x\n",
312 __func__, dai->id);
323 struct snd_soc_dai *dai)
325 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
326 struct q6afe_cdc_dma_cfg *cfg = &dai_data->port_config[dai->id].dma_cfg;
335 struct snd_soc_dai *dai)
337 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
340 if (!dai_data->is_port_started[dai->id])
343 rc = q6afe_port_stop(dai_data->port[dai->id]);
345 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc);
347 dai_data->is_port_started[dai->id] = false;
352 struct snd_soc_dai *dai)
354 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
357 if (dai_data->is_port_started[dai->id]) {
359 rc = q6afe_port_stop(dai_data->port[dai->id]);
361 dev_err(dai->dev, "fail to close AFE port (%d)\n", rc);
366 switch (dai->id) {
369 q6afe_hdmi_port_prepare(dai_data->port[dai->id],
370 &dai_data->port_config[dai->id].hdmi);
373 q6afe_slim_port_prepare(dai_data->port[dai->id],
374 &dai_data->port_config[dai->id].slim);
378 rc = q6afe_i2s_port_prepare(dai_data->port[dai->id],
379 &dai_data->port_config[dai->id].i2s_cfg);
381 dev_err(dai->dev, "fail to prepare AFE port %x\n",
382 dai->id);
387 q6afe_tdm_port_prepare(dai_data->port[dai->id],
388 &dai_data->port_config[dai->id].tdm);
391 q6afe_cdc_dma_port_prepare(dai_data->port[dai->id],
392 &dai_data->port_config[dai->id].dma_cfg);
398 rc = q6afe_port_start(dai_data->port[dai->id]);
400 dev_err(dai->dev, "fail to start AFE port %x\n", dai->id);
403 dai_data->is_port_started[dai->id] = true;
408 static int q6slim_set_channel_map(struct snd_soc_dai *dai,
412 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
413 struct q6afe_port_config *pcfg = &dai_data->port_config[dai->id];
416 if (dai->id & 0x1) {
445 static int q6afe_mi2s_set_sysclk(struct snd_soc_dai *dai,
448 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
449 struct q6afe_port *port = dai_data->port[dai->id];
622 static int msm_dai_q6_dai_probe(struct snd_soc_dai *dai)
624 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
627 port = q6afe_port_get_from_id(dai->dev, dai->id);
629 dev_err(dai->dev, "Unable to get afe port\n");
632 dai_data->port[dai->id] = port;
637 static int msm_dai_q6_dai_remove(struct snd_soc_dai *dai)
639 struct q6afe_dai_data *dai_data = dev_get_drvdata(dai->dev);
641 q6afe_port_put(dai_data->port[dai->id]);
642 dai_data->port[dai->id] = NULL;
948 .name = "q6afe-dai-component",
970 dev_err(dev, "valid dai id not found:%d\n", ret);
1074 .name = "q6afe-dai",
1081 MODULE_DESCRIPTION("Q6 Audio Frontend dai driver");