• Takashi Sakamoto's avatar
    ALSA: firewire-lib: add no-header packet processing · 3b196c39
    Takashi Sakamoto authored
    As long as investigating Fireface 400, IEC 61883-1/6 is not applied to
    its packet streaming protocol. Remarks of the specific protocol are:
     * Each packet doesn't include CIP headers.
     * 64,0 and 128,0 kHz are supported.
     * The device doesn't necessarily transmit 8,000 packets per second.
     * 0, 1, 2, 3 are used as tag for rx isochronous packets, however 0 is
       used for tx isochronous packets.
    
    On the other hand, there's a common feature. The number of data blocks
    transferred in a second is the same as sampling transmission frequency.
    Current ALSA IEC 61883-1/6 engine already has a method to calculate it and
    this driver can utilize it for rx packets, as well as tx packets.
    
    This commit adds support for the transferring protocol. CIP_NO_HEADERS
    flag is newly added. When this flag is set:
     * Both of 0 (without CIP header) and 1 (with CIP header) are used as tag
       to handle incoming isochronous packet.
     * 0 (without CIP header) is used as tag to transfer outgoing isochronous
       packet.
     * Skip CIP header evaluation.
     * Use unique way to calculate the quadlets of isochronous packet payload.
    
    In ALSA PCM interface, 128.0 kHz is not supported, and the ALSA
    IEC 61883-1/6 engine doesn't support 64.0 kHz. These modes are dropped.
    
    The sequence of rx packet has a remarkable quirk about tag. This will be
    described in later commits.
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    3b196c39
amdtp-stream.c 26.6 KB