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()
229 media_device_for_each_entity(entity, mdev) { in v4l2_mc_create_media_graph()
230 switch (entity->function) { in v4l2_mc_create_media_graph()
240 ret = media_create_pad_link(entity, 0, tuner, in v4l2_mc_create_media_graph()
252 ret = media_create_pad_link(entity, 0, decoder, in v4l2_mc_create_media_graph()
271 struct media_device *mdev = vdev->entity.graph_obj.mdev; in v4l_enable_media_source()
280 err = mdev->enable_source(&vdev->entity, &vdev->pipe); in v4l_enable_media_source()
291 struct media_device *mdev = vdev->entity.graph_obj.mdev; in v4l_disable_media_source()
296 mdev->disable_source(&vdev->entity); in v4l_disable_media_source()
319 !is_media_entity_v4l2_subdev(sink->entity)) in v4l2_create_fwnode_links_to_pad()
322 sink_sd = media_entity_to_v4l2_subdev(sink->entity); in v4l2_create_fwnode_links_to_pad()
329 src_idx = media_entity_get_fwnode_pad(&src_sd->entity, in v4l2_create_fwnode_links_to_pad()
343 sink_idx = media_entity_get_fwnode_pad(&sink_sd->entity, in v4l2_create_fwnode_links_to_pad()
354 * entity, and the sink endpoint corresponds to the sink in v4l2_create_fwnode_links_to_pad()
359 src = &src_sd->entity.pads[src_idx]; in v4l2_create_fwnode_links_to_pad()
366 src_sd->entity.name, src_idx, in v4l2_create_fwnode_links_to_pad()
367 sink_sd->entity.name, sink_idx); in v4l2_create_fwnode_links_to_pad()
369 ret = media_create_pad_link(&src_sd->entity, src_idx, in v4l2_create_fwnode_links_to_pad()
370 &sink_sd->entity, sink_idx, flags); in v4l2_create_fwnode_links_to_pad()
374 src_sd->entity.name, src_idx, in v4l2_create_fwnode_links_to_pad()
375 sink_sd->entity.name, sink_idx, ret); in v4l2_create_fwnode_links_to_pad()
391 for (i = 0; i < sink_sd->entity.num_pads; i++) { in v4l2_create_fwnode_links()
392 struct media_pad *pad = &sink_sd->entity.pads[i]; in v4l2_create_fwnode_links()
413 * To achieve this use the entity use_count field to track the number of users.
430 * @entity: The entity
434 static int pipeline_pm_use_count(struct media_entity *entity, in pipeline_pm_use_count() argument
439 media_graph_walk_start(graph, entity); in pipeline_pm_use_count()
441 while ((entity = media_graph_walk_next(graph))) { in pipeline_pm_use_count()
442 if (is_media_entity_v4l2_video_device(entity)) in pipeline_pm_use_count()
443 use += entity->use_count; in pipeline_pm_use_count()
450 * pipeline_pm_power_one - Apply power change to an entity
451 * @entity: The entity
454 * Change the entity use count by @change. If the entity is a subdev update its
460 static int pipeline_pm_power_one(struct media_entity *entity, int change) in pipeline_pm_power_one() argument
465 subdev = is_media_entity_v4l2_subdev(entity) in pipeline_pm_power_one()
466 ? media_entity_to_v4l2_subdev(entity) : NULL; in pipeline_pm_power_one()
468 if (entity->use_count == 0 && change > 0 && subdev != NULL) { in pipeline_pm_power_one()
474 entity->use_count += change; in pipeline_pm_power_one()
475 WARN_ON(entity->use_count < 0); in pipeline_pm_power_one()
477 if (entity->use_count == 0 && change < 0 && subdev != NULL) in pipeline_pm_power_one()
485 * @entity: The entity
493 static int pipeline_pm_power(struct media_entity *entity, int change, in pipeline_pm_power() argument
496 struct media_entity *first = entity; in pipeline_pm_power()
502 media_graph_walk_start(graph, entity); in pipeline_pm_power()
504 while (!ret && (entity = media_graph_walk_next(graph))) in pipeline_pm_power()
505 if (is_media_entity_v4l2_subdev(entity)) in pipeline_pm_power()
506 ret = pipeline_pm_power_one(entity, change); in pipeline_pm_power()
514 && first != entity) in pipeline_pm_power()
521 static int v4l2_pipeline_pm_use(struct media_entity *entity, unsigned int use) in v4l2_pipeline_pm_use() argument
523 struct media_device *mdev = entity->graph_obj.mdev; in v4l2_pipeline_pm_use()
530 entity->use_count += change; in v4l2_pipeline_pm_use()
531 WARN_ON(entity->use_count < 0); in v4l2_pipeline_pm_use()
534 ret = pipeline_pm_power(entity, change, &mdev->pm_count_walk); in v4l2_pipeline_pm_use()
536 entity->use_count -= change; in v4l2_pipeline_pm_use()
543 int v4l2_pipeline_pm_get(struct media_entity *entity) in v4l2_pipeline_pm_get() argument
545 return v4l2_pipeline_pm_use(entity, 1); in v4l2_pipeline_pm_get()
549 void v4l2_pipeline_pm_put(struct media_entity *entity) in v4l2_pipeline_pm_put() argument
552 WARN_ON(v4l2_pipeline_pm_use(entity, 0)); in v4l2_pipeline_pm_put()
560 struct media_entity *source = link->source->entity; in v4l2_pipeline_link_notify()
561 struct media_entity *sink = link->sink->entity; in v4l2_pipeline_link_notify()