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; }
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; }