linux_dsm_epyc7002/sound/firewire
Takashi Sakamoto 14a37ac1bf ALSA: bebob: simplify bus-reset handling
At bus-reset, DM1000/DM1100/DM1500 chipsets transfer packets with
discontinuous value in 'dbc' field of CIP header. In this case, packet
streaming layer in firewire-lib module stops streaming and set XRUN to PCM
substream.

In ALSA, PCM applications are notified the XRUN status by the return value
of ALSA PCM interface. They can recover this state by executing
snd_pcm_prepare(), then PCM drivers' prepare handler is called, and start
new PCM substream. For ALSA BeBoB driver, the handler establishes new
connections and start new AMDTP streaming.

Unfortunately, neither the PCM applications nor the driver know the reason
of XRUN. The driver gets to know the reason when update handler is called
by IEEE 1394 bus driver. As long as I tested, the order of below events are
not fixed:
 * Detecting packet discontinuity in tasklet context of OHCI 1394 driver
 * Calling prepare handler in process context of ALSA PCM application
 * Calling update handler in kthread context of IEEE 1394 bus driver

The unpredictable order is disadvantage for the driver to be compliant to
CMP. In IEC 61883-1, new CMP establish operations should be done 1 sec
(isoc_resource_delay) after bus-reset. Within 1 sec, CMP restore
operations are allowed. For this reason, in former commit ('b6bc812327aa:
ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset'),
the process context is forced to wait for executing update handler. The
process context wait for bus-reset up to 1 sec. This commit solves the
issue, while causes more disadvantages. For PCM applications, calling
snd_pcm_prepare() for recovering XRUN state takes more time and the driver
got a bit complicated code, while the recovery is not always successful.

As long as I tested, DM1000/DM1100/DM1500 and BeBoB firmware can allow
drivers to establish new connections just after bus reset. Furthermore,
any FCP transactions are handled correctly. Therefore, the driver don't
need to wait for bus reset handler for starting new streaming.

This commit removes the codes to reduce maintenance cost.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2016-02-20 15:45:15 +01:00
..
bebob ALSA: bebob: simplify bus-reset handling 2016-02-20 15:45:15 +01:00
dice ALSA: dice: old firmware optimization for Dice notification 2016-02-12 09:52:49 +01:00
digi00x ALSA: firewire-digi00x: Drop bogus const type qualifier on dot_scrt() 2016-02-09 12:16:52 +01:00
fireworks ALSA: fireworks: change type of substream counter from atomic_t to unsigned int 2015-11-14 17:53:46 +01:00
oxfw ALSA: oxfw: use workqueue instead of tasklet for scs1x 2016-02-18 15:18:33 +01:00
tascam ALSA: firewire-tascam: remove needless member for control and status message 2016-02-05 12:47:14 +01:00
amdtp-am824.c ALSA: firewire-lib: process_rx_data_blocks() can be static 2015-09-29 16:52:52 +02:00
amdtp-am824.h ALSA: firewire-lib: complete AM824 data block processing layer 2015-09-29 12:51:20 +02:00
amdtp-stream.c ALSA: firewire-lib: continue packet processing at detecting wrong CIP headers 2015-10-11 18:14:01 +02:00
amdtp-stream.h ALSA: firewire-lib: complete AM824 data block processing layer 2015-09-29 12:51:20 +02:00
cmp.c ALSA: firewire-lib: fix kerneldoc errors 2014-11-18 18:10:23 +01:00
cmp.h ALSA: firewire-lib: Add a new function to check others' connection 2014-05-26 14:22:46 +02:00
fcp.c ALSA: firewire-lib: rename 'amdtp' to 'amdtp-stream' to prepare for functional separation 2015-09-29 12:47:11 +02:00
fcp.h ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00
isight.c ALSA: pcm: Add snd_pcm_stop_xrun() helper 2014-11-09 18:20:40 +01:00
iso-resources.c ALSA: firewire-lib: leave unit reference counting completely 2015-03-10 15:27:19 +01:00
iso-resources.h firewire: octlet AT payloads can be stack-allocated 2011-05-10 22:53:44 +02:00
Kconfig ALSA: oxfw: obsolete scs1x module 2015-12-22 11:51:31 +01:00
lib.c ALSA: firewire-lib: avoid NULL pointer dereference after closing MIDI port 2015-10-19 11:58:21 +02:00
lib.h ALSA: firewire-lib: avoid endless loop to transfer MIDI messages at fatal error 2015-10-09 09:57:06 +02:00
Makefile ALSA: oxfw: obsolete scs1x module 2015-12-22 11:51:31 +01: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 ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver 2011-03-15 08:42:22 +01:00