Lines Matching refs:cap

63 	void (*config)(struct rkisp1_capture *cap);
64 void (*stop)(struct rkisp1_capture *cap);
65 void (*enable)(struct rkisp1_capture *cap);
66 void (*disable)(struct rkisp1_capture *cap);
67 void (*set_data_path)(struct rkisp1_capture *cap);
68 bool (*is_stopped)(struct rkisp1_capture *cap);
345 int rkisp1_cap_enum_mbus_codes(struct rkisp1_capture *cap, in rkisp1_cap_enum_mbus_codes() argument
348 const struct rkisp1_capture_fmt_cfg *fmts = cap->config->fmts; in rkisp1_cap_enum_mbus_codes()
356 for (i = 0; i < cap->config->fmt_size; i++) { in rkisp1_cap_enum_mbus_codes()
373 static void rkisp1_mi_config_ctrl(struct rkisp1_capture *cap) in rkisp1_mi_config_ctrl() argument
375 u32 mi_ctrl = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL); in rkisp1_mi_config_ctrl()
386 rkisp1_write(cap->rkisp1, mi_ctrl, RKISP1_CIF_MI_CTRL); in rkisp1_mi_config_ctrl()
402 static void rkisp1_irq_frame_end_enable(struct rkisp1_capture *cap) in rkisp1_irq_frame_end_enable() argument
404 u32 mi_imsc = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_IMSC); in rkisp1_irq_frame_end_enable()
406 mi_imsc |= RKISP1_CIF_MI_FRAME(cap); in rkisp1_irq_frame_end_enable()
407 rkisp1_write(cap->rkisp1, mi_imsc, RKISP1_CIF_MI_IMSC); in rkisp1_irq_frame_end_enable()
410 static void rkisp1_mp_config(struct rkisp1_capture *cap) in rkisp1_mp_config() argument
412 const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; in rkisp1_mp_config()
413 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_mp_config()
417 cap->config->mi.y_size_init); in rkisp1_mp_config()
419 cap->config->mi.cb_size_init); in rkisp1_mp_config()
421 cap->config->mi.cr_size_init); in rkisp1_mp_config()
423 rkisp1_irq_frame_end_enable(cap); in rkisp1_mp_config()
426 if (cap->pix.info->comp_planes == 2) { in rkisp1_mp_config()
428 if (cap->pix.cfg->uv_swap) in rkisp1_mp_config()
435 rkisp1_mi_config_ctrl(cap); in rkisp1_mp_config()
439 reg |= cap->pix.cfg->write_format; in rkisp1_mp_config()
447 static void rkisp1_sp_config(struct rkisp1_capture *cap) in rkisp1_sp_config() argument
449 const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; in rkisp1_sp_config()
450 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_sp_config()
454 cap->config->mi.y_size_init); in rkisp1_sp_config()
456 cap->config->mi.cb_size_init); in rkisp1_sp_config()
458 cap->config->mi.cr_size_init); in rkisp1_sp_config()
462 rkisp1_write(rkisp1, cap->sp_y_stride, RKISP1_CIF_MI_SP_Y_LLENGTH); in rkisp1_sp_config()
464 rkisp1_irq_frame_end_enable(cap); in rkisp1_sp_config()
467 if (cap->pix.info->comp_planes == 2) { in rkisp1_sp_config()
469 if (cap->pix.cfg->uv_swap) in rkisp1_sp_config()
476 rkisp1_mi_config_ctrl(cap); in rkisp1_sp_config()
480 mi_ctrl |= cap->pix.cfg->write_format | in rkisp1_sp_config()
482 cap->pix.cfg->output_format | in rkisp1_sp_config()
487 static void rkisp1_mp_disable(struct rkisp1_capture *cap) in rkisp1_mp_disable() argument
489 u32 mi_ctrl = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL); in rkisp1_mp_disable()
493 rkisp1_write(cap->rkisp1, mi_ctrl, RKISP1_CIF_MI_CTRL); in rkisp1_mp_disable()
496 static void rkisp1_sp_disable(struct rkisp1_capture *cap) in rkisp1_sp_disable() argument
498 u32 mi_ctrl = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL); in rkisp1_sp_disable()
501 rkisp1_write(cap->rkisp1, mi_ctrl, RKISP1_CIF_MI_CTRL); in rkisp1_sp_disable()
504 static void rkisp1_mp_enable(struct rkisp1_capture *cap) in rkisp1_mp_enable() argument
508 rkisp1_mp_disable(cap); in rkisp1_mp_enable()
510 mi_ctrl = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL); in rkisp1_mp_enable()
511 if (v4l2_is_format_bayer(cap->pix.info)) in rkisp1_mp_enable()
517 rkisp1_write(cap->rkisp1, mi_ctrl, RKISP1_CIF_MI_CTRL); in rkisp1_mp_enable()
520 static void rkisp1_sp_enable(struct rkisp1_capture *cap) in rkisp1_sp_enable() argument
522 u32 mi_ctrl = rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL); in rkisp1_sp_enable()
525 rkisp1_write(cap->rkisp1, mi_ctrl, RKISP1_CIF_MI_CTRL); in rkisp1_sp_enable()
528 static void rkisp1_mp_sp_stop(struct rkisp1_capture *cap) in rkisp1_mp_sp_stop() argument
530 if (!cap->is_streaming) in rkisp1_mp_sp_stop()
532 rkisp1_write(cap->rkisp1, in rkisp1_mp_sp_stop()
533 RKISP1_CIF_MI_FRAME(cap), RKISP1_CIF_MI_ICR); in rkisp1_mp_sp_stop()
534 cap->ops->disable(cap); in rkisp1_mp_sp_stop()
537 static bool rkisp1_mp_is_stopped(struct rkisp1_capture *cap) in rkisp1_mp_is_stopped() argument
542 return !(rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL_SHD) & en); in rkisp1_mp_is_stopped()
545 static bool rkisp1_sp_is_stopped(struct rkisp1_capture *cap) in rkisp1_sp_is_stopped() argument
547 return !(rkisp1_read(cap->rkisp1, RKISP1_CIF_MI_CTRL_SHD) & in rkisp1_sp_is_stopped()
551 static void rkisp1_mp_set_data_path(struct rkisp1_capture *cap) in rkisp1_mp_set_data_path() argument
553 u32 dpcl = rkisp1_read(cap->rkisp1, RKISP1_CIF_VI_DPCL); in rkisp1_mp_set_data_path()
557 rkisp1_write(cap->rkisp1, dpcl, RKISP1_CIF_VI_DPCL); in rkisp1_mp_set_data_path()
560 static void rkisp1_sp_set_data_path(struct rkisp1_capture *cap) in rkisp1_sp_set_data_path() argument
562 u32 dpcl = rkisp1_read(cap->rkisp1, RKISP1_CIF_VI_DPCL); in rkisp1_sp_set_data_path()
565 rkisp1_write(cap->rkisp1, dpcl, RKISP1_CIF_VI_DPCL); in rkisp1_sp_set_data_path()
590 static int rkisp1_dummy_buf_create(struct rkisp1_capture *cap) in rkisp1_dummy_buf_create() argument
592 const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; in rkisp1_dummy_buf_create()
593 struct rkisp1_dummy_buffer *dummy_buf = &cap->buf.dummy; in rkisp1_dummy_buf_create()
600 dummy_buf->vaddr = dma_alloc_attrs(cap->rkisp1->dev, in rkisp1_dummy_buf_create()
611 static void rkisp1_dummy_buf_destroy(struct rkisp1_capture *cap) in rkisp1_dummy_buf_destroy() argument
613 dma_free_attrs(cap->rkisp1->dev, in rkisp1_dummy_buf_destroy()
614 cap->buf.dummy.size, cap->buf.dummy.vaddr, in rkisp1_dummy_buf_destroy()
615 cap->buf.dummy.dma_addr, DMA_ATTR_NO_KERNEL_MAPPING); in rkisp1_dummy_buf_destroy()
618 static void rkisp1_set_next_buf(struct rkisp1_capture *cap) in rkisp1_set_next_buf() argument
620 cap->buf.curr = cap->buf.next; in rkisp1_set_next_buf()
621 cap->buf.next = NULL; in rkisp1_set_next_buf()
623 if (!list_empty(&cap->buf.queue)) { in rkisp1_set_next_buf()
626 cap->buf.next = list_first_entry(&cap->buf.queue, struct rkisp1_buffer, queue); in rkisp1_set_next_buf()
627 list_del(&cap->buf.next->queue); in rkisp1_set_next_buf()
629 buff_addr = cap->buf.next->buff_addr; in rkisp1_set_next_buf()
631 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
633 cap->config->mi.y_base_ad_init); in rkisp1_set_next_buf()
634 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
636 cap->config->mi.cb_base_ad_init); in rkisp1_set_next_buf()
637 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
639 cap->config->mi.cr_base_ad_init); in rkisp1_set_next_buf()
645 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
646 cap->buf.dummy.dma_addr, in rkisp1_set_next_buf()
647 cap->config->mi.y_base_ad_init); in rkisp1_set_next_buf()
648 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
649 cap->buf.dummy.dma_addr, in rkisp1_set_next_buf()
650 cap->config->mi.cb_base_ad_init); in rkisp1_set_next_buf()
651 rkisp1_write(cap->rkisp1, in rkisp1_set_next_buf()
652 cap->buf.dummy.dma_addr, in rkisp1_set_next_buf()
653 cap->config->mi.cr_base_ad_init); in rkisp1_set_next_buf()
657 rkisp1_write(cap->rkisp1, 0, cap->config->mi.y_offs_cnt_init); in rkisp1_set_next_buf()
658 rkisp1_write(cap->rkisp1, 0, cap->config->mi.cb_offs_cnt_init); in rkisp1_set_next_buf()
659 rkisp1_write(cap->rkisp1, 0, cap->config->mi.cr_offs_cnt_init); in rkisp1_set_next_buf()
667 static void rkisp1_handle_buffer(struct rkisp1_capture *cap) in rkisp1_handle_buffer() argument
669 struct rkisp1_isp *isp = &cap->rkisp1->isp; in rkisp1_handle_buffer()
672 spin_lock(&cap->buf.lock); in rkisp1_handle_buffer()
673 curr_buf = cap->buf.curr; in rkisp1_handle_buffer()
681 cap->rkisp1->debug.frame_drop[cap->id]++; in rkisp1_handle_buffer()
684 rkisp1_set_next_buf(cap); in rkisp1_handle_buffer()
685 spin_unlock(&cap->buf.lock); in rkisp1_handle_buffer()
702 struct rkisp1_capture *cap = &rkisp1->capture_devs[i]; in rkisp1_capture_isr() local
704 if (!(status & RKISP1_CIF_MI_FRAME(cap))) in rkisp1_capture_isr()
706 if (!cap->is_stopping) { in rkisp1_capture_isr()
707 rkisp1_handle_buffer(cap); in rkisp1_capture_isr()
718 if (!cap->ops->is_stopped(cap)) { in rkisp1_capture_isr()
719 cap->ops->stop(cap); in rkisp1_capture_isr()
722 cap->is_stopping = false; in rkisp1_capture_isr()
723 cap->is_streaming = false; in rkisp1_capture_isr()
724 wake_up(&cap->done); in rkisp1_capture_isr()
740 struct rkisp1_capture *cap = queue->drv_priv; in rkisp1_vb2_queue_setup() local
741 const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; in rkisp1_vb2_queue_setup()
765 struct rkisp1_capture *cap = vb->vb2_queue->drv_priv; in rkisp1_vb2_buf_init() local
766 const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt; in rkisp1_vb2_buf_init()
787 if (cap->pix.info->comp_planes == 3 && cap->pix.cfg->uv_swap) in rkisp1_vb2_buf_init()
798 struct rkisp1_capture *cap = vb->vb2_queue->drv_priv; in rkisp1_vb2_buf_queue() local
800 spin_lock_irq(&cap->buf.lock); in rkisp1_vb2_buf_queue()
801 list_add_tail(&ispbuf->queue, &cap->buf.queue); in rkisp1_vb2_buf_queue()
802 spin_unlock_irq(&cap->buf.lock); in rkisp1_vb2_buf_queue()
807 struct rkisp1_capture *cap = vb->vb2_queue->drv_priv; in rkisp1_vb2_buf_prepare() local
810 for (i = 0; i < cap->pix.fmt.num_planes; i++) { in rkisp1_vb2_buf_prepare()
811 unsigned long size = cap->pix.fmt.plane_fmt[i].sizeimage; in rkisp1_vb2_buf_prepare()
814 dev_err(cap->rkisp1->dev, in rkisp1_vb2_buf_prepare()
825 static void rkisp1_return_all_buffers(struct rkisp1_capture *cap, in rkisp1_return_all_buffers() argument
830 spin_lock_irq(&cap->buf.lock); in rkisp1_return_all_buffers()
831 if (cap->buf.curr) { in rkisp1_return_all_buffers()
832 vb2_buffer_done(&cap->buf.curr->vb.vb2_buf, state); in rkisp1_return_all_buffers()
833 cap->buf.curr = NULL; in rkisp1_return_all_buffers()
835 if (cap->buf.next) { in rkisp1_return_all_buffers()
836 vb2_buffer_done(&cap->buf.next->vb.vb2_buf, state); in rkisp1_return_all_buffers()
837 cap->buf.next = NULL; in rkisp1_return_all_buffers()
839 while (!list_empty(&cap->buf.queue)) { in rkisp1_return_all_buffers()
840 buf = list_first_entry(&cap->buf.queue, in rkisp1_return_all_buffers()
845 spin_unlock_irq(&cap->buf.lock); in rkisp1_return_all_buffers()
854 static void rkisp1_cap_stream_enable(struct rkisp1_capture *cap) in rkisp1_cap_stream_enable() argument
856 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_cap_stream_enable()
857 struct rkisp1_capture *other = &rkisp1->capture_devs[cap->id ^ 1]; in rkisp1_cap_stream_enable()
859 cap->ops->set_data_path(cap); in rkisp1_cap_stream_enable()
860 cap->ops->config(cap); in rkisp1_cap_stream_enable()
863 spin_lock_irq(&cap->buf.lock); in rkisp1_cap_stream_enable()
864 rkisp1_set_next_buf(cap); in rkisp1_cap_stream_enable()
865 cap->ops->enable(cap); in rkisp1_cap_stream_enable()
879 rkisp1_set_next_buf(cap); in rkisp1_cap_stream_enable()
881 spin_unlock_irq(&cap->buf.lock); in rkisp1_cap_stream_enable()
882 cap->is_streaming = true; in rkisp1_cap_stream_enable()
885 static void rkisp1_cap_stream_disable(struct rkisp1_capture *cap) in rkisp1_cap_stream_disable() argument
890 cap->is_stopping = true; in rkisp1_cap_stream_disable()
891 ret = wait_event_timeout(cap->done, in rkisp1_cap_stream_disable()
892 !cap->is_streaming, in rkisp1_cap_stream_disable()
895 cap->rkisp1->debug.stop_timeout[cap->id]++; in rkisp1_cap_stream_disable()
896 cap->ops->stop(cap); in rkisp1_cap_stream_disable()
897 cap->is_stopping = false; in rkisp1_cap_stream_disable()
898 cap->is_streaming = false; in rkisp1_cap_stream_disable()
909 static void rkisp1_pipeline_stream_disable(struct rkisp1_capture *cap) in rkisp1_pipeline_stream_disable() argument
910 __must_hold(&cap->rkisp1->stream_lock) in rkisp1_pipeline_stream_disable()
912 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_pipeline_stream_disable()
914 rkisp1_cap_stream_disable(cap); in rkisp1_pipeline_stream_disable()
926 v4l2_subdev_call(&rkisp1->resizer_devs[cap->id].sd, video, s_stream, in rkisp1_pipeline_stream_disable()
936 static int rkisp1_pipeline_stream_enable(struct rkisp1_capture *cap) in rkisp1_pipeline_stream_enable() argument
937 __must_hold(&cap->rkisp1->stream_lock) in rkisp1_pipeline_stream_enable()
939 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_pipeline_stream_enable()
942 rkisp1_cap_stream_enable(cap); in rkisp1_pipeline_stream_enable()
944 ret = v4l2_subdev_call(&rkisp1->resizer_devs[cap->id].sd, video, in rkisp1_pipeline_stream_enable()
970 v4l2_subdev_call(&rkisp1->resizer_devs[cap->id].sd, video, s_stream, in rkisp1_pipeline_stream_enable()
973 rkisp1_cap_stream_disable(cap); in rkisp1_pipeline_stream_enable()
980 struct rkisp1_capture *cap = queue->drv_priv; in rkisp1_vb2_stop_streaming() local
981 struct rkisp1_vdev_node *node = &cap->vnode; in rkisp1_vb2_stop_streaming()
982 struct rkisp1_device *rkisp1 = cap->rkisp1; in rkisp1_vb2_stop_streaming()
985 mutex_lock(&cap->rkisp1->stream_lock); in rkisp1_vb2_stop_streaming()
987 rkisp1_pipeline_stream_disable(cap); in rkisp1_vb2_stop_streaming()
989 rkisp1_return_all_buffers(cap, VB2_BUF_STATE_ERROR); in rkisp1_vb2_stop_streaming()
996 rkisp1_dummy_buf_destroy(cap); in rkisp1_vb2_stop_streaming()
1000 mutex_unlock(&cap->rkisp1->stream_lock); in rkisp1_vb2_stop_streaming()
1006 struct rkisp1_capture *cap = queue->drv_priv; in rkisp1_vb2_start_streaming() local
1007 struct media_entity *entity = &cap->vnode.vdev.entity; in rkisp1_vb2_start_streaming()
1010 mutex_lock(&cap->rkisp1->stream_lock); in rkisp1_vb2_start_streaming()
1012 ret = media_pipeline_start(entity, &cap->rkisp1->pipe); in rkisp1_vb2_start_streaming()
1014 dev_err(cap->rkisp1->dev, "start pipeline failed %d\n", ret); in rkisp1_vb2_start_streaming()
1018 ret = rkisp1_dummy_buf_create(cap); in rkisp1_vb2_start_streaming()
1022 ret = pm_runtime_resume_and_get(cap->rkisp1->dev); in rkisp1_vb2_start_streaming()
1024 dev_err(cap->rkisp1->dev, "power up failed %d\n", ret); in rkisp1_vb2_start_streaming()
1029 dev_err(cap->rkisp1->dev, "open cif pipeline failed %d\n", ret); in rkisp1_vb2_start_streaming()
1033 ret = rkisp1_pipeline_stream_enable(cap); in rkisp1_vb2_start_streaming()
1037 mutex_unlock(&cap->rkisp1->stream_lock); in rkisp1_vb2_start_streaming()
1044 pm_runtime_put(cap->rkisp1->dev); in rkisp1_vb2_start_streaming()
1046 rkisp1_dummy_buf_destroy(cap); in rkisp1_vb2_start_streaming()
1050 rkisp1_return_all_buffers(cap, VB2_BUF_STATE_QUEUED); in rkisp1_vb2_start_streaming()
1051 mutex_unlock(&cap->rkisp1->stream_lock); in rkisp1_vb2_start_streaming()
1116 rkisp1_find_fmt_cfg(const struct rkisp1_capture *cap, const u32 pixelfmt) in rkisp1_find_fmt_cfg() argument
1120 for (i = 0; i < cap->config->fmt_size; i++) { in rkisp1_find_fmt_cfg()
1121 if (cap->config->fmts[i].fourcc == pixelfmt) in rkisp1_find_fmt_cfg()
1122 return &cap->config->fmts[i]; in rkisp1_find_fmt_cfg()
1127 static void rkisp1_try_fmt(const struct rkisp1_capture *cap, in rkisp1_try_fmt() argument
1132 const struct rkisp1_capture_config *config = cap->config; in rkisp1_try_fmt()
1140 fmt = rkisp1_find_fmt_cfg(cap, pixm->pixelformat); in rkisp1_try_fmt()
1147 RKISP1_RSZ_SRC_MIN_WIDTH, max_widths[cap->id]); in rkisp1_try_fmt()
1149 RKISP1_RSZ_SRC_MIN_HEIGHT, max_heights[cap->id]); in rkisp1_try_fmt()
1156 info = rkisp1_fill_pixfmt(pixm, cap->id); in rkisp1_try_fmt()
1164 static void rkisp1_set_fmt(struct rkisp1_capture *cap, in rkisp1_set_fmt() argument
1167 rkisp1_try_fmt(cap, pixm, &cap->pix.cfg, &cap->pix.info); in rkisp1_set_fmt()
1168 cap->pix.fmt = *pixm; in rkisp1_set_fmt()
1171 if (cap->id == RKISP1_SELFPATH) in rkisp1_set_fmt()
1172 cap->sp_y_stride = pixm->plane_fmt[0].bytesperline / in rkisp1_set_fmt()
1173 cap->pix.info->bpp[0]; in rkisp1_set_fmt()
1179 struct rkisp1_capture *cap = video_drvdata(file); in rkisp1_try_fmt_vid_cap_mplane() local
1181 rkisp1_try_fmt(cap, &f->fmt.pix_mp, NULL, NULL); in rkisp1_try_fmt_vid_cap_mplane()
1189 struct rkisp1_capture *cap = video_drvdata(file); in rkisp1_enum_fmt_vid_cap_mplane() local
1194 if (f->index >= cap->config->fmt_size) in rkisp1_enum_fmt_vid_cap_mplane()
1197 fmt = &cap->config->fmts[f->index]; in rkisp1_enum_fmt_vid_cap_mplane()
1202 for (i = 0; i < cap->config->fmt_size; i++) { in rkisp1_enum_fmt_vid_cap_mplane()
1203 if (cap->config->fmts[i].mbus != f->mbus_code) in rkisp1_enum_fmt_vid_cap_mplane()
1207 f->pixelformat = cap->config->fmts[i].fourcc; in rkisp1_enum_fmt_vid_cap_mplane()
1217 struct rkisp1_capture *cap = video_drvdata(file); in rkisp1_s_fmt_vid_cap_mplane() local
1219 rkisp1_vdev_to_node(&cap->vnode.vdev); in rkisp1_s_fmt_vid_cap_mplane()
1224 rkisp1_set_fmt(cap, &f->fmt.pix_mp); in rkisp1_s_fmt_vid_cap_mplane()
1232 struct rkisp1_capture *cap = video_drvdata(file); in rkisp1_g_fmt_vid_cap_mplane() local
1234 f->fmt.pix_mp = cap->pix.fmt; in rkisp1_g_fmt_vid_cap_mplane()
1240 rkisp1_querycap(struct file *file, void *priv, struct v4l2_capability *cap) in rkisp1_querycap() argument
1245 strscpy(cap->driver, rkisp1->dev->driver->name, sizeof(cap->driver)); in rkisp1_querycap()
1246 strscpy(cap->card, rkisp1->dev->driver->name, sizeof(cap->card)); in rkisp1_querycap()
1247 strscpy(cap->bus_info, RKISP1_BUS_INFO, sizeof(cap->bus_info)); in rkisp1_querycap()
1277 struct rkisp1_capture *cap = video_get_drvdata(vdev); in rkisp1_capture_link_validate() local
1279 rkisp1_find_fmt_cfg(cap, cap->pix.fmt.pixelformat); in rkisp1_capture_link_validate()
1289 if (sd_fmt.format.height != cap->pix.fmt.height || in rkisp1_capture_link_validate()
1290 sd_fmt.format.width != cap->pix.fmt.width || in rkisp1_capture_link_validate()
1313 static void rkisp1_unregister_capture(struct rkisp1_capture *cap) in rkisp1_unregister_capture() argument
1315 media_entity_cleanup(&cap->vnode.vdev.entity); in rkisp1_unregister_capture()
1316 vb2_video_unregister_device(&cap->vnode.vdev); in rkisp1_unregister_capture()
1328 static int rkisp1_register_capture(struct rkisp1_capture *cap) in rkisp1_register_capture() argument
1332 struct v4l2_device *v4l2_dev = &cap->rkisp1->v4l2_dev; in rkisp1_register_capture()
1333 struct video_device *vdev = &cap->vnode.vdev; in rkisp1_register_capture()
1338 strscpy(vdev->name, dev_names[cap->id], sizeof(vdev->name)); in rkisp1_register_capture()
1351 video_set_drvdata(vdev, cap); in rkisp1_register_capture()
1358 q->drv_priv = cap; in rkisp1_register_capture()
1365 q->dev = cap->rkisp1->dev; in rkisp1_register_capture()
1368 dev_err(cap->rkisp1->dev, in rkisp1_register_capture()
1377 dev_err(cap->rkisp1->dev, in rkisp1_register_capture()
1396 struct rkisp1_capture *cap = &rkisp1->capture_devs[id]; in rkisp1_capture_init() local
1399 memset(cap, 0, sizeof(*cap)); in rkisp1_capture_init()
1400 cap->id = id; in rkisp1_capture_init()
1401 cap->rkisp1 = rkisp1; in rkisp1_capture_init()
1403 INIT_LIST_HEAD(&cap->buf.queue); in rkisp1_capture_init()
1404 init_waitqueue_head(&cap->done); in rkisp1_capture_init()
1405 spin_lock_init(&cap->buf.lock); in rkisp1_capture_init()
1406 if (cap->id == RKISP1_SELFPATH) { in rkisp1_capture_init()
1407 cap->ops = &rkisp1_capture_ops_sp; in rkisp1_capture_init()
1408 cap->config = &rkisp1_capture_config_sp; in rkisp1_capture_init()
1410 cap->ops = &rkisp1_capture_ops_mp; in rkisp1_capture_init()
1411 cap->config = &rkisp1_capture_config_mp; in rkisp1_capture_init()
1414 cap->is_streaming = false; in rkisp1_capture_init()
1420 rkisp1_set_fmt(cap, &pixm); in rkisp1_capture_init()
1425 struct rkisp1_capture *cap; in rkisp1_capture_devs_register() local
1431 cap = &rkisp1->capture_devs[i]; in rkisp1_capture_devs_register()
1432 cap->rkisp1 = rkisp1; in rkisp1_capture_devs_register()
1433 ret = rkisp1_register_capture(cap); in rkisp1_capture_devs_register()
1442 cap = &rkisp1->capture_devs[j]; in rkisp1_capture_devs_register()
1443 rkisp1_unregister_capture(cap); in rkisp1_capture_devs_register()