I don't know this code at all, so this is likely just noise, but the wait_event_timeout() usage in decon_wait_for_vblank() looks funny to me. decon_wait_for_vblank() waits on wait_vsync_queue for wait_vsync_event to be cleared. But decon_irq_handler() only clears wait_vsync_event and wakes up wait_vsync_queue when !ctx->i80_if. I don't see any i80_if connection in decon_wait_for_vblank(). Does the wait always time out if i80_if is set? Is there some reason we don't use decon_wait_for_vblank() at all if i80_if is set? Bjorn