[alsa-devel] Question about tx_mask/rx_mask

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Thu Jan 23 08:09:22 CET 2020


Hi ALSA ML

I want to ask about tx_mask / rx_mask.
soc_pcm_open() is calling snd_soc_dai_startup() (= (A)), and then,
it setup tx_mask / rx_mask.

	static int soc_pcm_open(...)
	{
		...
		for_each_rtd_codec_dai(rtd, i, codec_dai) {
(A)			ret = snd_soc_dai_startup(codec_dai, substream);
			if (ret < 0) {
				dev_err(...)

			if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
=>				codec_dai->tx_mask = 0;
			else
=>				codec_dai->rx_mask = 0;
		}
		...
	}

snd_soc_dai_link_event_pre_pmu() also calling snd_soc_dai_startup(),
but, it doesn't care about tx/rx_mask.
Is this bug ?

snd_soc_dai_link_event_pre_pmu(...)
{
	...
	substream->stream = SNDRV_PCM_STREAM_CAPTURE;
	snd_soc_dapm_widget_for_each_source_path(w, path) {
		source = path->source->priv;

(A)		ret = snd_soc_dai_startup(source, substream);
		if (ret < 0) {
			dev_err(source->dev,
				"ASoC: startup() failed: %d\n", ret);
			goto out;
		}
		source->active++;
	}

	substream->stream = SNDRV_PCM_STREAM_PLAYBACK;
	snd_soc_dapm_widget_for_each_sink_path(w, path) {
		sink = path->sink->priv;

(A)		ret = snd_soc_dai_startup(sink, substream);
		if (ret < 0) {
			dev_err(sink->dev,
				"ASoC: startup() failed: %d\n", ret);
			goto out;
		}
		sink->active++;
	}
	...
}

Thank you for your help !!
Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list