• T
    ALSA: oxfw: fix for Stanton SCS.1d · 41dbc792
    Takashi Sakamoto 提交于
    Stanton SCS.1d uses Oxford Semiconductor FW 971 ASIC (FW971) for
    communication. Although the unit is bound to ALSA oxfw driver, the instance
    of sound card can not be added due to its quirk of plug information. This
    bug was added when snd-scs1x is merged into snd-oxfw at commit
    9e2004f9 ("ALSA: oxfw: obsolete scs1x module").
    
    This commit fixes the driver for the quirk. In cases that the unit returns
    NOT IMPLEMENTED for some AV/C commands, the sound card is added without any
    PCM/MIDI interfaces for packet streaming. For SCS.1d, model dependent
    operation adds MIDI interface and applications can use it to operate
    according to HSS1394 protocol from reverse-engineering work by Sean M.
    Pappalardo.
    
    Plug Control Register (PCR) has information that the unit has a pair of
    plugs for isochronous communication:
    
    (oMPR)
    $ ./firewire-request /dev/fw1 read 0xfffff0000900
    result: 80ff0001
    (iMPR)
    $ ./firewire-request /dev/fw1 read 0xfffff0000980
    result: 80ff0001
    
    AV/C PLUG INFO also returns information that the unit has a pair of
    plugs for isochronous communication.
    
    (AV/C PLUG INFO command)
    $ ./firewire-request /dev/fw1 fcp 0x01ff0200ffffffff
    response: 000: 0c ff 02 00 01 01 02 02
    
    However, AV/C PLUG SIGNAL INFO command is rejected for both plugs.
    
    (AV/C OUTPUT PLUG SIGNAL INFO command)
    $ ./firewire-request /dev/fw1 fcp 0x01ff1800ffffffff
    response: 000: 0a ff 18 00 ff ff ff ff
    (AV/C INPUT PLUG SIGNAL INFO command)
    $ ./firewire-request /dev/fw1 fcp 0x01ff1900ffffffff
    response: 000: 0a ff 19 00 ff ff ff ff
    
    Furthermore, AV/C EXTENDED STREAM FORMAT INFO is not implemented.
    
    (AV/C EXTENDED STREAM FORMAT INFO list subfunction for input plug)
    $ ./firewire-request /dev/fw1 fcp 0x01ffbfc000000000ffff00ff
    response: 000: 08 ff bf c0 00 00 00 00 ff ff 00 ff
    (AV/C EXTENDED STREAM FORMAT INFO list subfunction for output plug)
    $ ./firewire-request /dev/fw1 fcp 0x01ffbfc001000000ffff00ff
    response: 000: 08 ff bf c0 01 00 00 00 ff ff 00 ff
    (AV/C EXTENDED STREAM FORMAT INFO single subfunction for input plug)
    $ ./firewire-request /dev/fw1 fcp 0x01ffbfc100000000ffffffff
    response: 000: 08 ff bf c1 00 00 00 00 ff ff ff ff
    (AV/C EXTENDED STREAM FORMAT INFO single subfunction for output plug)
    $ ./firewire-request /dev/fw1 fcp 0x01ffbfc101000000ffffffff
    response: 000: 08 ff bf c1 01 00 00 00 ff ff ff ff
    
    Reference: https://mailman.alsa-project.org/pipermail/alsa-devel/2012-May/052264.htmlSigned-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20200113073418.24622-4-o-takashi@sakamocchi.jpSigned-off-by: NTakashi Iwai <tiwai@suse.de>
    41dbc792
oxfw-stream.c 18.5 KB