Lines Matching full:entity

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