Skip to content
  • Takashi Sakamoto's avatar
    ALSA: firewire-motu: add stream management functionality · 9b2bb4f2
    Takashi Sakamoto authored
    
    
    This commit adds a functionality to manage packet streaming for MOTU
    FireWire series.
    
    The streaming is not controlled by CMP, thus against IEC 61883-1. Write
    transaction to certain addresses start/stop packet streaming.
    
    Transactions to 0x'ffff'f000'0b00 results in isochronous channel number for
    both directions and starting/stopping transmission of packets. The
    isochronous channel number is represented in 6 bit field, thus units can
    identify the channels up to 64, as IEEE 1394 bus specification described.
    
    Transactions to 0x'ffff'f000'0b10 results in packet format for both
    directions and transmission speed. When each of data block includes fixed
    part of data chunks only, corresponding flags stand.
    
    When bus reset occurs, the units continue to transmit packets with
    non-contiguous data block counter. This causes discontinuity detection in
    packet streaming engine and ALSA PCM applications receives EPIPE from any
    I/O operation. In this case, typical applications manage to recover
    corresponding PCM substream. This behaviour is kicked much earlier than
    callback of bus reset handler by Linux FireWire subsystem, therefore
    status of packet streaming is not changed in the handler.
    
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    9b2bb4f2