1.18. V4L2 Media Controller functions and data structures

int v4l2_mc_create_media_graph(struct media_device * mdev)

create Media Controller links at the graph.

Parameters

struct media_device * mdev
pointer to the media_device struct.

Description

Add links between the entities commonly found on PC customer's hardware at the V4L2 side: camera sensors, audio and video PLL-IF decoders, tuners, analog TV decoder and I/O entities (video, VBI and Software Defined Radio).

Note

Webcams are modelled on a very simple way: the sensor is connected directly to the I/O entity. All dirty details, like scaler and crop HW are hidden. While such mapping is enough for v4l2 interface centric PC-consumer's hardware, V4L2 subdev centric camera hardware should not use this routine, as it will not build the right graph.

int v4l_enable_media_source(struct video_device * vdev)

Hold media source for exclusive use if free

Parameters

struct video_device * vdev
pointer to struct video_device

Description

This interface calls enable_source handler to determine if media source is free for use. The enable_source handler is responsible for checking is the media source is free and start a pipeline between the media source and the media entity associated with the video device. This interface should be called from v4l2-core and dvb-core interfaces that change the source configuration.

Return

returns zero on success or a negative error code.

void v4l_disable_media_source(struct video_device * vdev)

Release media source

Parameters

struct video_device * vdev
pointer to struct video_device

Description

This interface calls disable_source handler to release the media source. The disable_source handler stops the active media pipeline between the media source and the media entity associated with the video device.

Return

returns zero on success or a negative error code.

int v4l2_pipeline_pm_get(struct media_entity * entity)

Increase the use count of a pipeline

Parameters

struct media_entity * entity
The root entity of a pipeline

Description

Update the use count of all entities in the pipeline and power entities on.

This function is intended to be called in video node open. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().

Return 0 on success or a negative error code on failure.

void v4l2_pipeline_pm_put(struct media_entity * entity)

Decrease the use count of a pipeline

Parameters

struct media_entity * entity
The root entity of a pipeline

Description

Update the use count of all entities in the pipeline and power entities off.

This function is intended to be called in video node release. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().

Link management notification callback

Parameters

struct media_link * link
The link
u32 flags
New link flags that will be applied
unsigned int notification
The link's state change notification type (MEDIA_DEV_NOTIFY_*)

Description

React to link management on powered pipelines by updating the use count of all entities in the source and sink sides of the link. Entities are powered on or off accordingly. The use of this function should be paired with v4l2_pipeline_pm_{get,put}().

Return 0 on success or a negative error code on failure. Powering entities off is assumed to never fail. This function will not fail for disconnection events.