• Takashi Sakamoto's avatar
    ALSA: fireface: use the same size of period for PCM substreams in AMDTP streams · 3aac3263
    Takashi Sakamoto authored
    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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20191007110532.30270-18-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    3aac3263
ff-pcm.c 9.38 KB