static void fimc_is_ixc_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; struct fimc_is_subdev *subdev; BUG_ON(!vctx); BUG_ON(!GET_DEVICE(vctx)); BUG_ON(!GET_VIDEO(vctx)); #ifdef DBG_STREAMING mdbgv_ixc("%s(%d)\n", vctx, __func__, vb->v4l2_buf.index); #endif device = GET_DEVICE(vctx); video = GET_VIDEO(vctx); queue = GET_QUEUE(vctx); subdev = &device->ixc; 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_subdev_buffer_queue(subdev, vb->v4l2_buf.index); if (ret) { merr("fimc_is_subdev_buffer_queue is fail(%d)", device, ret); return; } }
static void fimc_is_scp_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; struct fimc_is_subdev *subdev; BUG_ON(!vctx); #ifdef DBG_STREAMING dbg_scp("%s\n", __func__); #endif queue = GET_DST_QUEUE(vctx); video = vctx->video; device = vctx->device; subdev = &device->scp; ret = fimc_is_queue_buffer_queue(queue, video->vb2, vb); if (ret) { merr("fimc_is_queue_buffer_queue is fail(%d)", vctx, ret); return; } ret = fimc_is_subdev_buffer_queue(subdev, vb->v4l2_buf.index); if (ret) { merr("fimc_is_subdev_buffer_queue is fail(%d)", vctx, ret); return; } }
static void fimc_is_3a1_buffer_queue(struct vb2_buffer *vb) { u32 index; struct fimc_is_video_ctx *vctx = vb->vb2_queue->drv_priv; struct fimc_is_device_ischain *device; struct fimc_is_subdev *leader; struct fimc_is_video *video; struct fimc_is_queue *queue; BUG_ON(!vctx); index = vb->v4l2_buf.index; #ifdef DBG_STREAMING mdbgv_3a1("%s(%02d:%d)\n", vctx, __func__, vb->v4l2_buf.type, index); #endif video = vctx->video; device = vctx->device; leader = &device->group_3ax.leader; if (V4L2_TYPE_IS_OUTPUT(vb->v4l2_buf.type)) { queue = GET_SRC_QUEUE(vctx); fimc_is_queue_buffer_queue(queue, video->vb2, vb); fimc_is_ischain_3a1_buffer_queue(device, queue, index); } else { queue = GET_DST_QUEUE(vctx); fimc_is_queue_buffer_queue(queue, video->vb2, vb); fimc_is_subdev_buffer_queue(leader, index); } }
static void fimc_is_scc_buffer_queue(struct vb2_buffer *vb) { struct fimc_is_video_ctx *video_ctx = vb->vb2_queue->drv_priv; struct fimc_is_device_ischain *ischain = video_ctx->device; struct fimc_is_subdev *scc = &ischain->scc; #ifdef DBG_STREAMING dbg_scc("%s\n", __func__); #endif fimc_is_video_buffer_queue(video_ctx, vb, &scc->framemgr); fimc_is_subdev_buffer_queue(scc, vb->v4l2_buf.index); }
static void fimc_is_scc_buffer_queue(struct vb2_buffer *vb) { struct fimc_is_video_ctx *vctx = vb->vb2_queue->drv_priv; struct fimc_is_queue *queue = &vctx->q_dst; struct fimc_is_video *video = vctx->video; struct fimc_is_device_ischain *ischain = vctx->device; struct fimc_is_subdev *scc = &ischain->scc; #ifdef DBG_STREAMING dbg_scc("%s\n", __func__); #endif fimc_is_queue_buffer_queue(queue, video->vb2, vb); fimc_is_subdev_buffer_queue(scc, vb->v4l2_buf.index); }