linux/drivers/media/platform
Archit Taneja 4571912743 [media] v4l: ti-vpe: Add VPE mem to mem driver
VPE is a block which consists of a single memory to memory path which
can perform chrominance up/down sampling, de-interlacing, scaling, and
color space conversion of raster or tiled YUV420 coplanar, YUV422
coplanar or YUV422 interleaved video formats.

We create a mem2mem driver based primarily on the mem2mem-testdev
example. The de-interlacer, scaler and color space converter are all
bypassed for now to keep the driver simple. Chroma up/down sampler
blocks are implemented, so conversion beteen different YUV formats is
possible.

Each mem2mem context allocates a buffer for VPE MMR values which it will
use when it gets access to the VPE HW via the mem2mem queue, it also
allocates a VPDMA descriptor list to which configuration and data
descriptors are added.

Based on the information received via v4l2 ioctls for the source and
destination queues, the driver configures the values for the MMRs, and
stores them in the buffer. There are also some VPDMA parameters like
frame start and line mode which needs to be configured, these are
configured by direct register writes via the VPDMA helper functions.

The driver's device_run() mem2mem op will add each descriptor based on
how the source and destination queues are set up for the given ctx, once
the list is prepared, it's submitted to VPDMA, these descriptors when
parsed by VPDMA will upload MMR registers, start DMA of video buffers on
the various input and output clients/ports.

When the list is parsed completely(and the DMAs on all the output ports
done), an interrupt is generated which we use to notify that the source
and destination buffers are done. The rest of the driver is quite
similar to other mem2mem drivers, we use the multiplane v4l2 ioctls as
the HW support coplanar formats.

Signed-off-by: Archit Taneja <archit@ti.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2013-10-28 15:17:30 -02:00
..
blackfin [media] v4l2: use new V4L2_DV_BT_BLANKING/FRAME defines 2013-08-18 08:19:03 -03:00
davinci [media] davinci: remove deprecated IRQF_DISABLED 2013-10-03 14:11:18 -03:00
exynos4-is [media] media: Remove unnecessary semicolons 2013-10-17 05:51:57 -03:00
exynos-gsc [media] exynos-gsc: Register v4l2 device 2013-09-03 09:24:21 -03:00
marvell-ccic [media] marvell-ccic: drop free_irq for devm_request_irq allocated irq 2013-10-17 11:28:09 -03:00
omap [media] omap_vout: fix compiler warning 2013-06-28 15:06:49 -03:00
omap3isp [media] media: Change media device link_notify behaviour 2013-06-12 22:16:27 -03:00
s3c-camif [media] s3c-camif: forever loop in camif_hw_set_source_format() 2013-08-24 04:53:58 -03:00
s5p-g2d [media] s5p-g2d: Fix registration failure 2013-09-03 09:24:17 -03:00
s5p-jpeg [media] s5p makefiles: don't override other selections on obj-[ym] 2013-06-20 05:46:00 -03:00
s5p-mfc [media] media: Remove unnecessary semicolons 2013-10-17 05:51:57 -03:00
s5p-tv [media] media: Remove unnecessary semicolons 2013-10-17 05:51:57 -03:00
soc_camera sh_mobile_ceu_camera: Fix a compilation warning 2013-08-18 09:36:03 -03:00
ti-vpe [media] v4l: ti-vpe: Add VPE mem to mem driver 2013-10-28 15:17:30 -02:00
vsp1 [media] v4l: vsp1: Fix mutex double lock at streamon time 2013-08-28 05:40:07 -03:00
arv.c
coda.c [media] media: coda: Fix DT driver data pointer for i.MX27 2013-09-03 09:24:16 -03:00
coda.h [media] coda: add CODA7541 decoding support 2013-07-31 15:56:44 -03:00
fsl-viu.c fsl-viu: cleanup clock API use 2013-08-23 23:18:57 +02:00
indycam.c [media] indycam: remove g_chip_ident op 2013-06-17 08:49:47 -03:00
indycam.h
Kconfig [media] v4l: ti-vpe: Add VPE mem to mem driver 2013-10-28 15:17:30 -02:00
m2m-deinterlace.c [media] mem2mem: set missing v4l2_dev pointer 2013-06-28 15:09:43 -03:00
Makefile [media] v4l: ti-vpe: Add VPE mem to mem driver 2013-10-28 15:17:30 -02:00
mem2mem_testdev.c [media] mem2mem: set missing v4l2_dev pointer 2013-06-28 15:09:43 -03:00
mx2_emmaprp.c [media] mem2mem: set missing v4l2_dev pointer 2013-06-28 15:09:43 -03:00
omap24xxcam-dma.c
omap24xxcam.c [media] omap24xxcam: add v4l2_device and replace parent with v4l2_dev 2013-06-21 11:05:16 -03:00
omap24xxcam.h [media] omap24xxcam: add v4l2_device and replace parent with v4l2_dev 2013-06-21 11:05:16 -03:00
sh_veu.c sh_veu: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:01 +09:30
sh_vou.c [media] sh_vou: remove current_norm 2013-06-17 09:34:29 -03:00
timblogiw.c [media] timblogiw: fix two sparse warnings 2013-10-15 12:55:02 -03:00
via-camera.c [media] via-camera: replace current_norm by g_std 2013-06-17 09:33:49 -03:00
via-camera.h
vino.c [media] v4l2: pass std by value to the write-only s_std ioctl 2013-03-24 06:47:00 -03:00
vino.h
vivi.c drivers: avoid parsing names as kthread_run() format strings 2013-07-03 16:07:41 -07:00