static void fimg2d_request_bitblt(struct fimg2d_context *ctx)
{
	if (!atomic_read(&info->active)) {
		atomic_set(&info->active, 1);
		fimg2d_debug("dispatch ctx %p to kernel thread\n", ctx);
		queue_work(info->work_q, &fimg2d_work);
	}
	fimg2d_context_wait(ctx);
}
示例#2
0
static int fimg2d_request_bitblt(struct fimg2d_control *ctrl,
		struct fimg2d_context *ctx)
{
#ifdef BLIT_WORKQUE
	unsigned long flags;

	g2d_spin_lock(&ctrl->bltlock, flags);
	fimg2d_debug("dispatch ctx %p to kernel thread\n", ctx);
	queue_work(ctrl->work_q, &fimg2d_work);
	g2d_spin_unlock(&ctrl->bltlock, flags);
	return fimg2d_context_wait(ctx);
#else
	return fimg2d_do_bitblt(ctrl);
#endif
}