linux/drivers/staging/media/davinci_vpfe/davinci-vpfe-mc.txt
<<
>>
Prefs
   1Davinci Video processing Front End (VPFE) driver
   2
   3Copyright (C) 2012 Texas Instruments Inc
   4
   5Contacts: Manjunath Hadli <manjunath.hadli@ti.com>
   6          Prabhakar Lad <prabhakar.lad@ti.com>
   7
   8
   9Introduction
  10============
  11
  12This file documents the Texas Instruments Davinci Video processing Front End
  13(VPFE) driver located under drivers/media/platform/davinci. The original driver
  14exists for Davinci VPFE, which is now being changed to Media Controller
  15Framework.
  16
  17Currently the driver has been successfully used on the following
  18version of Davinci:
  19
  20        DM365/DM368
  21
  22The driver implements V4L2, Media controller and v4l2_subdev interfaces. Sensor,
  23lens and flash drivers using the v4l2_subdev interface in the kernel are
  24supported.
  25
  26
  27Split to subdevs
  28================
  29
  30The Davinci VPFE is split into V4L2 subdevs, each of the blocks inside the VPFE
  31having one subdev to represent it. Each of the subdevs provide a V4L2 subdev
  32interface to userspace.
  33
  34        DAVINCI ISIF
  35        DAVINCI IPIPEIF
  36        DAVINCI IPIPE
  37        DAVINCI CROP RESIZER
  38        DAVINCI RESIZER A
  39        DAVINCI RESIZER B
  40
  41Each possible link in the VPFE is modelled by a link in the Media controller
  42interface. For an example program see [1].
  43
  44
  45ISIF, IPIPE, and RESIZER block IOCTLs
  46======================================
  47
  48The Davinci Video processing Front End (VPFE) driver supports standard V4L2
  49IOCTLs and controls where possible and practical. Much of the functions provided
  50by the VPFE, however, does not fall under the standard IOCTL's.
  51
  52In general, there is a private ioctl for configuring each of the blocks
  53containing hardware-dependent functions.
  54
  55The following private IOCTLs are supported:
  56
  57        VIDIOC_VPFE_ISIF_[S/G]_RAW_PARAMS
  58        VIDIOC_VPFE_IPIPE_[S/G]_CONFIG
  59        VIDIOC_VPFE_RSZ_[S/G]_CONFIG
  60
  61The parameter structures used by these ioctl's are described in
  62include/uapi/linux/davinci_vpfe.h.
  63
  64The VIDIOC_VPFE_ISIF_S_RAW_PARAMS, VIDIOC_VPFE_IPIPE_S_CONFIG and
  65VIDIOC_VPFE_RSZ_S_CONFIG are used to configure, enable and disable functions in
  66the isif, ipipe and resizer blocks respectively. These IOCTL's control several
  67functions in the blocks they control. VIDIOC_VPFE_ISIF_S_RAW_PARAMS IOCTL
  68accepts a pointer to struct vpfe_isif_raw_config as its argument. Similarly
  69VIDIOC_VPFE_IPIPE_S_CONFIG accepts a pointer to struct vpfe_ipipe_config. And
  70VIDIOC_VPFE_RSZ_S_CONFIG accepts a pointer to struct vpfe_rsz_config as its
  71argument. Similarly VIDIOC_VPFE_ISIF_G_RAW_PARAMS, VIDIOC_VPFE_IPIPE_G_CONFIG
  72and VIDIOC_VPFE_RSZ_G_CONFIG are used to get the current configuration set in
  73the isif, ipipe and resizer blocks respectively.
  74
  75The detailed functions of the VPFE itself related to a given VPFE block is
  76described in the Technical Reference Manuals (TRMs) --- see the end of the
  77document for those.
  78
  79
  80IPIPEIF block IOCTLs
  81======================================
  82
  83The following private IOCTLs are supported:
  84
  85        VIDIOC_VPFE_IPIPEIF_[S/G]_CONFIG
  86
  87The parameter structures used by these ioctl's are described in
  88include/uapi/linux/dm365_ipipeif.h
  89
  90The VIDIOC_VPFE_IPIPEIF_S_CONFIG is used to configure the ipipeif
  91hardware block. The VIDIOC_VPFE_IPIPEIF_S_CONFIG and
  92VIDIOC_VPFE_IPIPEIF_G_CONFIG accepts a pointer to struct ipipeif_params
  93as its argument.
  94
  95
  96VPFE Operating Modes
  97==========================================
  98
  99a: Continuous Modes
 100------------------------
 101
 1021: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> SDRAM
 103
 1042: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->|
 105                                                                   |
 106   <--------------------<----------------<---------------------<---|
 107   |
 108   V
 109 DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM
 110
 1113: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->|
 112                                                                   |
 113   <--------------------<----------------<---------------------<---|
 114   |
 115   V
 116 DAVINCI IPIPE---> DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM
 117
 118a: Single Shot Modes
 119------------------------
 120
 1211: SDRAM---> DAVINCI IPIPEIF---> DAVINCI IPIPE---> DAVINCI CROP RESIZER--->|
 122                                                                           |
 123   <----------------<----------------<------------------<---------------<--|
 124   |
 125   V
 126DAVINCI RESIZER [A/B]---> SDRAM
 127
 1282: SDRAM---> DAVINCI IPIPEIF---> DAVINCI CROP RESIZER--->|
 129                                                         |
 130   <----------------<----------------<---------------<---|
 131   |
 132   V
 133DAVINCI RESIZER [A/B]---> SDRAM
 134
 135
 136Technical reference manuals (TRMs) and other documentation
 137==========================================================
 138
 139Davinci DM365 TRM:
 140<URL:http://www.ti.com/lit/ds/sprs457e/sprs457e.pdf>
 141Referenced MARCH 2009-REVISED JUNE 2011
 142
 143Davinci DM368 TRM:
 144<URL:http://www.ti.com/lit/ds/sprs668c/sprs668c.pdf>
 145Referenced APRIL 2010-REVISED JUNE 2011
 146
 147Davinci Video Processing Front End (VPFE) DM36x
 148<URL:http://www.ti.com/lit/ug/sprufg8c/sprufg8c.pdf>
 149
 150
 151References
 152==========
 153
 154[1] http://git.ideasonboard.org/?p=media-ctl.git;a=summary
 155