diff options
Diffstat (limited to '')
| -rw-r--r-- | sound/firewire/amdtp.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c index f96bf4c7c232..95fc2eaf11dc 100644 --- a/sound/firewire/amdtp.c +++ b/sound/firewire/amdtp.c @@ -507,7 +507,16 @@ static void amdtp_pull_midi(struct amdtp_stream *s,  static void update_pcm_pointers(struct amdtp_stream *s,  				struct snd_pcm_substream *pcm,  				unsigned int frames) -{	unsigned int ptr; +{ +	unsigned int ptr; + +	/* +	 * In IEC 61883-6, one data block represents one event. In ALSA, one +	 * event equals to one PCM frame. But Dice has a quirk to transfer +	 * two PCM frames in one data block. +	 */ +	if (s->double_pcm_frames) +		frames *= 2;  	ptr = s->pcm_buffer_pointer + frames;  	if (ptr >= pcm->runtime->buffer_size)  | 
