Lines Matching refs:node

136 #define NODE_IS_META(node) ( \  argument
137 ((node)->buf_type == V4L2_BUF_TYPE_META_OUTPUT))
138 #define NODE_IS_OUTPUT(node) ( \ argument
139 ((node)->buf_type == V4L2_BUF_TYPE_META_OUTPUT) || \
140 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT) || \
141 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE))
142 #define NODE_IS_CAPTURE(node) ( \ argument
143 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) || \
144 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
145 #define NODE_IS_MPLANE(node) ( \ argument
146 ((node)->buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) || \
147 ((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))
215 struct pispbe_node node[PISPBE_NUM_NODES]; member
310 struct pispbe_node *node) in pispbe_get_planes_addr() argument
312 unsigned int num_planes = node->format.fmt.pix_mp.num_planes; in pispbe_get_planes_addr()
317 if (!buf || !node->pisp_format) in pispbe_get_planes_addr()
325 size = node->format.fmt.pix_mp.plane_fmt[0].bytesperline * in pispbe_get_planes_addr()
326 node->format.fmt.pix_mp.height; in pispbe_get_planes_addr()
330 plane_factor += node->pisp_format->plane_factor[p]; in pispbe_get_planes_addr()
333 for (; p < PISPBE_MAX_PLANES && node->pisp_format->plane_factor[p]; p++) { in pispbe_get_planes_addr()
341 plane_factor += node->pisp_format->plane_factor[p]; in pispbe_get_planes_addr()
373 &pispbe->node[MAIN_INPUT_NODE]); in pispbe_xlate_addrs()
431 &pispbe->node[OUTPUT0_NODE + i]); in pispbe_xlate_addrs()
458 struct pispbe_node *node; in pispbe_prepare_job() local
479 node = &pispbe->node[CONFIG_NODE]; in pispbe_prepare_job()
480 buf[CONFIG_NODE] = list_first_entry_or_null(&node->ready_queue, in pispbe_prepare_job()
532 node = &pispbe->node[i]; in pispbe_prepare_job()
535 buf[i] = list_first_entry_or_null(&node->ready_queue, in pispbe_prepare_job()
561 struct pispbe_node *n = &pispbe->node[i]; in pispbe_prepare_job()
705 fmt = &pispbe->node[TDN_OUTPUT_NODE].format; in pisp_be_validate_config()
723 fmt = &pispbe->node[STITCH_OUTPUT_NODE].format; in pisp_be_validate_config()
749 fmt = &pispbe->node[OUTPUT0_NODE + j].format; in pisp_be_validate_config()
780 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_queue_setup() local
781 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_queue_setup()
782 unsigned int num_planes = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
783 node->format.fmt.pix_mp.num_planes : 1; in pispbe_node_queue_setup()
790 unsigned int size = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
791 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_queue_setup()
792 node->format.fmt.meta.buffersize; in pispbe_node_queue_setup()
803 unsigned int size = NODE_IS_MPLANE(node) ? in pispbe_node_queue_setup()
804 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_queue_setup()
805 node->format.fmt.meta.buffersize; in pispbe_node_queue_setup()
811 sizes[0], *nbuffers, NODE_NAME(node)); in pispbe_node_queue_setup()
818 struct pispbe_node *node = vb2_get_drv_priv(vb->vb2_queue); in pispbe_node_buffer_prepare() local
819 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_buffer_prepare()
820 unsigned int num_planes = NODE_IS_MPLANE(node) ? in pispbe_node_buffer_prepare()
821 node->format.fmt.pix_mp.num_planes : 1; in pispbe_node_buffer_prepare()
824 unsigned long size = NODE_IS_MPLANE(node) ? in pispbe_node_buffer_prepare()
825 node->format.fmt.pix_mp.plane_fmt[i].sizeimage : in pispbe_node_buffer_prepare()
826 node->format.fmt.meta.buffersize; in pispbe_node_buffer_prepare()
838 if (node->id == CONFIG_NODE) { in pispbe_node_buffer_prepare()
839 void *dst = &node->pispbe->config[vb->index]; in pispbe_node_buffer_prepare()
856 struct pispbe_node *node = vb2_get_drv_priv(buf->vb2_queue); in pispbe_node_buffer_queue() local
857 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_buffer_queue()
859 dev_dbg(pispbe->dev, "%s: for node %s\n", __func__, NODE_NAME(node)); in pispbe_node_buffer_queue()
860 list_add_tail(&buffer->ready_list, &node->ready_queue); in pispbe_node_buffer_queue()
872 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_start_streaming() local
873 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_start_streaming()
882 node->pispbe->streaming_map |= BIT(node->id); in pispbe_node_start_streaming()
883 node->pispbe->sequence = 0; in pispbe_node_start_streaming()
887 __func__, NODE_NAME(node), count); in pispbe_node_start_streaming()
889 node->pispbe->streaming_map); in pispbe_node_start_streaming()
898 list_for_each_entry_safe(buf, tmp, &node->ready_queue, ready_list) { in pispbe_node_start_streaming()
908 struct pispbe_node *node = vb2_get_drv_priv(q); in pispbe_node_stop_streaming() local
909 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_stop_streaming()
923 dev_dbg(pispbe->dev, "%s: for node %s\n", __func__, NODE_NAME(node)); in pispbe_node_stop_streaming()
925 buf = list_first_entry_or_null(&node->ready_queue, in pispbe_node_stop_streaming()
934 vb2_wait_for_all_buffers(&node->queue); in pispbe_node_stop_streaming()
937 pispbe->streaming_map &= ~BIT(node->id); in pispbe_node_stop_streaming()
980 struct pispbe_node *node = video_drvdata(file); in pispbe_node_querycap() local
981 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_querycap()
987 NODE_NAME(node), cap->capabilities, cap->device_caps, in pispbe_node_querycap()
988 node->vfd.device_caps); in pispbe_node_querycap()
996 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_vid_cap() local
997 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_vid_cap()
999 if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_g_fmt_vid_cap()
1002 NODE_NAME(node)); in pispbe_node_g_fmt_vid_cap()
1006 *f = node->format; in pispbe_node_g_fmt_vid_cap()
1008 NODE_NAME(node)); in pispbe_node_g_fmt_vid_cap()
1016 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_vid_out() local
1017 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_vid_out()
1019 if (NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_g_fmt_vid_out()
1022 NODE_NAME(node)); in pispbe_node_g_fmt_vid_out()
1026 *f = node->format; in pispbe_node_g_fmt_vid_out()
1028 NODE_NAME(node)); in pispbe_node_g_fmt_vid_out()
1036 struct pispbe_node *node = video_drvdata(file); in pispbe_node_g_fmt_meta_out() local
1037 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_g_fmt_meta_out()
1039 if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) { in pispbe_node_g_fmt_meta_out()
1042 NODE_NAME(node)); in pispbe_node_g_fmt_meta_out()
1046 *f = node->format; in pispbe_node_g_fmt_meta_out()
1048 NODE_NAME(node)); in pispbe_node_g_fmt_meta_out()
1092 static void pispbe_try_format(struct v4l2_format *f, struct pispbe_node *node) in pispbe_try_format() argument
1094 struct pispbe_dev *pispbe = node->pispbe; in pispbe_try_format()
1101 __func__, NODE_NAME(node), f->fmt.pix_mp.width, in pispbe_try_format()
1109 __func__, NODE_NAME(node)); in pispbe_try_format()
1149 __func__, NODE_NAME(node), i, f->fmt.pix_mp.width, in pispbe_try_format()
1159 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_vid_cap() local
1160 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_vid_cap()
1162 if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) { in pispbe_node_try_fmt_vid_cap()
1165 NODE_NAME(node)); in pispbe_node_try_fmt_vid_cap()
1169 pispbe_try_format(f, node); in pispbe_node_try_fmt_vid_cap()
1177 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_vid_out() local
1178 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_vid_out()
1180 if (!NODE_IS_OUTPUT(node) || NODE_IS_META(node)) { in pispbe_node_try_fmt_vid_out()
1183 NODE_NAME(node)); in pispbe_node_try_fmt_vid_out()
1187 pispbe_try_format(f, node); in pispbe_node_try_fmt_vid_out()
1195 struct pispbe_node *node = video_drvdata(file); in pispbe_node_try_fmt_meta_out() local
1196 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_try_fmt_meta_out()
1198 if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) { in pispbe_node_try_fmt_meta_out()
1201 NODE_NAME(node)); in pispbe_node_try_fmt_meta_out()
1214 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_vid_cap() local
1215 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_vid_cap()
1222 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_vid_cap()
1225 node->format = *f; in pispbe_node_s_fmt_vid_cap()
1226 node->pisp_format = pispbe_find_fmt(f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_cap()
1229 NODE_NAME(node), &f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_cap()
1237 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_vid_out() local
1238 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_vid_out()
1245 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_vid_out()
1248 node->format = *f; in pispbe_node_s_fmt_vid_out()
1249 node->pisp_format = pispbe_find_fmt(f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_out()
1252 NODE_NAME(node), &f->fmt.pix_mp.pixelformat); in pispbe_node_s_fmt_vid_out()
1260 struct pispbe_node *node = video_drvdata(file); in pispbe_node_s_fmt_meta_out() local
1261 struct pispbe_dev *pispbe = node->pispbe; in pispbe_node_s_fmt_meta_out()
1268 if (vb2_is_busy(&node->queue)) in pispbe_node_s_fmt_meta_out()
1271 node->format = *f; in pispbe_node_s_fmt_meta_out()
1272 node->pisp_format = &meta_out_supported_formats[0]; in pispbe_node_s_fmt_meta_out()
1275 NODE_NAME(node), &f->fmt.meta.dataformat); in pispbe_node_s_fmt_meta_out()
1283 struct pispbe_node *node = video_drvdata(file); in pispbe_node_enum_fmt() local
1285 if (f->type != node->queue.type) in pispbe_node_enum_fmt()
1288 if (NODE_IS_META(node)) { in pispbe_node_enum_fmt()
1309 struct pispbe_node *node = video_drvdata(file); in pispbe_enum_framesizes() local
1310 struct pispbe_dev *pispbe = node->pispbe; in pispbe_enum_framesizes()
1312 if (NODE_IS_META(node) || fsize->index) in pispbe_enum_framesizes()
1368 static void pispbe_node_def_fmt(struct pispbe_node *node) in pispbe_node_def_fmt() argument
1370 if (NODE_IS_META(node) && NODE_IS_OUTPUT(node)) { in pispbe_node_def_fmt()
1372 struct v4l2_format *f = &node->format; in pispbe_node_def_fmt()
1376 f->type = node->buf_type; in pispbe_node_def_fmt()
1382 .type = node->buf_type, in pispbe_node_def_fmt()
1384 pispbe_try_format(&f, node); in pispbe_node_def_fmt()
1385 node->format = f; in pispbe_node_def_fmt()
1388 node->pisp_format = pispbe_find_fmt(node->format.fmt.pix_mp.pixelformat); in pispbe_node_def_fmt()
1398 struct pispbe_node *node = &pispbe->node[id]; in pispbe_init_node() local
1399 struct media_entity *entity = &node->vfd.entity; in pispbe_init_node()
1400 struct video_device *vdev = &node->vfd; in pispbe_init_node()
1401 struct vb2_queue *q = &node->queue; in pispbe_init_node()
1404 node->id = id; in pispbe_init_node()
1405 node->pispbe = pispbe; in pispbe_init_node()
1406 node->buf_type = node_desc[id].buf_type; in pispbe_init_node()
1408 mutex_init(&node->node_lock); in pispbe_init_node()
1409 mutex_init(&node->queue_lock); in pispbe_init_node()
1410 INIT_LIST_HEAD(&node->ready_queue); 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()