linux/drivers
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
..
accessibility
acpi ACPI and power management fixes for 3.12-rc1 2013-09-12 11:22:45 -07:00
amba
ata Merge branch 'for-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2013-09-03 18:19:53 -07:00
atm atm: nicstar: fix regression made by previous patch 2013-09-15 22:18:55 -04:00
auxdisplay
base thp: account anon transparent huge pages into NR_ANON_PAGES 2013-09-12 15:38:03 -07:00
bcma bcma: fix error code handling on 64 Bit systems 2013-09-09 14:44:33 -04:00
block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2013-09-19 12:50:37 -05:00
bluetooth
bus ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
cdrom
char Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
clk The common clk framework changes for 3.12 are dominated by clock driver 2013-09-09 15:49:04 -07:00
clocksource Merge branch 'timers/core' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-09-16 16:10:26 -04:00
connector
cpufreq cpufreq: return EEXIST instead of EBUSY for second registering 2013-09-20 00:37:10 +02:00
cpuidle ACPI and power management fixes for 3.12-rc1 2013-09-12 11:22:45 -07:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2013-09-07 12:53:35 +10:00
dca
devfreq
dio
dma Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
edac Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2013-09-06 11:14:33 -07:00
eisa
extcon Driver core patches for 3.12-rc1 2013-09-03 11:37:15 -07:00
firewire firewire: ohci: Fix deadlock at bus reset 2013-08-29 22:35:05 +02:00
firmware firmware/dmi_scan: drop OOM messages 2013-09-11 15:58:51 -07:00
fmc
gpio Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
gpu Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2013-09-22 19:51:49 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2013-09-17 21:54:05 -04:00
hsi
hv Drivers: hv: vmbus: Do not attempt to negoatiate a new version prematurely 2013-08-30 12:08:04 -07:00
hwmon hwmon: (k10temp) remove unnecessary pci_set_drvdata() 2013-09-12 08:17:40 -07:00
hwspinlock
i2c Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
ide ide: sgiioc4: Staticize ioc4_ide_attach_one() 2013-09-05 15:21:30 -04:00
idle
iio iio:buffer_cb: Add missing iio_buffer_init() 2013-09-21 12:52:50 +01:00
infiniband Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2013-09-15 07:13:39 -04:00
iommu IOMMU Updates for Linux v3.12 2013-09-12 11:29:26 -07:00
ipack
irqchip ARM: SoC late changes for v3.12 2013-09-09 16:35:29 -07:00
isdn isdn: hfcpci_softirq: get func return to suppress compiler warning 2013-09-15 22:27:04 -04:00
leds Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2013-09-12 11:35:33 -07:00
lguest lguest: fix guest kernel stack overflow when TF bit set. 2013-09-06 08:09:27 +09:30
macintosh
mailbox mailbox: remove unnecessary platform_set_drvdata() 2013-09-18 12:02:00 -07:00
md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-09-12 15:01:38 -07:00
media [media] v4l: ti-vpe: Add VPE mem to mem driver 2013-10-28 15:17:30 -02:00
memory ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
memstick memstick: add support for legacy memorysticks 2013-09-11 15:59:35 -07:00
message
mfd Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
misc Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
mmc Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
mtd mtd: nand: pxa3xx: Remove unneeded ifdef CONFIG_OF 2013-09-17 09:08:14 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-09-19 13:57:28 -05:00
nfc
ntb ntb: clean up unnecessary MSI/MSI-X capability find 2013-09-05 11:08:01 -07:00
nubus
of Merge branch 'for-v3.12-fix' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping 2013-09-11 19:11:59 -07:00
oprofile oprofile: get rid of pointless forward declarations of struct super_block 2013-09-03 22:52:48 -04:00
parisc PCI changes for the v3.12 merge window: 2013-09-03 16:24:35 -07:00
parport drivers: parport: Kconfig: exclude h8300 for PARPORT_PC 2013-08-30 12:08:04 -07:00
pci PCI / ACPI / PM: Clear pme_poll for devices in D3cold on wakeup 2013-09-20 00:24:43 +02:00
pcmcia
pinctrl PTR_RET() is a weird name, and led to some confusing usage. We ended 2013-09-04 17:31:11 -07:00
platform Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2013-09-15 17:42:59 -04:00
pnp pnp: change pnp bus pm_ops to invoke pnp driver dev_pm_ops if specified 2013-09-11 15:58:15 -07:00
power Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
pps Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
ps3
ptp
pwm ARM: SoC cleanups for 3.12 2013-09-06 13:21:16 -07:00
rapidio
regulator PTR_RET() is a weird name, and led to some confusing usage. We ended 2013-09-04 17:31:11 -07:00
remoteproc
reset
rpmsg
rtc rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
s390 s390/vmcore: use vmcore for zfcpdump 2013-09-11 15:59:15 -07:00
sbus
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-09-19 13:57:28 -05:00
sfi
sh
sn
spi Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
ssb
staging [media] SOLO6x10: Fix video frame type (I/P/B) 2013-10-17 05:50:00 -03:00
target Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-09-12 16:11:45 -07:00
tc
thermal drivers: thermal: add check when unregistering cpu cooling 2013-09-03 09:10:34 -04:00
tty tty: disassociate_ctty() sends the extra SIGCONT 2013-09-17 21:53:32 -04:00
uio Driver core patches for 3.12-rc1 2013-09-03 11:37:15 -07:00
usb usb: fixes for v3.12-rc2 2013-09-17 13:00:43 -07:00
uwb
vfio vfio-pci: PCI hot reset interface 2013-09-04 11:28:04 -06:00
vhost vhost-scsi: whitespace tweak 2013-09-17 22:56:09 +03:00
video Bye, bye, WfW flag 2013-09-11 19:55:12 -07:00
virt
virtio virtio_pci: pm: Use CONFIG_PM_SLEEP instead of CONFIG_PM 2013-09-09 10:02:53 +09:30
vlynq
vme
w1 Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
watchdog Merge git://www.linux-watchdog.org/linux-watchdog 2013-09-12 08:45:53 -07:00
xen Bug-fixes: 2013-09-12 11:28:24 -07:00
zorro
Kconfig
Makefile