• Takashi Sakamoto's avatar
    ALSA: firewire-lib/dice: add arrangements of PCM pointer and interrupts for Dice quirk · 65845f29
    Takashi Sakamoto authored
    In IEC 61883-6, one data block transfers one event. In ALSA, the event equals one PCM frame,
    hence one data block transfers one PCM frame. But Dice has a quirk at higher sampling rate
    (176.4/192.0 kHz) that one data block transfers two PCM frames.
    
    Commit 10550bea ("ALSA: dice/firewire-lib: Keep dualwire mode but obsolete
    CIP_HI_DUALWIRE") moved some codes related to this quirk into Dice driver. But the commit
    forgot to add arrangements for PCM period interrupts and DMA pointer updates. As a result, Dice
    driver cannot work correctly at higher sampling rate.
    
    This commit adds 'double_pcm_frames' parameter to amdtp structure for this quirk. When this
    parameter is set, PCM period interrupts and DMA pointer updates occur at double speed than in
    IEC 61883-6.
    Reported-by: default avatarDaniel Robbins <drobbins@funtoo.org>
    Fixes: 10550bea ("ALSA: dice/firewire-lib: Keep dualwire mode but obsolete CIP_HI_DUALWIRE")
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Cc: <stable@vger.kernel.org> # 3.16
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    65845f29
dice.c 36.8 KB