static int fimg2d_setup_controller(struct fimg2d_control *info)
{
	atomic_set(&info->suspended, 0);
	atomic_set(&info->clkon, 0);
	atomic_set(&info->busy, 0);
	atomic_set(&info->nctx, 0);
	atomic_set(&info->active, 0);

	spin_lock_init(&info->bltlock);

	INIT_LIST_HEAD(&info->cmd_q);
	init_waitqueue_head(&info->wait_q);
	fimg2d_register_ops(info);

	info->work_q = create_singlethread_workqueue("kfimg2dd");
	if (!info->work_q)
		return -ENOMEM;

	return 0;
}
示例#2
0
static int fimg2d_setup_controller(struct fimg2d_control *ctrl)
{
	atomic_set(&ctrl->drvact, DRV_ACT);
	atomic_set(&ctrl->suspended, 0);
	atomic_set(&ctrl->clkon, 0);
	atomic_set(&ctrl->busy, 0);
	atomic_set(&ctrl->nctx, 0);

	spin_lock_init(&ctrl->bltlock);
	mutex_init(&ctrl->drvlock);

	INIT_LIST_HEAD(&ctrl->cmd_q);
	init_waitqueue_head(&ctrl->wait_q);
	fimg2d_register_ops(ctrl);

#ifdef BLIT_WORKQUE
	ctrl->work_q = create_singlethread_workqueue("kfimg2dd");
	if (!ctrl->work_q)
		return -ENOMEM;
#endif

	return 0;
}