How trivial would it be to port the DICE driver from FFADO?

Takashi Sakamoto o-takashi at sakamocchi.jp
Wed Aug 10 02:32:43 CEST 2022


Hi,

I'm a maintainer of ALSA firewire stack. Thanks for your contacting to the
list.

On Tue, Aug 09, 2022 at 04:44:23PM +0200, forevernoob at tutanota.com wrote:
> Hello,
> 
> I'm new to these kinds of mailing lists so please forgive me if I'm doing something dumb.
> 
> I would love to see Allen & Heath Zed R16 as well as Midas Venice F32 support in ALSA.
> ...
> So my question would be: How difficult would it be to port this driver
> (more specifically: Port it sufficiently enough to support the
> aforementioned devices) ?
> 
> Are we talking trivial enough for someone with minimal C experience, a
> dedicated team of ALSA devs or something else?

If investigating just for code migration from libffado2, it's impossible
since the implementation of ALSA dice driver is completely different from
the implementation of the dice part of libffado2. They have different
root for development. Thus we need to start investigation for the devices
at the first place. It demands you for a bit patience.

As long as reading manuals of the models, hardware vendors selected
TCD2210 ASIC (Dice Jr.) for them. I know that some options were given to
the vendors when using the ASIC;
 1. just with TCAT general protocol
 2. with both TCAT general protocol and protocol extension
 3. with Open Generic Transporter (OGT) protocol.

If you can drive the devices by libffado2, the possibility of OGT is
dropped. The implementation of libffado2 mention about the 2nd option by
usage of word, EAP (=Extended Application Protocol), however I know the
case of TCD2220 without protocol extension. It's Lexicon FW810s[1], In
the case, we need to hard-code stream formats in ALSA dice driver by
investigation to actual models.

Anyway, if you are satisfied in libffado2, it's better to continue using
it. Of course, I would be glad if I got your help to extend ALSA firewire
stack.

P.S. If you are interested in DICE ASICs and protocols themselves, it's
a good start to read my user space implementation (but by Rust language),
which I recently published. You can see overview at crates.io[2].

[1] https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git?id=9a08676fc596
[2] https://crates.io/crates/firewire-dice-protocols


Regards

Takashi Sakamoto


More information about the Alsa-devel mailing list