linux/sound/firewire
Takashi Sakamoto 3aac326341 ALSA: fireface: use the same size of period for PCM substreams in AMDTP streams
In current implementation, when opening a PCM substream, it's needed to
check whether the opposite PCM substream runs. This is to assign
effectual constraints (e.g. sampling rate) to opened PCM substream.

The number of PCM substreams on AMDTP streams in domain is recorded in
own structure. Usage of this count is an alternative of the above check.
This is better because the count is incremented in pcm.hw_params earlier
than pcm.trigger.

This commit replaces the check with the substream count and the value for
the size of PCM period. Unlike the other drivers in ALSA firewire stack,
no MIDI substream is multiplexed into AMDTP stream.

I note that Fireface AMDTP protocol has a quirk that tx stream includes
blank isochronous cycle. The packet for blank cycle is equivalent to
empty or NODATA packet in IEC 61883-6, thus the protocol is similar to
blocking transmission method of IEC 61883-6. On the other hand, rx
stream adopts non-blocking transmission method. Although the difference
of transmission method between tx/rx streams precisely brings different
timing for a certain amount of events due to their different calculation
for data blocks per packet, it's possible to approximate enough amount
of events mostly has the same timing. Actually current ALSA IEC 61883-1/6
engine uses large amount of data blocks for each hardware IRQ
(=16 packets).

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20191007110532.30270-18-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2019-10-17 12:02:47 +02:00
..
bebob ALSA: bebob: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:44 +02:00
dice ALSA: dice: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:45 +02:00
digi00x ALSA: firewire-digi00x: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:45 +02:00
fireface ALSA: fireface: use the same size of period for PCM substreams in AMDTP streams 2019-10-17 12:02:47 +02:00
fireworks ALSA: fireworks: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:44 +02:00
motu ALSA: firewire-motu: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:46 +02:00
oxfw ALSA: oxfw: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:45 +02:00
tascam ALSA: firewire-tascam: use the same size of period for PCM substream in AMDTP streams 2019-10-17 12:02:46 +02:00
amdtp-am824.c ALSA: firewire-lib: process payload of isoc context according to packet descriptors 2019-07-22 16:05:11 +02:00
amdtp-am824.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
amdtp-stream-trace.h ALSA: firewire-lib: pass data block count as an argument to tracepoints event 2019-07-22 16:04:56 +02:00
amdtp-stream.c ALSA: firewire-lib: add a member into AMDTP domain for events per period 2019-10-17 12:02:40 +02:00
amdtp-stream.h ALSA: firewire-lib: add a member into AMDTP domain for events per period 2019-10-17 12:02:40 +02:00
cmp.c ASoC: Updates for v5.3 2019-07-08 14:45:34 +02:00
cmp.h ALSA: firewire-lib: split allocation of isochronous resources from establishment of connection 2019-06-17 08:18:36 +02:00
fcp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
fcp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
isight.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
iso-resources.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
iso-resources.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
lib.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345 2019-06-05 17:37:08 +02:00
lib.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
packets-buffer.c ALSA: firewire: fix a memory leak bug 2019-08-08 11:12:26 +02:00
packets-buffer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00