linux/drivers/media/v4l2-core/v4l2-mc.c

// SPDX-License-Identifier: GPL-2.0-or-later

/*
 * Media Controller ancillary functions
 *
 * Copyright (c) 2016 Mauro Carvalho Chehab <[email protected]>
 * Copyright (C) 2016 Shuah Khan <[email protected]>
 * Copyright (C) 2006-2010 Nokia Corporation
 * Copyright (c) 2016 Intel Corporation.
 */

#include <linux/module.h>
#include <linux/pci.h>
#include <linux/usb.h>
#include <media/media-device.h>
#include <media/media-entity.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-mc.h>
#include <media/v4l2-subdev.h>
#include <media/videobuf2-core.h>

int v4l2_mc_create_media_graph(struct media_device *mdev)

{}
EXPORT_SYMBOL_GPL();

int v4l_enable_media_source(struct video_device *vdev)
{}
EXPORT_SYMBOL_GPL();

void v4l_disable_media_source(struct video_device *vdev)
{}
EXPORT_SYMBOL_GPL();

int v4l_vb2q_enable_media_source(struct vb2_queue *q)
{}
EXPORT_SYMBOL_GPL();

int v4l2_create_fwnode_links_to_pad(struct v4l2_subdev *src_sd,
				    struct media_pad *sink, u32 flags)
{}
EXPORT_SYMBOL_GPL();

int v4l2_create_fwnode_links(struct v4l2_subdev *src_sd,
			     struct v4l2_subdev *sink_sd)
{}
EXPORT_SYMBOL_GPL();

/* -----------------------------------------------------------------------------
 * Pipeline power management
 *
 * Entities must be powered up when part of a pipeline that contains at least
 * one open video device node.
 *
 * To achieve this use the entity use_count field to track the number of users.
 * For entities corresponding to video device nodes the use_count field stores
 * the users count of the node. For entities corresponding to subdevs the
 * use_count field stores the total number of users of all video device nodes
 * in the pipeline.
 *
 * The v4l2_pipeline_pm_{get, put}() functions must be called in the open() and
 * close() handlers of video device nodes. It increments or decrements the use
 * count of all subdev entities in the pipeline.
 *
 * To react to link management on powered pipelines, the link setup notification
 * callback updates the use count of all entities in the source and sink sides
 * of the link.
 */

/*
 * pipeline_pm_use_count - Count the number of users of a pipeline
 * @entity: The entity
 *
 * Return the total number of users of all video device nodes in the pipeline.
 */
static int pipeline_pm_use_count(struct media_entity *entity,
	struct media_graph *graph)
{}

/*
 * pipeline_pm_power_one - Apply power change to an entity
 * @entity: The entity
 * @change: Use count change
 *
 * Change the entity use count by @change. If the entity is a subdev update its
 * power state by calling the core::s_power operation when the use count goes
 * from 0 to != 0 or from != 0 to 0.
 *
 * Return 0 on success or a negative error code on failure.
 */
static int pipeline_pm_power_one(struct media_entity *entity, int change)
{}

/*
 * pipeline_pm_power - Apply power change to all entities in a pipeline
 * @entity: The entity
 * @change: Use count change
 *
 * Walk the pipeline to update the use count and the power state of all non-node
 * entities.
 *
 * Return 0 on success or a negative error code on failure.
 */
static int pipeline_pm_power(struct media_entity *entity, int change,
	struct media_graph *graph)
{}

static int v4l2_pipeline_pm_use(struct media_entity *entity, unsigned int use)
{}

int v4l2_pipeline_pm_get(struct media_entity *entity)
{}
EXPORT_SYMBOL_GPL();

void v4l2_pipeline_pm_put(struct media_entity *entity)
{}
EXPORT_SYMBOL_GPL();

int v4l2_pipeline_link_notify(struct media_link *link, u32 flags,
			      unsigned int notification)
{}
EXPORT_SYMBOL_GPL();