[alsa-devel] Driver for MOTU devices

Takashi Sakamoto o-takashi at sakamocchi.jp
Sun Feb 10 04:07:32 CET 2019


Hi,

On Fri, 8 Feb 2019, Peter Sjöberg wrote:
> Hello!
> 
> I'm contacting you as the developer of the kernel driver for MOTU firewire devices.
> 
> First I want to thank you for your time and effort to develop the driver - I have the Audio Express which was unusable in Linux for a long time so this was a
> really nice surprise!
> 
> I want to ask you a question about the code, if it's the wrong place to ask please redirect me. 
> In the file amdtp-motu.c line 139 the code thas converts 24 to 32 bits reads:
>    *dst = (byte[0] << 24) | (byte[1] << 16) | byte[2];
> ..however I am puzzled by the conversion of the third byte here. In my mind it should be:
>    *dst = (byte[0] << 24) | (byte[1] << 16) | (byte[2] << 8);
> 
> The conversion in the other direction is written like this (line 167-169):
>   byte[0] = (*src >> 24) & 0xff;
>   byte[1] = (*src >> 16) & 0xff;
>   byte[2] = (*src >> 8) & 0xff;
>  
> I just want to help out so please inform me if I'm wrong and why :)

Oops. It's a bug since v4.12 or later, indeed.

Unfortunately, I'm on vacation. I'll post the patch to fix it in next week
after testing it with MOTU models I own. Thanks for your report ;)


By the way, I guess that you see many kernel messages with 'unsolicited 
response' from firewire-core driver, like.

fireire_core 0000:03:00.0: unsolicited response (source ffc0, tlabel 1f)

As long as I know, AudioExpress often transfers invalid response code for
any asynchronous transaction[1]. This brings failures of read/write 
transaction and ALSA MOTU driver sometimes fails to handle the device.

For your information.

[1] 
https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/sound/firewire/motu?id=3a93d082bacf887b47737c4b75c083dea7570832

Regards


Takashi Sakamoto



More information about the Alsa-devel mailing list