static int fimc_is_dis_start_streaming(struct vb2_queue *vbq, unsigned int count) { int ret = 0; struct fimc_is_video_ctx *vctx = vbq->drv_priv; struct fimc_is_queue *queue; struct fimc_is_device_ischain *device; BUG_ON(!vctx); BUG_ON(!GET_DEVICE(vctx)); mdbgv_dis("%s\n", vctx, __func__); device = GET_DEVICE(vctx); queue = GET_QUEUE(vctx); ret = fimc_is_queue_start_streaming(queue, device); if (ret) { merr("fimc_is_queue_start_streaming is fail(%d)", device, ret); goto p_err; } p_err: return ret; }
static void fimc_is_dis_buffer_queue(struct vb2_buffer *vb) { int ret = 0; struct fimc_is_video_ctx *vctx = vb->vb2_queue->drv_priv; struct fimc_is_queue *queue; struct fimc_is_video *video; struct fimc_is_device_ischain *device; BUG_ON(!vctx); BUG_ON(!GET_DEVICE(vctx)); BUG_ON(!GET_VIDEO(vctx)); #ifdef DBG_STREAMING mdbgv_dis("%s(%d)\n", vctx, __func__, vb->v4l2_buf.index); #endif device = GET_DEVICE(vctx); video = GET_VIDEO(vctx); queue = GET_QUEUE(vctx); ret = fimc_is_queue_buffer_queue(queue, video->vb2, vb); if (ret) { merr("fimc_is_queue_buffer_queue is fail(%d)", device, ret); return; } ret = fimc_is_ischain_dis_buffer_queue(device, queue, vb->v4l2_buf.index); if (ret) { merr("fimc_is_ischain_dis_buffer_queue is fail(%d)", device, ret); return; } }
static int fimc_is_dis_video_s_input(struct file *file, void *priv, unsigned int input) { int ret = 0; u32 stream, module, vindex, memory, leader; struct fimc_is_video_ctx *vctx = file->private_data; struct fimc_is_device_ischain *device; BUG_ON(!vctx); BUG_ON(!vctx->device); mdbgv_dis("%s(input : %08X)\n", vctx, __func__, input); device = GET_DEVICE(vctx); stream = (input & INPUT_STREAM_MASK) >> INPUT_STREAM_SHIFT; module = (input & INPUT_MODULE_MASK) >> INPUT_MODULE_SHIFT; vindex = (input & INPUT_VINDEX_MASK) >> INPUT_VINDEX_SHIFT; memory = (input & INPUT_MEMORY_MASK) >> INPUT_MEMORY_SHIFT; leader = (input & INPUT_LEADER_MASK) >> INPUT_LEADER_SHIFT; ret = fimc_is_video_s_input(file, vctx); if (ret) { merr("fimc_is_video_s_input is fail(%d)", vctx, ret); goto p_err; } ret = fimc_is_ischain_dis_s_input(device, stream, module, vindex, memory, leader); if (ret) { merr("fimc_is_ischain_isp_s_input is fail(%d)", vctx, ret); goto p_err; } p_err: return ret; }
static int fimc_is_dis_video_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl) { int ret = 0; struct fimc_is_video_ctx *vctx = file->private_data; struct fimc_is_device_ischain *device; BUG_ON(!vctx); BUG_ON(!GET_DEVICE(vctx)); BUG_ON(!ctrl); mdbgv_dis("%s\n", vctx, __func__); device = GET_DEVICE(vctx); switch (ctrl->id) { case V4L2_CID_IS_FORCE_DONE: set_bit(FIMC_IS_GROUP_REQUEST_FSTOP, &device->group_dis.state); break; default: ret = fimc_is_video_s_ctrl(file, vctx, ctrl); if (ret) { err("fimc_is_video_s_ctrl is fail(%d)", ret); goto p_err; } break; } p_err: return ret; }
static int fimc_is_dis_video_qbuf(struct file *file, void *priv, struct v4l2_buffer *buf) { int ret = 0; struct fimc_is_video_ctx *vctx = file->private_data; struct fimc_is_device_ischain *device; struct fimc_is_queue *queue; #ifdef DBG_STREAMING mdbgv_dis("%s\n", vctx, __func__); #endif device = GET_DEVICE(vctx); queue = GET_QUEUE(vctx); if (!test_bit(FIMC_IS_QUEUE_STREAM_ON, &queue->state)) { merr("stream off state, can NOT qbuf", vctx); ret = -EINVAL; goto p_err; } ret = fimc_is_video_qbuf(file, vctx, buf); if (ret) merr("fimc_is_video_qbuf is fail(%d)", vctx, ret); p_err: return ret; }
static int fimc_is_scc_video_querybuf(struct file *file, void *priv, struct v4l2_buffer *buf) { int ret; struct fimc_is_video_ctx *vctx = file->private_data; mdbgv_dis("%s\n", vctx, __func__); ret = fimc_is_video_querybuf(file, vctx, buf); if (ret) merr("fimc_is_video_querybuf is fail(%d)", vctx, ret); return ret; }
static int fimc_is_dis_video_streamoff(struct file *file, void *priv, enum v4l2_buf_type type) { int ret = 0; struct fimc_is_video_ctx *vctx = file->private_data; mdbgv_dis("%s\n", vctx, __func__); ret = fimc_is_video_streamoff(file, vctx, type); if (ret) merr("fimc_is_video_streamoff is fail(%d)", vctx, ret); return ret; }
static int fimc_is_dis_video_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *buf) { int ret; struct fimc_is_video_ctx *vctx = file->private_data; mdbgv_dis("%s(buffers : %d)\n", vctx, __func__, buf->count); ret = fimc_is_video_reqbufs(file, vctx, buf); if (ret) merr("fimc_is_video_reqbufs is fail(error %d)", vctx, ret); return ret; }
static int fimc_is_dis_video_dqbuf(struct file *file, void *priv, struct v4l2_buffer *buf) { int ret = 0; struct fimc_is_video_ctx *vctx = file->private_data; #ifdef DBG_STREAMING mdbgv_dis("%s\n", vctx, __func__); #endif ret = fimc_is_video_dqbuf(file, vctx, buf); if (ret) merr("fimc_is_video_dqbuf is fail(%d)", vctx, ret); return ret; }
static int fimc_is_dis_video_set_format_mplane(struct file *file, void *fh, struct v4l2_format *format) { int ret = 0; struct fimc_is_video_ctx *vctx = file->private_data; BUG_ON(!vctx); BUG_ON(!format); mdbgv_dis("%s\n", vctx, __func__); ret = fimc_is_video_set_format_mplane(file, vctx, format); if (ret) { merr("fimc_is_video_set_format_mplane is fail(%d)", vctx, ret); goto p_err; } p_err: return ret; }
static int fimc_is_dis_buffer_finish(struct vb2_buffer *vb) { int ret = 0; struct fimc_is_video_ctx *vctx = vb->vb2_queue->drv_priv; struct fimc_is_device_ischain *device = vctx->device; BUG_ON(!vctx); BUG_ON(!GET_DEVICE(vctx)); #ifdef DBG_STREAMING mdbgv_dis("%s(%d)\n", vctx, __func__, vb->v4l2_buf.index); #endif device = GET_DEVICE(vctx); ret = fimc_is_ischain_dis_buffer_finish(device, vb->v4l2_buf.index); if (ret) { merr("fimc_is_ischain_dis_buffer_finish is fail(%d)", device, ret); goto p_err; } p_err: return ret; }