Hi,
In 2004, RME GmbH shipped Fireface 800 as a flagship model of its Fireface series. This model consists of some chips: - TI TSB81BA3D for physical layer on cable environment of EEE 1394 bus - TI TSB82AA2 for link layer for 1394 OHCI bus bridge to PCI bus - Xilinx Spartan-3 FPGA XC3S400 - Xilinx High-Performance CPLD XC9572XL
A remarkable point of this model is that its physical/link layer support S800 (800Mbps) mode of IEEE 1394b. Within devices of audio and music unit on IEEE 1394 bus, this is an unique model to support it, as long as I know.
This commit adds support for the model with its MIDI functionality only. The functionality is quite similar to the one of Fireface 400. In patch 01-06, some codes specific to Fireface 400 are arranged to be shared by both models.
On the other hand, there're some differences. The largest difference is that the model has no register to switch enabling/disabling tx asynchronous transactions for MIDI messages. Therefore the functionality work well without any assist by userspace.
For this work, I use v2.77 firmware and v3.1.24 driver shipped by RME GmbH. If finding some differences between older firmware, please report it with enough information for debug. To help users for test, I prepare a remote branch including these patches. This can be backport to Linux v4.17 or later. https://github.com/takaswie/snd-firewire-improve/tree/topic/ff800-midi
Takashi Sakamoto (8): ALSA: fireface: share some registers for status of clock synchronization ALSA: fireface: share status and configuration dump ALSA: fireface: share helper function to get current sampling rate and clock source ALSA: fireface: add support for second optical interface for ADAT stream ALSA: fireface: share register for async transaction of MIDI messages ALSA: fireface: add driver data for register for MIDI high address ALSA: fireface: localize a handler for MIDI messages on tx transaction ALSA: fireface: add support for Fireface 800 with MIDI functionality only
sound/firewire/Kconfig | 1 + sound/firewire/fireface/Makefile | 3 +- sound/firewire/fireface/ff-pcm.c | 2 +- sound/firewire/fireface/ff-proc.c | 193 +++++++++++++- sound/firewire/fireface/ff-protocol-ff400.c | 282 ++------------------ sound/firewire/fireface/ff-protocol-ff800.c | 27 ++ sound/firewire/fireface/ff-stream.c | 2 +- sound/firewire/fireface/ff-transaction.c | 157 ++++++----- sound/firewire/fireface/ff.c | 54 +++- sound/firewire/fireface/ff.h | 31 ++- 10 files changed, 406 insertions(+), 346 deletions(-) create mode 100644 sound/firewire/fireface/ff-protocol-ff800.c