• Takashi Sakamoto's avatar
    ALSA: firewire-digi00x: use the same size of period for PCM substream in AMDTP streams · c36f8fcc
    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 and MIDI 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 idea has one issue because it's incremented for MIDI substreams as
    well. In current implementation, for a case that any MIDI substream run
    and a PCM substream is going to start, PCM application to start the PCM
    substream can decide hardware parameters by restart packet streaming.
    Just checking the substream count can brings regression.
    
    Now AMDTP domain structure has a member for the size of PCM period in
    PCM substream which starts AMDTP streams in domain. When the value has
    zero and the substream count is greater than 1, it means that any MIDI
    substream starts AMDTP streams in domain. Usage of the value can resolve
    the above issue.
    
    This commit replaces the check with the substream count and the value for
    the size of PCM period.
    
    I note that DOT AMDTP protocol has a quirk to use different transmission
    method of IEC 61883-6 for tx/rx streams; non-blocking in tx stream and
    blocking in rx stream. 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-15-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    c36f8fcc
digi00x-pcm.c 8.56 KB