Tegra210 contains a powerful Video Input (VI) hardware controller
which can support up to 6 MIPI CSI camera sensors.
Each Tegra CSI port can be one-to-one mapped to VI channel and can
capture from an external camera sensor connected to CSI or from
built-in test pattern generator.
Tegra210 supports built-in test pattern generator from CSI to VI.
This patch adds a v4l2 capture driver with media interface for
Tegra210 built-in CSI to VI test pattern generator.
This patch includes TPG support only and all the video pipeline
configuration happens through the video device node.
Acked-by: Thierry Reding
Signed-off-by: Sowjanya Komatineni
---
drivers/staging/media/Kconfig|2 +
drivers/staging/media/Makefile |1 +
drivers/staging/media/tegra-video/Kconfig| 12 +
drivers/staging/media/tegra-video/Makefile |8 +
drivers/staging/media/tegra-video/TODO | 11 +
drivers/staging/media/tegra-video/csi.c | 539 +
drivers/staging/media/tegra-video/csi.h | 147
drivers/staging/media/tegra-video/tegra210.c | 978 +++
drivers/staging/media/tegra-video/vi.c | 1074 ++
drivers/staging/media/tegra-video/vi.h | 257 ++
drivers/staging/media/tegra-video/video.c| 155
drivers/staging/media/tegra-video/video.h| 29 +
12 files changed, 3213 insertions(+)
create mode 100644 drivers/staging/media/tegra-video/Kconfig
create mode 100644 drivers/staging/media/tegra-video/Makefile
create mode 100644 drivers/staging/media/tegra-video/TODO
create mode 100644 drivers/staging/media/tegra-video/csi.c
create mode 100644 drivers/staging/media/tegra-video/csi.h
create mode 100644 drivers/staging/media/tegra-video/tegra210.c
create mode 100644 drivers/staging/media/tegra-video/vi.c
create mode 100644 drivers/staging/media/tegra-video/vi.h
create mode 100644 drivers/staging/media/tegra-video/video.c
create mode 100644 drivers/staging/media/tegra-video/video.h
diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
index c6b4fb5..6e54ba1 100644
--- a/drivers/staging/media/Kconfig
+++ b/drivers/staging/media/Kconfig
@@ -36,6 +36,8 @@ source "drivers/staging/media/sunxi/Kconfig"
source "drivers/staging/media/tegra-vde/Kconfig"
+source "drivers/staging/media/tegra-video/Kconfig"
+
source "drivers/staging/media/ipu3/Kconfig"
source "drivers/staging/media/soc_camera/Kconfig"
diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile
index 8b24be1..c38b83b 100644
--- a/drivers/staging/media/Makefile
+++ b/drivers/staging/media/Makefile
@@ -5,6 +5,7 @@ obj-$(CONFIG_VIDEO_MESON_VDEC) += meson/vdec/
obj-$(CONFIG_VIDEO_OMAP4) += omap4iss/
obj-$(CONFIG_VIDEO_ROCKCHIP_VDEC) += rkvdec/
obj-$(CONFIG_VIDEO_SUNXI) += sunxi/
+obj-$(CONFIG_VIDEO_TEGRA) += tegra-video/
obj-$(CONFIG_TEGRA_VDE)+= tegra-vde/
obj-$(CONFIG_VIDEO_HANTRO) += hantro/
obj-$(CONFIG_VIDEO_IPU3_IMGU) += ipu3/
diff --git a/drivers/staging/media/tegra-video/Kconfig
b/drivers/staging/media/tegra-video/Kconfig
new file mode 100644
index 000..6cee329
--- /dev/null
+++ b/drivers/staging/media/tegra-video/Kconfig
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: GPL-2.0-only
+config VIDEO_TEGRA
+ tristate "NVIDIA Tegra VI driver"
+ depends on TEGRA_HOST1X || COMPILE_TEST
+ select VIDEO_V4L2
+ select MEDIA_CONTROLLER
+ select VIDEOBUF2_DMA_CONTIG
+ help
+ Choose this option if you have an NVIDIA Tegra SoC.
+
+ To compile this driver as a module, choose M here: the module
+ will be called tegra-video.
diff --git a/drivers/staging/media/tegra-video/Makefile
b/drivers/staging/media/tegra-video/Makefile
new file mode 100644
index 000..dfa2ef8
--- /dev/null
+++ b/drivers/staging/media/tegra-video/Makefile
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+tegra-video-objs := \
+ video.o \
+ vi.o \
+ csi.o
+
+tegra-video-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210.o
+obj-$(CONFIG_VIDEO_TEGRA) += tegra-video.o
diff --git a/drivers/staging/media/tegra-video/TODO
b/drivers/staging/media/tegra-video/TODO
new file mode 100644
index 000..6ceb7549
--- /dev/null
+++ b/drivers/staging/media/tegra-video/TODO
@@ -0,0 +1,11 @@
+TODO list
+* Currently driver supports Tegra build-in TPG only with direct media links
+ from CSI to VI. Add kernel config CONFIG_VIDEO_TEGRA_TPG and update the
+ driver to do TPG Vs Sensor media links based on CONFIG_VIDEO_TEGRA_TPG.
+* Add real camera sensor capture support.
+* Add Tegra CSI MIPI pads calibration.
+* Add MIPI clock Settle time computation based on the data rate.
+* Add support for Ganged mode.
+* Add RAW10 packed video format support to Tegra210 video formats.
+* Add support for suspend and resume.
+* Make sure v4l2-compliance tests pass with all of the above implementations.
diff --git a/drivers/st