1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2023 SKIDATA GmbH
4 * Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
7 #ifndef __TEGRA_VIP_H__
8 #define __TEGRA_VIP_H__
10 #include <media/media-entity.h>
11 #include <media/v4l2-async.h>
12 #include <media/v4l2-subdev.h>
23 * struct tegra_vip_channel - Tegra VIP (parallel video capture) channel
25 * @subdev: V4L2 subdevice associated with this channel
26 * @pads: media pads for the subdevice entity
27 * @of_node: vip device tree node
29 struct tegra_vip_channel {
30 struct v4l2_subdev subdev;
31 struct media_pad pads[TEGRA_VIP_PADS_NUM];
32 struct device_node *of_node;
36 * struct tegra_vip_ops - Tegra VIP operations
38 * @vip_start_streaming: programs vip hardware to enable streaming.
40 struct tegra_vip_ops {
41 int (*vip_start_streaming)(struct tegra_vip_channel *vip_chan);
45 * struct tegra_vip_soc - NVIDIA Tegra VIP SoC structure
47 * @ops: vip hardware operations
49 struct tegra_vip_soc {
50 const struct tegra_vip_ops *ops;
54 * struct tegra_vip - NVIDIA Tegra VIP device structure
57 * @client: host1x_client struct
58 * @soc: pointer to SoC data structure
59 * @chan: the VIP channel
63 struct host1x_client client;
64 const struct tegra_vip_soc *soc;
65 struct tegra_vip_channel chan;