[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