Lines Matching refs:node
134 #define NODE_IS_META(node) ( \ argument
135 ((node)->buf_type == V4L2_BUF_TYPE_META_OUTPUT))
136 #define NODE_IS_OUTPUT(node) ( \ argument
137 ((node)->buf_type == V4L2_BUF_TYPE_META_OUTPUT) || \
138 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT) || \
139 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE))
140 #define NODE_IS_CAPTURE(node) ( \ argument
141 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) || \
142 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
143 #define NODE_IS_MPLANE(node) ( \ argument
144 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) || \
145 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
173 #define NODE_NAME(node) \ argument
174 (node_desc[(node)->id].ent_name + sizeof(PISPBE_NAME))
213 struct pispbe_node node[PISPBE_NUM_NODES]; member
306 struct pispbe_node *node) in pispbe_get_planes_addr() argument
308 unsigned int num_planes = node->format.fmt.pix_mp.num_planes; in pispbe_get_planes_addr()
313 if (!buf || !node->pisp_format) in pispbe_get_planes_addr()
321 size = node->format.fmt.pix_mp.plane_fmt[0].bytesperline * in pispbe_get_planes_addr()
322 node->format.fmt.pix_mp.height; in pispbe_get_planes_addr()
326 plane_factor += node->pisp_format->plane_factor[p]; in pispbe_get_planes_addr()
329 for (; p < PISPBE_MAX_PLANES && node->pisp_format->plane_factor[p]; p++) { in pispbe_get_planes_addr()
337 plane_factor += node->pisp_format->plane_factor[p]; in pispbe_get_planes_addr()
369 &pispbe->node[MAIN_INPUT_NODE]); in pispbe_xlate_addrs()
430 &pispbe->node[OUTPUT0_NODE + i]); in pispbe_xlate_addrs()
455 struct pispbe_node *node; in pispbe_prepare_job() local
467 node = &pispbe->node[CONFIG_NODE]; in pispbe_prepare_job()
468 spin_lock_irqsave(&node->ready_lock, flags); in pispbe_prepare_job()
469 buf[CONFIG_NODE] = list_first_entry_or_null(&node->ready_queue, in pispbe_prepare_job()
476 spin_unlock_irqrestore(&node->ready_lock, flags); in pispbe_prepare_job()
525 node = &pispbe->node[i]; in pispbe_prepare_job()
528 spin_lock_irqsave(&node->ready_lock, flags); in pispbe_prepare_job()
529 buf[i] = list_first_entry_or_null(&node->ready_queue, in pispbe_prepare_job()
536 spin_unlock_irqrestore(&node->ready_lock, flags); in pispbe_prepare_job()
551 struct pispbe_node *n = &pispbe->node[i]; in pispbe_prepare_job()
710 fmt = &pispbe->node[TDN_OUTPUT_NODE].format; in pisp_be_validate_config()
728 fmt = &pispbe->node[STITCH_OUTPUT_NODE].format; in pisp_be_validate_config()
754 fmt = &pispbe->node[OUTPUT0_NODE + j].format; in pisp_be_validate_config()
785 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_queue_setup() local
786 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_queue_setup()
787 unsigned int num_planes = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
788 node->format.fmt.pix_mp.num_planes : 1; in pispbe_node_queue_setup()
795 unsigned int size = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
796 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_queue_setup()
797 node->format.fmt.meta.buffersize; in pispbe_node_queue_setup()
808 unsigned int size = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
809 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_queue_setup()
810 node->format.fmt.meta.buffersize; in pispbe_node_queue_setup()
816 sizes[0], *nbuffers, NODE_NAME(node)); in pispbe_node_queue_setup()
823 struct pispbe_node *node = vb2_get_drv_priv(vb->vb2_queue); in pispbe_node_buffer_prepare() local
824 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_buffer_prepare()
825 unsigned int num_planes = NODE_IS_MPLANE(node) ? in pispbe_node_buffer_prepare()
826 node->format.fmt.pix_mp.num_planes : 1; in pispbe_node_buffer_prepare()
829 unsigned long size = NODE_IS_MPLANE(node) ? in pispbe_node_buffer_prepare()
830 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_buffer_prepare()
831 node->format.fmt.meta.buffersize; in pispbe_node_buffer_prepare()
843 if (node->id == CONFIG_NODE) { in pispbe_node_buffer_prepare()
844 void *dst = &node->pispbe->config[vb->index]; in pispbe_node_buffer_prepare()
861 struct pispbe_node *node = vb2_get_drv_priv(buf->vb2_queue); in pispbe_node_buffer_queue() local
862 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_buffer_queue()
865 dev_dbg(pispbe->dev, "%s: for node %s\n", __func__, NODE_NAME(node)); in pispbe_node_buffer_queue()
866 spin_lock_irqsave(&node->ready_lock, flags); in pispbe_node_buffer_queue()
867 list_add_tail(&buffer->ready_list, &node->ready_queue); in pispbe_node_buffer_queue()
868 spin_unlock_irqrestore(&node->ready_lock, flags); in pispbe_node_buffer_queue()
879 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_start_streaming() local
880 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_start_streaming()
890 node->pispbe->streaming_map |= BIT(node->id); in pispbe_node_start_streaming()
891 node->pispbe->sequence = 0; in pispbe_node_start_streaming()
895 __func__, NODE_NAME(node), count); in pispbe_node_start_streaming()
897 node->pispbe->streaming_map); in pispbe_node_start_streaming()
906 list_for_each_entry_safe(buf, tmp, &node->ready_queue, ready_list) { in pispbe_node_start_streaming()
917 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_stop_streaming() local
918 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_stop_streaming()
931 dev_dbg(pispbe->dev, "%s: for node %s\n", __func__, NODE_NAME(node)); in pispbe_node_stop_streaming()
936 spin_lock_irqsave(&node->ready_lock, flags1); in pispbe_node_stop_streaming()
937 buf = list_first_entry_or_null(&node->ready_queue, in pispbe_node_stop_streaming()
944 spin_unlock_irqrestore(&node->ready_lock, flags1); in pispbe_node_stop_streaming()
948 vb2_wait_for_all_buffers(&node->queue); in pispbe_node_stop_streaming()
951 pispbe->streaming_map &= ~BIT(node->id); in pispbe_node_stop_streaming()
981 struct pispbe_node *node = video_drvdata(file); in pispbe_node_querycap() local
982 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_querycap()
988 NODE_NAME(node), cap->capabilities, cap->device_caps, in pispbe_node_querycap()
989 node->vfd.device_caps); in pispbe_node_querycap()
997 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_vid_cap() local
998 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_vid_cap()
1000 if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_g_fmt_vid_cap()
1003 NODE_NAME(node)); in pispbe_node_g_fmt_vid_cap()
1007 *f = node->format; in pispbe_node_g_fmt_vid_cap()
1009 NODE_NAME(node)); in pispbe_node_g_fmt_vid_cap()
1017 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_vid_out() local
1018 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_vid_out()
1020 if (NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_g_fmt_vid_out()
1023 NODE_NAME(node)); in pispbe_node_g_fmt_vid_out()
1027 *f = node->format; in pispbe_node_g_fmt_vid_out()
1029 NODE_NAME(node)); in pispbe_node_g_fmt_vid_out()
1037 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_meta_out() local
1038 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_meta_out()
1040 if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) { in pispbe_node_g_fmt_meta_out()
1043 NODE_NAME(node)); in pispbe_node_g_fmt_meta_out()
1047 *f = node->format; in pispbe_node_g_fmt_meta_out()
1049 NODE_NAME(node)); in pispbe_node_g_fmt_meta_out()
1093 static void pispbe_try_format(struct v4l2_format *f, struct pispbe_node *node) in pispbe_try_format() argument
1095 struct pispbe_dev *pispbe = node->pispbe; in pispbe_try_format()
1102 __func__, NODE_NAME(node), f->fmt.pix_mp.width, in pispbe_try_format()
1110 __func__, NODE_NAME(node)); in pispbe_try_format()
1148 __func__, NODE_NAME(node), i, f->fmt.pix_mp.width, in pispbe_try_format()
1158 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_vid_cap() local
1159 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_vid_cap()
1161 if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_try_fmt_vid_cap()
1164 NODE_NAME(node)); in pispbe_node_try_fmt_vid_cap()
1168 pispbe_try_format(f, node); in pispbe_node_try_fmt_vid_cap()
1176 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_vid_out() local
1177 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_vid_out()
1179 if (!NODE_IS_OUTPUT(node) || NODE_IS_META(node)) { in pispbe_node_try_fmt_vid_out()
1182 NODE_NAME(node)); in pispbe_node_try_fmt_vid_out()
1186 pispbe_try_format(f, node); in pispbe_node_try_fmt_vid_out()
1194 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_meta_out() local
1195 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_meta_out()
1197 if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) { in pispbe_node_try_fmt_meta_out()
1200 NODE_NAME(node)); in pispbe_node_try_fmt_meta_out()
1213 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_vid_cap() local
1214 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_vid_cap()
1221 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_vid_cap()
1224 node->format = *f; in pispbe_node_s_fmt_vid_cap()
1225 node->pisp_format = pispbe_find_fmt(f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_cap()
1228 NODE_NAME(node), &f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_cap()
1236 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_vid_out() local
1237 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_vid_out()
1244 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_vid_out()
1247 node->format = *f; in pispbe_node_s_fmt_vid_out()
1248 node->pisp_format = pispbe_find_fmt(f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_out()
1251 NODE_NAME(node), &f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_out()
1259 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_meta_out() local
1260 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_meta_out()
1267 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_meta_out()
1270 node->format = *f; in pispbe_node_s_fmt_meta_out()
1271 node->pisp_format = &meta_out_supported_formats[0]; in pispbe_node_s_fmt_meta_out()
1274 NODE_NAME(node), &f->fmt.meta.dataformat); in pispbe_node_s_fmt_meta_out()
1282 struct pispbe_node *node = video_drvdata(file); in pispbe_node_enum_fmt() local
1284 if (f->type != node->queue.type) in pispbe_node_enum_fmt()
1287 if (NODE_IS_META(node)) { in pispbe_node_enum_fmt()
1308 struct pispbe_node *node = video_drvdata(file); in pispbe_enum_framesizes() local
1309 struct pispbe_dev *pispbe = node->pispbe; in pispbe_enum_framesizes()
1311 if (NODE_IS_META(node) || fsize->index) in pispbe_enum_framesizes()
1367 static void pispbe_node_def_fmt(struct pispbe_node *node) in pispbe_node_def_fmt() argument
1369 if (NODE_IS_META(node) && NODE_IS_OUTPUT(node)) { in pispbe_node_def_fmt()
1371 struct v4l2_format *f = &node->format; in pispbe_node_def_fmt()
1375 f->type = node->buf_type; in pispbe_node_def_fmt()
1381 .type = node->buf_type, in pispbe_node_def_fmt()
1383 pispbe_try_format(&f, node); in pispbe_node_def_fmt()
1384 node->format = f; in pispbe_node_def_fmt()
1387 node->pisp_format = pispbe_find_fmt(node->format.fmt.pix_mp.pixelformat); in pispbe_node_def_fmt()
1397 struct pispbe_node *node = &pispbe->node[id]; in pispbe_init_node() local
1398 struct media_entity *entity = &node->vfd.entity; in pispbe_init_node()
1399 struct video_device *vdev = &node->vfd; in pispbe_init_node()
1400 struct vb2_queue *q = &node->queue; in pispbe_init_node()
1403 node->id = id; in pispbe_init_node()
1404 node->pispbe = pispbe; in pispbe_init_node()
1405 node->buf_type = node_desc[id].buf_type; in pispbe_init_node()
1407 mutex_init(&node->node_lock); in pispbe_init_node()
1408 mutex_init(&node->queue_lock); in pispbe_init_node()
1409 INIT_LIST_HEAD(&node->ready_queue); in pispbe_init_node()
1410 spin_lock_init(&node->ready_lock); in pispbe_init_node()
1412 node->format.type = node->buf_type; in pispbe_init_node()
1413 pispbe_node_def_fmt(node); in pispbe_init_node()
1415 q->type = node->buf_type; in pispbe_init_node()
1418 q->drv_priv = node; in pispbe_init_node()
1424 q->lock = &node->queue_lock; in pispbe_init_node()
1437 vdev->lock = &node->node_lock; in pispbe_init_node()
1438 vdev->queue = &node->queue; in pispbe_init_node()
1441 node->pad.flags = output ? MEDIA_PAD_FL_SOURCE : MEDIA_PAD_FL_SINK; in pispbe_init_node()
1442 ret = media_entity_pads_init(entity, 1, &node->pad); in pispbe_init_node()
1446 NODE_NAME(node)); in pispbe_init_node()
1454 NODE_NAME(node)); in pispbe_init_node()
1457 video_set_drvdata(vdev, node); in pispbe_init_node()
1471 NODE_NAME(node), node->vfd.num); in pispbe_init_node()
1476 video_unregister_device(&node->vfd); in pispbe_init_node()
1478 vb2_queue_release(&node->queue); in pispbe_init_node()
1480 mutex_destroy(&node->node_lock); in pispbe_init_node()
1481 mutex_destroy(&node->queue_lock); in pispbe_init_node()
1580 video_unregister_device(&pispbe->node[num_regist].vfd); in pispbe_init_devices()
1581 vb2_queue_release(&pispbe->node[num_regist].queue); in pispbe_init_devices()
1609 video_unregister_device(&pispbe->node[i].vfd); in pispbe_destroy_devices()
1610 vb2_queue_release(&pispbe->node[i].queue); in pispbe_destroy_devices()
1611 mutex_destroy(&pispbe->node[i].node_lock); in pispbe_destroy_devices()
1612 mutex_destroy(&pispbe->node[i].queue_lock); in pispbe_destroy_devices()