linux/sound
Takashi Sakamoto 1917429578 ALSA: fireface: add transaction support
As long as investigating Fireface 400, MIDI messages are transferred by
asynchronous communication over IEEE 1394 bus.

Fireface 400 receives MIDI messages by write transactions to two addresses;
0x'0000'0801'8000 and 0x'0000'0801'9000. Each of two seems to correspond to
MIDI port 1 and 2.

Fireface 400 transfers MIDI messages by write transactions to certain
addresses which configured by drivers. The drivers can decide upper 4 byte
of the addresses by write transactions to 0x'0000'0801'03f4. For the rest
part of the address, drivers can select from below options:
 * 0x'0000'0000
 * 0x'0000'0080
 * 0x'0000'0100
 * 0x'0000'0180

Selected options are represented in register 0x'0000'0801'051c as bit
flags. Due to this mechanism, drivers are restricted to use addresses on
'Memory space' of IEEE 1222, even if transactions to the address have
some side effects.

This commit adds transaction support for MIDI messaging, based on my
assumption that the similar mechanism is used on the other protocols. To
receive asynchronous transactions, the driver allocates a range of address
in 'Memory space'. I apply a strategy to use 0x'0000'0000 as lower 4 byte
of the address. When getting failure from Linux FireWire subsystem, this
driver retries to allocate addresses.

Unfortunately, read transaction to address 0x'0000'0801'051c returns zero
always, however write transactions have effects to the other features such
as status of sampling clock. For this reason, this commit delegates a task
to configure this register to user space applications. The applications
should set 3rd bit in LSB in little endian order.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-04-05 21:31:31 +02:00
..
aoa powerpc updates for 4.9 2016-10-07 20:19:31 -07:00
arm ALSA: arm: Fix empty menuconfig SND_ARM 2016-08-01 16:07:53 +02:00
atmel
core ALSA: timer: Info leak in snd_timer_user_tinterrupt() 2017-03-31 17:27:05 +02:00
drivers ALSA: vx: remove 'out of memory' message 2017-02-28 07:54:33 +01:00
firewire ALSA: fireface: add transaction support 2017-04-05 21:31:31 +02:00
hda ALSA: hda - Avoid tricky macros 2017-04-03 08:42:43 +02:00
i2c
isa ALSA: es1688: Use strcpy() instead of sprintf() 2017-03-20 12:24:34 +01:00
mips ALSA: mips: avoid potential uninitialized variable use 2017-01-16 14:33:42 +01:00
oss sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> 2017-03-02 08:42:32 +01:00
parisc
pci ALSA: hda - Improved position reporting on SKL+ 2017-04-03 08:43:17 +02:00
pcmcia lib/vsprintf.c: remove %Z support 2017-02-27 18:43:47 -08:00
ppc scripts/spelling.txt: add "followings" pattern and fix typo instances 2017-02-27 18:43:47 -08:00
sh ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
soc ALSA: hda - Move SKL+ vendor specific register definitions to hda_register.h 2017-04-03 08:43:07 +02:00
sparc dbri: move dereference after check for NULL 2016-12-06 12:18:22 -05:00
spi
synth ALSA: emux: stop if copy_from_user() fails 2017-03-31 16:23:52 +02:00
usb ALSA: usb-audio: Fake also USB device id when alias is given 2017-03-31 11:19:19 +02:00
x86 ALSA: x86: hdmi: select CONFIG_SND_PCM 2017-02-21 23:39:14 +01:00
ac97_bus.c
Kconfig ALSA: add Intel HDMI LPE audio driver for BYT/CHT-T 2017-01-25 14:23:46 +01:00
last.c
Makefile ALSA: add Intel HDMI LPE audio driver for BYT/CHT-T 2017-01-25 14:23:46 +01:00
sound_core.c