linux/drivers/staging/media/tegra-video/vip.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Parallel video capture module (VIP) for the Tegra VI.
 *
 * This file implements the VIP-specific infrastructure.
 *
 * Copyright (C) 2023 SKIDATA GmbH
 * Author: Luca Ceresoli <[email protected]>
 */

#include <linux/device.h>
#include <linux/host1x.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>

#include <media/v4l2-fwnode.h>

#include "vip.h"
#include "video.h"

static inline struct tegra_vip *host1x_client_to_vip(struct host1x_client *client)
{}

static inline struct tegra_vip_channel *subdev_to_vip_channel(struct v4l2_subdev *subdev)
{}

static inline struct tegra_vip *vip_channel_to_vip(struct tegra_vip_channel *chan)
{}

/* Find the previous subdev in the pipeline (i.e. the one connected to our sink pad) */
static struct v4l2_subdev *tegra_vip_channel_get_prev_subdev(struct tegra_vip_channel *chan)
{}

static int tegra_vip_enable_stream(struct v4l2_subdev *subdev)
{}

static int tegra_vip_disable_stream(struct v4l2_subdev *subdev)
{}

static int tegra_vip_s_stream(struct v4l2_subdev *subdev, int enable)
{}

static const struct v4l2_subdev_video_ops tegra_vip_video_ops =;

static const struct v4l2_subdev_ops tegra_vip_ops =;

static int tegra_vip_channel_of_parse(struct tegra_vip *vip)
{}

static int tegra_vip_channel_init(struct tegra_vip *vip)
{}

static int tegra_vip_init(struct host1x_client *client)
{}

static int tegra_vip_exit(struct host1x_client *client)
{}

static const struct host1x_client_ops vip_client_ops =;

static int tegra_vip_probe(struct platform_device *pdev)
{}

static void tegra_vip_remove(struct platform_device *pdev)
{}

#if defined(CONFIG_ARCH_TEGRA_2x_SOC)
extern const struct tegra_vip_soc tegra20_vip_soc;
#endif

static const struct of_device_id tegra_vip_of_id_table[] =;
MODULE_DEVICE_TABLE(of, tegra_vip_of_id_table);

struct platform_driver tegra_vip_driver =;