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,