Add documentation on the Davinci VPFE driver. Document the subdevs,
and private IOTCLs the driver implements

Signed-off-by: Manjunath Hadli <[email protected]>
Signed-off-by: Lad, Prabhakar <[email protected]>
---
 Documentation/video4linux/davinci-vpfe-mc.txt |  263 +++++++++++++++++++++++++
 1 files changed, 263 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/video4linux/davinci-vpfe-mc.txt

diff --git a/Documentation/video4linux/davinci-vpfe-mc.txt 
b/Documentation/video4linux/davinci-vpfe-mc.txt
new file mode 100644
index 0000000..968194f
--- /dev/null
+++ b/Documentation/video4linux/davinci-vpfe-mc.txt
@@ -0,0 +1,263 @@
+Davinci Video processing Front End (VPFE) driver
+
+Copyright (C) 2012 Texas Instruments Inc
+
+Contacts: Manjunath Hadli <[email protected]>
+
+Introduction
+============
+
+This file documents the Texas Instruments Davinci Video processing Front End
+(VPFE) driver located under drivers/media/video/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 Davinic 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 CCDC
+       DAVINCI PREVIEWER
+       DAVINCI RESIZER
+       DAVINCI AEW
+       DAVINCI AF
+
+Each possible link in the VPFE is modeled by a link in the Media controller
+interface. For an example program see [1].
+
+
+Private 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 IOCTLs.
+
+In general, there is a private ioctl for configuring each of the blocks
+containing hardware-dependent functions.
+
+The following private IOCTLs are supported:
+
+1: IOCTL: PREV_S_PARAM/PREV_G_PARAM
+Description:
+       Sets/Gets the parameters required by the previewer module
+Parameter:
+       /**
+        * struct prev_module_param- structure to configure preview modules
+        * @version: Version of the preview module
+        * @len: Length of the module config structure
+        * @module_id: Module id
+        * @param: pointer to module config parameter.
+        */
+       struct prev_module_param {
+               char version[IMP_MAX_NAME_SIZE];
+               unsigned short len;
+               unsigned short module_id;
+               void *param;
+       };
+
+2: IOCTL: PREV_S_CONFIG/PREV_G_CONFIG
+Description:
+       Sets/Gets the configuration required by the previewer channel
+Parameter:
+       /**
+        * struct prev_channel_config - structure for configuring the previewer 
channel
+        * @len: Length of the user configuration
+        * @config: pointer to either single shot config or continuous
+        */
+       struct prev_channel_config {
+               unsigned short len;
+               void *config;
+       };
+
+3: IOCTL: PREV_ENUM_CAP
+Description:
+       Queries the modules available in the image processor for preview the
+       input image.
+Parameter:
+       /**
+        * struct prev_cap - structure to enumerate capabilities of previewer
+        * @index: application use this to iterate over the available modules
+        * @version: version of the preview module
+        * @module_id: module id
+        * @control: control operation allowed in continuous mode? 1 - allowed, 
0 - not allowed
+        * @path: path on which the module is sitting
+        * @module_name: module name
+        */
+       struct prev_cap {
+               unsigned short index;
+               char version[IMP_MAX_NAME_SIZE];
+               unsigned short module_id;
+               char control;
+               enum imp_data_paths path;
+               char module_name[IMP_MAX_NAME_SIZE];
+       };
+
+4: IOCTL: RSZ_S_CONFIG/RSZ_G_CONFIG
+Description:
+       Sets/Gets the configuration required by the resizer channel
+Parameter:
+       /**
+        * struct rsz_channel_config - structure for configuring the resizer 
channel
+        * @chain: chain this resizer at the previewer output
+        * @len: length of the user configuration
+        * @config: pointer to either single shot config or continuous
+        */
+       struct rsz_channel_config {
+               unsigned char chain;
+               unsigned short len;
+               void *config;
+       };
+
+5: IOCTL: VPFE_CMD_S_CCDC_RAW_PARAMS/VPFE_CMD_G_CCDC_RAW_PARAMS
+Description:
+       Sets/Gets the CCDC parameter
+Parameter:
+       /**
+        * struct ccdc_config_params_raw - structure for configuring ccdc params
+        * @linearize: linearization parameters for image sensor data input
+        * @df_csc: data formatter or CSC
+        * @dfc: defect Pixel Correction (DFC) configuration
+        * @bclamp: Black/Digital Clamp configuration
+        * @gain_offset: Gain, offset adjustments
+        * @culling: Culling
+        * @pred: predictor for DPCM compression
+        * @horz_offset: horizontal offset for Gain/LSC/DFC
+        * @vert_offset: vertical offset for Gain/LSC/DFC
+        * @col_pat_field0: color pattern for field 0
+        * @col_pat_field1: color pattern for field 1
+        * @data_size: data size from 8 to 16 bits
+        * @data_shift: data shift applied before storing to SDRAM
+        * @test_pat_gen: enable input test pattern generation
+        */
+       struct ccdc_config_params_raw {
+               struct ccdc_linearize linearize;
+               struct ccdc_df_csc df_csc;
+               struct ccdc_dfc dfc;
+               struct ccdc_black_clamp bclamp;
+               struct ccdc_gain_offsets_adj gain_offset;
+               struct ccdc_cul culling;
+               enum ccdc_dpcm_predictor pred;
+               unsigned short horz_offset;
+               unsigned short vert_offset;
+               struct ccdc_col_pat col_pat_field0;
+               struct ccdc_col_pat col_pat_field1;
+               enum ccdc_data_size data_size;
+               enum ccdc_datasft data_shift;
+               unsigned char test_pat_gen;
+       };
+
+6: IOCTL: AF_S_PARAM/AF_G_PARAM
+Description:
+       AF_S_PARAM performs the hardware setup and sets the parameter for
+       AF engine.AF_G_PARAM gets the parameter setup in AF engine
+Parameter:
+       /**
+        * struct af_configuration - struct to configure parameters of AF engine
+        * @alaw_enable: ALAW status
+        * @fv_sel: focus value selection
+        * @hmf_config: HMF configurations
+        * @rgb_pos: RGB Positions. Only applicable with AF_HFV_ONLY selection
+        * @iir_config: IIR filter configurations
+        * @fir_config: FIR filter configuration
+        * @paxel_config: Paxel parameters
+        * @mode: accumulator mode
+        */
+       struct af_configuration {
+               enum af_enable_flag alaw_enable;
+               enum af_focus_val_sel fv_sel;
+               struct af_hmf hmf_config;
+               enum rgbpos rgb_pos;
+               struct af_iir iir_config;
+               struct af_fir fir_config;
+               struct af_paxel paxel_config;
+               enum af_mode mode;
+       };
+
+7: IOCTL: AF_GET_STAT
+Description:
+       Copy the entire statistics located in application buffer
+       to user space from the AF engine
+Parameter:
+       /**
+        * struct af_statdata - structure to get statistics from AF engine
+        * @buffer: pointer to buffer
+        * @buf_length: length of buffer
+        */
+       struct af_statdata {
+               void *buffer;
+               int buf_length;
+       };
+
+8: IOCTL: AEW_S_PARAM/AEW_G_PARAM
+Description:
+       AEW_S_PARAM performs the hardware setup and sets the parameter for
+       AEW engine.AEW_G_PARAM gets the parameter setup in AEW engine
+Parameter:
+       /**
+        * struct aew_configuration -  struct to configure parameters of AEW 
engine
+        * @alaw_enable: A-law status
+        * @format: AE/AWB output format
+        * @sum_shift: AW/AWB right shift value for sum of pixels
+        * @saturation_limit: Saturation Limit
+        * @hmf_config: HMF configurations
+        * @window_config: Window for AEW Engine
+        * @blackwindow_config: Black Window
+        */
+       struct aew_configuration {
+               enum aew_enable_flag alaw_enable;
+               enum aew_output_format out_format;
+               char sum_shift;
+               int saturation_limit;
+               struct aew_hmf hmf_config;
+               struct aew_window window_config;
+               struct aew_black_window blackwindow_config;
+       };
+
+9: IOCTL: AEW_GET_STAT
+Description:
+       Copy the entire statistics located in application buffer
+       to user space from the AEW engine
+Parameter:
+       /**
+        * struct aew_statdata - structure to get statistics from AEW engine
+        * @buffer: pointer to buffer
+        * @buf_length: length of buffer
+        */
+       struct aew_statdata {
+               void *buffer;
+               int buf_length;
+       };
+
+
+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
-- 
1.7.4.1

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to