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(-)