Lines Matching refs:entity

16 #include <media/media-entity.h>
25 struct media_entity *entity;
36 media_device_for_each_entity(entity, mdev) {
37 switch (entity->function) {
39 if_vid = entity;
42 if_aud = entity;
45 tuner = entity;
48 decoder = entity;
51 io_v4l = entity;
54 io_vbi = entity;
57 io_swradio = entity;
65 /* It should have at least one I/O entity */
67 dev_warn(mdev->dev, "Didn't find any I/O entity\n");
73 * connected directly to the I/O entity. All dirty details, like
84 media_device_for_each_entity(entity, mdev) {
85 if (entity->function != MEDIA_ENT_F_CAM_SENSOR)
87 ret = media_create_pad_link(entity, 0,
240 media_device_for_each_entity(entity, mdev) {
241 switch (entity->function) {
251 ret = media_create_pad_link(entity, 0, tuner,
264 ret = media_create_pad_link(entity, 0, decoder,
283 struct media_device *mdev = vdev->entity.graph_obj.mdev;
292 err = mdev->enable_source(&vdev->entity, &vdev->pipe);
303 struct media_device *mdev = vdev->entity.graph_obj.mdev;
308 mdev->disable_source(&vdev->entity);
337 src_idx = media_entity_get_fwnode_pad(&src_sd->entity,
357 sink_idx = media_entity_get_fwnode_pad(sink->entity,
372 * entity, and the sink endpoint corresponds to the sink
377 src = &src_sd->entity.pads[src_idx];
383 src_sd->entity.name, src_idx,
384 sink->entity->name, sink_idx);
389 src_sd->entity.name, src_idx,
390 sink->entity->name, sink_idx);
392 ret = media_create_pad_link(&src_sd->entity, src_idx,
393 sink->entity, sink_idx, flags);
397 src_sd->entity.name, src_idx,
398 sink->entity->name, sink_idx, ret);
414 for (i = 0; i < sink_sd->entity.num_pads; i++) {
415 struct media_pad *pad = &sink_sd->entity.pads[i];
436 * To achieve this use the entity use_count field to track the number of users.
453 * @entity: The entity
457 static int pipeline_pm_use_count(struct media_entity *entity,
462 media_graph_walk_start(graph, entity);
464 while ((entity = media_graph_walk_next(graph))) {
465 if (is_media_entity_v4l2_video_device(entity))
466 use += entity->use_count;
473 * pipeline_pm_power_one - Apply power change to an entity
474 * @entity: The entity
477 * Change the entity use count by @change. If the entity is a subdev update its
483 static int pipeline_pm_power_one(struct media_entity *entity, int change)
488 subdev = is_media_entity_v4l2_subdev(entity)
489 ? media_entity_to_v4l2_subdev(entity) : NULL;
491 if (entity->use_count == 0 && change > 0 && subdev != NULL) {
497 entity->use_count += change;
498 WARN_ON(entity->use_count < 0);
500 if (entity->use_count == 0 && change < 0 && subdev != NULL)
508 * @entity: The entity
516 static int pipeline_pm_power(struct media_entity *entity, int change,
519 struct media_entity *first = entity;
525 media_graph_walk_start(graph, entity);
527 while (!ret && (entity = media_graph_walk_next(graph)))
528 if (is_media_entity_v4l2_subdev(entity))
529 ret = pipeline_pm_power_one(entity, change);
537 && first != entity)
544 static int v4l2_pipeline_pm_use(struct media_entity *entity, unsigned int use)
546 struct media_device *mdev = entity->graph_obj.mdev;
553 entity->use_count += change;
554 WARN_ON(entity->use_count < 0);
557 ret = pipeline_pm_power(entity, change, &mdev->pm_count_walk);
559 entity->use_count -= change;
566 int v4l2_pipeline_pm_get(struct media_entity *entity)
568 return v4l2_pipeline_pm_use(entity, 1);
572 void v4l2_pipeline_pm_put(struct media_entity *entity)
575 WARN_ON(v4l2_pipeline_pm_use(entity, 0));
583 struct media_entity *source = link->source->entity;
584 struct media_entity *sink = link->sink->entity;