[alsa-devel] Question about struct snd_soc_dai() :: cpu_dai->codec

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Tue Jul 26 07:41:56 CEST 2016


Hi ALSA SoC

My current headache is ALSA SoC's each modules (= Card/Codec/CPU/Platform)
doesn't care about "unbind/rmmod".
For example, if someone unbinded/rmmoded "Codec", Card or other modules
doesn't know about it. Thus, user can continue to use this sound card,
and kernel will be Oops.

So, I would like to solve this issue, and for this purpose,
now I'm investigating about ALSA SoC structures.
It is now super complex, and I noticed that it is having duplicated
struct members.

If possible, I would like to cleanup this issue.

During this investigating, I noticed 1 strange operation

${LINUX}/sound/soc/soc-core.c :: snd_soc_runtime_set_dai_fmt

int snd_soc_runtime_set_dai_fmt(xxx)
{
	...
	/* Flip the polarity for the "CPU" end of a CODEC<->CODEC link */
	if (cpu_dai->codec) {
		...
	}
	...
}

struct snd_soc_dai {
       ...
	/* parent platform/codec */
	struct snd_soc_codec *codec;
	struct snd_soc_component *component;
	...
}

According to snd_soc_dai, *codec is its "parent".
I wonder does "cpu_dai" really can have "codec" parent ??
I think this is not correct, and we can remove this operation ?


More information about the Alsa-devel mailing list