From: Lars-Peter Clausen <lars@metafoo.de>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
Mark Brown <broonie@kernel.org>
Cc: linux-renesas-soc@vger.kernel.org,
Linux-ALSA <alsa-devel@alsa-project.org>,
Simon <horms@verge.net.au>, Liam Girdwood <lgirdwood@gmail.com>
Subject: Re: [alsa-devel] Question about struct snd_soc_dai() :: cpu_dai->codec
Date: Thu, 28 Jul 2016 22:24:12 +0200 [thread overview]
Message-ID: <579A69EC.9060205@metafoo.de> (raw)
In-Reply-To: <878twpj739.wl%kuninori.morimoto.gx@renesas.com>
On 07/26/2016 07:41 AM, Kuninori Morimoto wrote:
>
> 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 ?
This is for CODEC<->CODEC links where no CPU DAI is involved and the
"CPU" side of the DAI link is actually a CODEC.
Ideally we'd make the DAI links agnostic to what is connected, e.g. it
shouldn't matter what type is connected to what side. But that does not
work since things are anti-symmetric between CPU and CODEC DAIs. On
CODEC DAIs the capture stream is output, on CPU DAIs the capture stream
is input, similar thing for playback. So we need to know whether the DAI
is a CPU DAI or a CODEC DAI.
Fixing this at this point is near to impossible since it requires
invasive changes to all existing drivers. So we need this code and can't
drop it.
The best we can do is try to come up with a generic interface that is
DAI type independent and recommend this interface for new drivers.
next prev parent reply other threads:[~2016-07-28 20:24 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-26 5:41 Question about struct snd_soc_dai() :: cpu_dai->codec Kuninori Morimoto
2016-07-27 3:21 ` [alsa-devel] " Vinod Koul
2016-07-27 3:42 ` Kuninori Morimoto
2016-07-27 5:57 ` Takashi Iwai
2016-07-27 6:36 ` Kuninori Morimoto
2016-07-27 17:21 ` Vinod Koul
2016-07-27 18:04 ` Mark Brown
2016-07-27 18:11 ` Takashi Iwai
2016-07-27 18:22 ` Mark Brown
2016-07-27 20:22 ` Takashi Iwai
2016-07-28 3:46 ` Vinod Koul
2016-07-28 20:33 ` Lars-Peter Clausen
2016-07-28 20:42 ` Takashi Iwai
2016-07-28 20:43 ` Lars-Peter Clausen
2016-07-28 20:44 ` Mark Brown
2016-07-29 0:30 ` Takashi Sakamoto
2016-07-29 9:07 ` Lars-Peter Clausen
2016-07-29 16:07 ` Vinod Koul
2016-07-29 20:41 ` Takashi Iwai
2016-07-29 21:45 ` Takashi Sakamoto
2016-07-29 22:08 ` Mark Brown
2016-08-04 3:17 ` Takashi Sakamoto
2016-08-04 10:28 ` Mark Brown
2016-08-04 12:12 ` Takashi Sakamoto
2016-08-04 12:27 ` Takashi Iwai
2016-08-04 13:39 ` Takashi Sakamoto
2016-08-04 13:52 ` Takashi Iwai
2016-07-28 20:24 ` Lars-Peter Clausen [this message]
2016-07-29 2:24 ` [alsa-devel] " Kuninori Morimoto
2016-07-29 9:01 ` Lars-Peter Clausen
2016-07-29 14:41 ` Mark Brown
2016-08-01 3:45 ` Kuninori Morimoto
2016-08-02 6:47 ` Kuninori Morimoto
2016-08-03 19:32 ` [alsa-devel] " Lars-Peter Clausen
2016-08-04 2:38 ` Kuninori Morimoto
2016-08-04 8:21 ` Lars-Peter Clausen
2016-08-04 20:56 ` [alsa-devel] " Mark Brown
2016-08-05 7:29 ` Kuninori Morimoto
2016-08-04 20:37 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=579A69EC.9060205@metafoo.de \
--to=lars@metafoo.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=horms@verge.net.au \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=lgirdwood@gmail.com \
--cc=linux-renesas-soc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).