diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c index 09f70ee4d04a..046007ddbcae 100644 --- a/sound/firewire/amdtp.c +++ b/sound/firewire/amdtp.c @@ -228,11 +228,15 @@ static unsigned int calculate_syt(struct amdtp_out_stream *s, syt_offset = s->last_syt_offset - TICKS_PER_CYCLE; s->last_syt_offset = syt_offset; - syt_offset += TRANSFER_DELAY_TICKS - TICKS_PER_CYCLE; - syt = (cycle + syt_offset / TICKS_PER_CYCLE) << 12; - syt += syt_offset % TICKS_PER_CYCLE; + if (syt_offset < TICKS_PER_CYCLE) { + syt_offset += TRANSFER_DELAY_TICKS - TICKS_PER_CYCLE; + syt = (cycle + syt_offset / TICKS_PER_CYCLE) << 12; + syt += syt_offset % TICKS_PER_CYCLE; - return syt & 0xffff; + return syt & 0xffff; + } else { + return 0xffff; /* no info */ + } } static void amdtp_write_s32(struct amdtp_out_stream *s,