linux_dsm_epyc7002/drivers/media/platform
Archit Taneja 9262e5a225 [media] v4l: ti-vpe: Create a vpdma helper library
The primary function of VPDMA is to move data between external memory
and internal processing modules(in our case, VPE) that source or sink
data. VPDMA is capable of buffering this data and then delivering the
data as demanded to the modules as programmed. The modules that source
or sink data are referred to as clients or ports. A channel is setup
inside the VPDMA to connect a specific memory buffer to a specific
client. The VPDMA centralizes the DMA control functions and buffering
required to allow all the clients to minimize the effect of long latency
times.

Add the following to the VPDMA helper:

- A data struct which describe VPDMA channels. For now, these channels
  are the ones used only by VPE, the list of channels will increase when
  VIP(Video Input Port) also uses the VPDMA library. This channel
  information will be used to populate fields required by data
  descriptors.

- Data structs which describe the different data types supported by
  VPDMA. This data type information will be used to populate fields
  required by data descriptors and used by the VPE driver to map a V4L2
  format to the corresponding VPDMA data type.

- Provide VPDMA register offset definitions, functions to read, write
  and modify VPDMA registers.

- Functions to create and submit a VPDMA list. A list is a group of
  descriptors that makes up a set of DMA transfers that need to be
  completed. Each descriptor will either perform a DMA transaction to
  fetch input buffers and write to output buffers(data descriptors), or
  configure the MMRs of sub blocks of VPE(configuration descriptors), or
  provide control information to VPDMA (control descriptors).

- Functions to allocate, map and unmap buffers needed for the descriptor
  list, payloads containing MMR values and scaler coefficients. These use
  the DMA mapping APIs to ensure exclusive access to VPDMA.

- Functions to enable VPDMA interrupts. VPDMA can trigger an interrupt
  on the VPE interrupt line when a descriptor list is parsed completely
  and the DMA transactions are completed. This requires masking the events
  in VPDMA registers and configuring some top level VPE interrupt
  registers.

- Enable some VPDMA specific parameters: frame start event(when to start
  DMA for a client) and line mode(whether each line fetched should be
  mirrored or not).

- Function to load firmware required by VPDMA. VPDMA requires a firmware
  for it's internal list manager. We add the required request_firmware
  apis to fetch this firmware from user space.

- Function to dump VPDMA registers.

- A function to initialize and create a VPDMA instance, this will be
  called by the VPE driver with it's platform device pointer, this
  function will take care of loading VPDMA firmware and returning a
  vpdma_data instance back to the VPE driver. The VIP driver will also
  call the same init function to initialize it's own VPDMA instance.

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:08:44 -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: Create a vpdma helper library 2013-10-28 15:08:44 -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] media/v4l2: VIDEO_RENESAS_VSP1 should depend on HAS_DMA 2013-10-03 14:09:03 -03:00
m2m-deinterlace.c [media] mem2mem: set missing v4l2_dev pointer 2013-06-28 15:09:43 -03:00
Makefile [media] v4l: Renesas R-Car VSP1 driver 2013-08-18 07:30:16 -03: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