Re: [alsa-devel] [PATCH v2 3/4] ASoC: simple-card: accept many DAI links

From: Jyri Sarha
Date: Sat Mar 15 2014 - 05:14:30 EST


On 2014-03-14 20:40, Jean-Francois Moine wrote:
On Fri, 14 Mar 2014 13:16:12 +0200
Jyri Sarha <jsarha@xxxxxx> wrote:

On 03/11/2014 11:36 AM, Jean-Francois Moine wrote:
> Some simple audio cards may have many DAI links.
> This patch extends the simple-card driver for handling such cards.
>
> Signed-off-by: Jean-Francois Moine <moinejf@xxxxxxx>
> ---
[...]

Why can't you just use two simple-card instances in your setup?

My machine has only one audio device (kirkwood). This one has two
outputs. The first one (I2S) is connected to the HDMI transmitter, and
the other one (S/PDIF) is connected to both the HDMI transmitter and the
S/PDIF connector. There can be only one playback stream, either via
I2S, or S/PDIF, or both, with the final output either to HDMI or S/PDIF
or both:

/--> I2S -----+-> HDMI
platform -+ /
\-> S/PDIF -+
\--> S/PDIF

DPCM permits to activate both I2S and S/PDIF, but it does not handle
the format and rate constraints (both outputs are always activated with
the platform constraints).

So, the actual solution I use is 3 DAI links (= 3 PCMs):
- HDMI via I2S
- HDMI via S/PDIF (no S/PDIF output)
- S/PDIF via S/PDIF (no HDMI output)


Maybe a HW specific machine-driver would serve your case better. Of course it would be great to have a generic implementation that can handle this case too, but I am not sure if it should be called a simple-card anymore :).

You need to update the DT-binding document too when you are changing the
binding. That way it would also be easier to follow what you are trying
to accomplish here.

Some people want to have 2 different patchs: one for the code and the
other one for the DT change. Some other people like you want only one
patch. Which is the right way?


I did not mean it should be in the same patch. Part of the same series is fine with me. It is up to maintainer to decide these things anyway. I would just like to compare the document with the implementation.

The sysclk and tdm properties appear to only work in the dais of the
first dai-link and __asoc_simple_card_dai_init() will not be called for
other dais at all. The DT-binding of this implementation would look
pretty hairy to me.

I will add an other dynamic structure for these properties.

Best regards,
Jyri
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/