mbox series

[0/2] ALSA: firewire-tascam: fix to handle error code to read status of sampling clock

Message ID 20190910135152.29800-1-o-takashi@sakamocchi.jp (mailing list archive)
Headers show
Series ALSA: firewire-tascam: fix to handle error code to read status of sampling clock | expand

Message

Takashi Sakamoto Sept. 10, 2019, 1:51 p.m. UTC
Hi,

ALSA firewire-tascam driver has a bug not to check return value from
a call of snd_tscm_stream_get_clock() since its first commit. This
patchset fixes the bug.

In models of TASCAM FIreWire series, the status of sampling clock is
represented in 2 bytes in MSB of a certain register. These bits are
zero in intermediate state after configuring the sampling clock. This
behaviour sometimes takes ALSA PCM applications to receive error when
starting both playback/capture PCM substreams because the operation to
start one PCM substream can change the sampling clock. In this case,
next operation for another PCM substream possible fails.

This patchset adds check and retry for the above case. Although the
change is a bit intrusive for stable releases, it's required to avoid
superficial regression due to the additional error check.

Takashi Sakamoto (2):
  ALSA: firewire-tascam: handle error code when getting current source
    of clock
  ALSA: firewire-tascam: check intermediate state of clock status and
    retry

 sound/firewire/tascam/tascam-pcm.c    |  3 ++
 sound/firewire/tascam/tascam-stream.c | 42 ++++++++++++++++++---------
 2 files changed, 31 insertions(+), 14 deletions(-)