1 Davinci Video processing Front End (VPFE) driver
3 Copyright (C) 2012 Texas Instruments Inc
5 Contacts: Manjunath Hadli <manjunath.hadli@ti.com>
6 Prabhakar Lad <prabhakar.lad@ti.com>
12 This file documents the Texas Instruments Davinci Video processing Front End
13 (VPFE) driver located under drivers/media/platform/davinci. The original driver
14 exists for Davinci VPFE, which is now being changed to Media Controller
17 Currently the driver has been successfully used on the following
22 The driver implements V4L2, Media controller and v4l2_subdev interfaces. Sensor,
23 lens and flash drivers using the v4l2_subdev interface in the kernel are
30 The Davinci VPFE is split into V4L2 subdevs, each of the blocks inside the VPFE
31 having one subdev to represent it. Each of the subdevs provide a V4L2 subdev
32 interface to userspace.
41 Each possible link in the VPFE is modelled by a link in the Media controller
42 interface. For an example program see [1].
45 ISIF, IPIPE, and RESIZER block IOCTLs
46 ======================================
48 The Davinci Video processing Front End (VPFE) driver supports standard V4L2
49 IOCTLs and controls where possible and practical. Much of the functions provided
50 by the VPFE, however, does not fall under the standard IOCTL's.
52 In general, there is a private ioctl for configuring each of the blocks
53 containing hardware-dependent functions.
55 The following private IOCTLs are supported:
57 VIDIOC_VPFE_ISIF_[S/G]_RAW_PARAMS
58 VIDIOC_VPFE_IPIPE_[S/G]_CONFIG
59 VIDIOC_VPFE_RSZ_[S/G]_CONFIG
61 The parameter structures used by these ioctl's are described in
62 include/uapi/linux/davinci_vpfe.h.
64 The VIDIOC_VPFE_ISIF_S_RAW_PARAMS, VIDIOC_VPFE_IPIPE_S_CONFIG and
65 VIDIOC_VPFE_RSZ_S_CONFIG are used to configure, enable and disable functions in
66 the isif, ipipe and resizer blocks respectively. These IOCTL's control several
67 functions in the blocks they control. VIDIOC_VPFE_ISIF_S_RAW_PARAMS IOCTL
68 accepts a pointer to struct vpfe_isif_raw_config as its argument. Similarly
69 VIDIOC_VPFE_IPIPE_S_CONFIG accepts a pointer to struct vpfe_ipipe_config. And
70 VIDIOC_VPFE_RSZ_S_CONFIG accepts a pointer to struct vpfe_rsz_config as its
71 argument. Similarly VIDIOC_VPFE_ISIF_G_RAW_PARAMS, VIDIOC_VPFE_IPIPE_G_CONFIG
72 and VIDIOC_VPFE_RSZ_G_CONFIG are used to get the current configuration set in
73 the isif, ipipe and resizer blocks respectively.
75 The detailed functions of the VPFE itself related to a given VPFE block is
76 described in the Technical Reference Manuals (TRMs) --- see the end of the
81 ======================================
83 The following private IOCTLs are supported:
85 VIDIOC_VPFE_IPIPEIF_[S/G]_CONFIG
87 The parameter structures used by these ioctl's are described in
88 include/uapi/linux/dm365_ipipeif.h
90 The VIDIOC_VPFE_IPIPEIF_S_CONFIG is used to configure the ipipeif
91 hardware block. The VIDIOC_VPFE_IPIPEIF_S_CONFIG and
92 VIDIOC_VPFE_IPIPEIF_G_CONFIG accepts a pointer to struct ipipeif_params
97 ==========================================
100 ------------------------
102 1: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> SDRAM
104 2: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->|
106 <--------------------<----------------<---------------------<---|
109 DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM
111 3: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->|
113 <--------------------<----------------<---------------------<---|
116 DAVINCI IPIPE---> DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM
119 ------------------------
121 1: SDRAM---> DAVINCI IPIPEIF---> DAVINCI IPIPE---> DAVINCI CROP RESIZER--->|
123 <----------------<----------------<------------------<---------------<--|
126 DAVINCI RESIZER [A/B]---> SDRAM
128 2: SDRAM---> DAVINCI IPIPEIF---> DAVINCI CROP RESIZER--->|
130 <----------------<----------------<---------------<---|
133 DAVINCI RESIZER [A/B]---> SDRAM
136 Technical reference manuals (TRMs) and other documentation
137 ==========================================================
140 <URL:http://www.ti.com/lit/ds/sprs457e/sprs457e.pdf>
141 Referenced MARCH 2009-REVISED JUNE 2011
144 <URL:http://www.ti.com/lit/ds/sprs668c/sprs668c.pdf>
145 Referenced APRIL 2010-REVISED JUNE 2011
147 Davinci Video Processing Front End (VPFE) DM36x
148 <URL:http://www.ti.com/lit/ug/sprufg8c/sprufg8c.pdf>
154 [1] http://git.ideasonboard.org/?p=media-ctl.git;a=summary