[alsa-devel] Old firmware version for Dice II ASIC

Clemens Ladisch clemens at ladisch.de
Thu Apr 19 10:54:12 CEST 2018


Takashi Sakamoto wrote:
> Recently I get Alesis Multimix 12 FireWire and work for ALSA dice driver
> to support it. This unit uses ASIC of 'WaveFront DICE II STD' and TCAT
> extended application protocol is not supported.
>
> Unfortunately, the driver in v4.17-rc1 can't handle this unit, due to
> validation of address sections for global space.
> [...]
> (sound/firewire/dice/dice-interface.h)
> 175 #define GLOBAL_SAMPLE_RATE              0x05c
> ...
> 181 #define GLOBAL_VERSION                  0x060
> 182
> 183 /* Some old firmware versions do not have the following global registers: */
> ...
> 188 #define GLOBAL_CLOCK_CAPABILITIES       0x064
>
> But this is not proper in my case because the maximum offset on global
> sub-address space is 0x05c in quadlet unit.

IIRC that comment was based on the documentation.  Apparently, there was
a misunderstanding of "size 0x60" vs. "up to the register at 0x60".

> In my opinion, GLOBAL_VERSION offset belongs to global address space for
> newer firmware version.

I agree; if this is how the hardware behaves, then this is what the driver
should support.

The version register is checked only once (in get_subaddrs()) and does not
actually affect the behaviour of the driver, so it would not hurt to simply
omit that check on the old firmware.  (And the "quadlets >= 90" check in
dice_proc_read() needs to be adjusted.)


Regards,
Clemens


More information about the Alsa-devel mailing list