-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 357068 b: refs/heads/master c: 5a89fac h: refs/heads/master v: v3
- Loading branch information
Manjunath Hadli
authored and
Mauro Carvalho Chehab
committed
Dec 21, 2012
1 parent
68f1565
commit 2d7e0dc
Showing
3 changed files
with
192 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 44261e38059385ca1cd9c5018c579b4fc48b5a52 | ||
refs/heads/master: 5a89fac7e90dd75b9783914fa351069d20fd8c54 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
TODO (general): | ||
================================== | ||
|
||
- User space interface refinement | ||
- Controls should be used when possible rather than private ioctl | ||
- No enums should be used | ||
- Use of MC and V4L2 subdev APIs when applicable | ||
- Single interface header might suffice | ||
- Current interface forces to configure everything at once | ||
- Get rid of the dm365_ipipe_hw.[ch] layer | ||
- Active external sub-devices defined by link configuration; no strcmp | ||
needed | ||
- More generic platform data (i2c adapters) | ||
- The driver should have no knowledge of possible external subdevs; see | ||
struct vpfe_subdev_id | ||
- Some of the hardware control should be refactorede | ||
- Check proper serialisation (through mutexes and spinlocks) | ||
- Names that are visible in kernel global namespace should have a common | ||
prefix (or a few) | ||
- While replacing the older driver in media folder, provide a compatibility | ||
layer and compatibility tests that warrants (using the libv4l's LD_PRELOAD | ||
approach) there is no regression for the users using the older driver. | ||
|
||
Building of uImage and Applications: | ||
================================== | ||
|
||
As of now since the interface will undergo few changes all the include | ||
files are present in staging itself, to build for dm365 follow below steps, | ||
|
||
- copy vpfe.h from drivers/staging/media/davinci_vpfe/ to | ||
include/media/davinci/ folder for building the uImage. | ||
- copy davinci_vpfe_user.h from drivers/staging/media/davinci_vpfe/ to | ||
include/uapi/linux/davinci_vpfe.h, and add a entry in Kbuild (required | ||
for building application). | ||
- copy dm365_ipipeif_user.h from drivers/staging/media/davinci_vpfe/ to | ||
include/uapi/linux/dm365_ipipeif.h and a entry in Kbuild (required | ||
for building application). |
154 changes: 154 additions & 0 deletions
154
trunk/drivers/staging/media/davinci_vpfe/davinci-vpfe-mc.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
Davinci Video processing Front End (VPFE) driver | ||
|
||
Copyright (C) 2012 Texas Instruments Inc | ||
|
||
Contacts: Manjunath Hadli <manjunath.hadli@ti.com> | ||
Prabhakar Lad <prabhakar.lad@ti.com> | ||
|
||
|
||
Introduction | ||
============ | ||
|
||
This file documents the Texas Instruments Davinci Video processing Front End | ||
(VPFE) driver located under drivers/media/platform/davinci. The original driver | ||
exists for Davinci VPFE, which is now being changed to Media Controller | ||
Framework. | ||
|
||
Currently the driver has been successfully used on the following | ||
version of Davinci: | ||
|
||
DM365/DM368 | ||
|
||
The driver implements V4L2, Media controller and v4l2_subdev interfaces. Sensor, | ||
lens and flash drivers using the v4l2_subdev interface in the kernel are | ||
supported. | ||
|
||
|
||
Split to subdevs | ||
================ | ||
|
||
The Davinci VPFE is split into V4L2 subdevs, each of the blocks inside the VPFE | ||
having one subdev to represent it. Each of the subdevs provide a V4L2 subdev | ||
interface to userspace. | ||
|
||
DAVINCI ISIF | ||
DAVINCI IPIPEIF | ||
DAVINCI IPIPE | ||
DAVINCI CROP RESIZER | ||
DAVINCI RESIZER A | ||
DAVINCI RESIZER B | ||
|
||
Each possible link in the VPFE is modeled by a link in the Media controller | ||
interface. For an example program see [1]. | ||
|
||
|
||
ISIF, IPIPE, and RESIZER block IOCTLs | ||
====================================== | ||
|
||
The Davinci Video processing Front End (VPFE) driver supports standard V4L2 | ||
IOCTLs and controls where possible and practical. Much of the functions provided | ||
by the VPFE, however, does not fall under the standard IOCTL's. | ||
|
||
In general, there is a private ioctl for configuring each of the blocks | ||
containing hardware-dependent functions. | ||
|
||
The following private IOCTLs are supported: | ||
|
||
VIDIOC_VPFE_ISIF_[S/G]_RAW_PARAMS | ||
VIDIOC_VPFE_IPIPE_[S/G]_CONFIG | ||
VIDIOC_VPFE_RSZ_[S/G]_CONFIG | ||
|
||
The parameter structures used by these ioctl's are described in | ||
include/uapi/linux/davinci_vpfe.h. | ||
|
||
The VIDIOC_VPFE_ISIF_S_RAW_PARAMS, VIDIOC_VPFE_IPIPE_S_CONFIG and | ||
VIDIOC_VPFE_RSZ_S_CONFIG are used to configure, enable and disable functions in | ||
the isif, ipipe and resizer blocks respectively. These IOCTL's control several | ||
functions in the blocks they control. VIDIOC_VPFE_ISIF_S_RAW_PARAMS IOCTL | ||
accepts a pointer to struct vpfe_isif_raw_config as its argument. Similarly | ||
VIDIOC_VPFE_IPIPE_S_CONFIG accepts a pointer to struct vpfe_ipipe_config. And | ||
VIDIOC_VPFE_RSZ_S_CONFIG accepts a pointer to struct vpfe_rsz_config as its | ||
argument. Similarly VIDIOC_VPFE_ISIF_G_RAW_PARAMS, VIDIOC_VPFE_IPIPE_G_CONFIG | ||
and VIDIOC_VPFE_RSZ_G_CONFIG are used to get the current configuration set in | ||
the isif, ipipe and resizer blocks respectively. | ||
|
||
The detailed functions of the VPFE itself related to a given VPFE block is | ||
described in the Technical Reference Manuals (TRMs) --- see the end of the | ||
document for those. | ||
|
||
|
||
IPIPEIF block IOCTLs | ||
====================================== | ||
|
||
The following private IOCTLs are supported: | ||
|
||
VIDIOC_VPFE_IPIPEIF_[S/G]_CONFIG | ||
|
||
The parameter structures used by these ioctl's are described in | ||
include/uapi/linux/dm365_ipipeif.h | ||
|
||
The VIDIOC_VPFE_IPIPEIF_S_CONFIG is used to configure the ipipeif | ||
hardware block. The VIDIOC_VPFE_IPIPEIF_S_CONFIG and | ||
VIDIOC_VPFE_IPIPEIF_G_CONFIG accepts a pointer to struct ipipeif_params | ||
as its argument. | ||
|
||
|
||
VPFE Operating Modes | ||
========================================== | ||
|
||
a: Continuous Modes | ||
------------------------ | ||
|
||
1: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> SDRAM | ||
|
||
2: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->| | ||
| | ||
<--------------------<----------------<---------------------<---| | ||
| | ||
V | ||
DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM | ||
|
||
3: tvp514x/tvp7002/mt9p031---> DAVINCI ISIF---> DAVINCI IPIPEIF--->| | ||
| | ||
<--------------------<----------------<---------------------<---| | ||
| | ||
V | ||
DAVINCI IPIPE---> DAVINCI CROP RESIZER--->DAVINCI RESIZER [A/B]---> SDRAM | ||
|
||
a: Single Shot Modes | ||
------------------------ | ||
|
||
1: SDRAM---> DAVINCI IPIPEIF---> DAVINCI IPIPE---> DAVINCI CROP RESIZER--->| | ||
| | ||
<----------------<----------------<------------------<---------------<--| | ||
| | ||
V | ||
DAVINCI RESIZER [A/B]---> SDRAM | ||
|
||
2: SDRAM---> DAVINCI IPIPEIF---> DAVINCI CROP RESIZER--->| | ||
| | ||
<----------------<----------------<---------------<---| | ||
| | ||
V | ||
DAVINCI RESIZER [A/B]---> SDRAM | ||
|
||
|
||
Technical reference manuals (TRMs) and other documentation | ||
========================================================== | ||
|
||
Davinci DM365 TRM: | ||
<URL:http://www.ti.com/lit/ds/sprs457e/sprs457e.pdf> | ||
Referenced MARCH 2009-REVISED JUNE 2011 | ||
|
||
Davinci DM368 TRM: | ||
<URL:http://www.ti.com/lit/ds/sprs668c/sprs668c.pdf> | ||
Referenced APRIL 2010-REVISED JUNE 2011 | ||
|
||
Davinci Video Processing Front End (VPFE) DM36x | ||
<URL:http://www.ti.com/lit/ug/sprufg8c/sprufg8c.pdf> | ||
|
||
|
||
References | ||
========== | ||
|
||
[1] http://git.ideasonboard.org/?p=media-ctl.git;a=summary |