linux/sound/firewire
Takashi Sakamoto b6bc812327 ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset
Normal BeBoB firmware has a quirk. When receiving bus reset, it transmits
packets with discontinuous value in dbc field.

This causes two situation, one is to abort streaming by firewire-lib as a
result of detecting the discontinuity. Another is to call driver's .update()
because of bus reset. These two is generated independently. (The former
depends on isochronous stream and the latter depends on IEEE1394 bus driver.)

When BeBoB driver works with XRUN-recoverable applications, this situation
looks like stream_start_duplex() call followed by stream_update_duplex() call
because applications will call snd_pcm_prepare() immediately at XRUN.

To update connections and streams at first, this commit use completion. When
queueing error occurs, stream_start_duplex() is forced to wait maximum
1000msec. During this, when .update() is called, the completion is waken and
stream_start_duplex() is processed without breaking connections.

At bus reset, stream_start_duplex() shouldn't break/establish connections and
stream_update_duplex() should update connections because a caller of
fw_iso_resources_allocate() is responsible for calling
fw_iso_resources_update() on bus reset.

This commit also adds a flag, which has an effect to skip checking continuity
for first packet. This flag is useful for BeBoB quirk to start handling packets
during streaming.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-05-26 14:29:44 +02:00
..
bebob ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset 2014-05-26 14:29:44 +02:00
fireworks ALSA: fireworks: Add command/response functionality into hwdep interface 2014-05-26 14:28:58 +02:00
amdtp.c ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset 2014-05-26 14:29:44 +02:00
amdtp.h ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset 2014-05-26 14:29:44 +02:00
cmp.c ALSA: firewire-lib: Add a new function to check others' connection 2014-05-26 14:22:46 +02:00
cmp.h ALSA: firewire-lib: Add a new function to check others' connection 2014-05-26 14:22:46 +02:00
dice-interface.h ALSA: dice: document quadlet alignment 2013-10-20 22:07:57 +02:00
dice.c ALSA: firewire-lib/dice/speakers: Add common PCM constraints for AMDTP streams 2014-05-26 14:21:46 +02:00
fcp.c ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00
fcp.h ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00
isight.c ALSA: firewire: Convert to snd_card_new() with a device pointer 2014-02-14 08:13:31 +01:00
iso-resources.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
iso-resources.h firewire: octlet AT payloads can be stack-allocated 2011-05-10 22:53:44 +02:00
Kconfig ALSA: bebob: Add skelton for BeBoB based devices 2014-05-26 14:29:12 +02:00
lib.c ALSA: firewire: extend snd_fw_transaction() 2013-10-20 22:07:57 +02:00
lib.h ALSA: firewire: extend snd_fw_transaction() 2013-10-20 22:07:57 +02:00
Makefile ALSA: bebob: Add skelton for BeBoB based devices 2014-05-26 14:29:12 +02:00
packets-buffer.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
packets-buffer.h
scs1x.c ALSA: firewire: Convert to snd_card_new() with a device pointer 2014-02-14 08:13:31 +01:00
speakers.c ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00