linux/sound/firewire/fireface
Takashi Sakamoto dfacca3986 ALSA: fireface: perform sequence replay for media clock recovery
This commit takes ALSA fireface driver to perform sequence replay for
media clock recovery.

The protocol specific to RME Fireface series is not compliant to
IEC 61883-1/6 since it has no CIP header, therefore presentation time
is not used for media clock recovery. The sequence of the number of data
blocks per packet is important.

I note that the device skips an isochronous cycle corresponding to an
empty packet or a NODATA packet in blocking transmission method of
IEC 61883-1/6. For sequence replay, the cycle is handled as receiving an
empty packet. Furthermore, it doesn't start packet transmission till
receiving any packet.

The sequence replay is tested with below models:

* Fireface 400
* Fireface 800
* Fireface 802

I note that it is better to initialize Fireface 400 in advance by
initialization transaction implemented in snd-fireface-ctl-service of
snd-firewire-ctl-services project. You can see whether initialized or
not by HOST LED on the device. Unless, the device often stops packet
transmission even if session starts.

I guess the sequence replay also works well with below models:

* Fireface UFX
* Fireface UCX

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210531025103.17880-7-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-01 08:19:51 +02:00
..
amdtp-ff.c ALSA: fireface: perform sequence replay for media clock recovery 2021-06-01 08:19:51 +02:00
ff-hwdep.c ALSA: fireface: remove unnecessary condition in hwdep_read() 2021-01-25 14:50:36 +01:00
ff-midi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
ff-pcm.c ALSA: firewire: Drop superfluous ioctl PCM ops 2019-12-11 07:25:27 +01:00
ff-proc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
ff-protocol-former.c ALSA: fireface: update isochronous resources when starting packet streaming after bus-reset 2019-06-11 11:36:25 +02:00
ff-protocol-latter.c ALSA: fireface: fix to parse sync status register of latter protocol 2021-02-08 15:58:36 +01:00
ff-stream.c ALSA: fireface: perform sequence replay for media clock recovery 2021-06-01 08:19:51 +02:00
ff-transaction.c ALSA: fireface: Fix integer overflow in transmit_midi_msg() 2021-01-12 14:57:29 +01:00
ff.c ALSA: fireface: add support for RME Fireface UFX (untested) 2020-05-10 12:03:50 +02:00
ff.h ALSA: fireface: add support for RME Fireface UFX (untested) 2020-05-10 12:03:50 +02:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00