TIOVX User Guide
hwa_vpac_viss.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2019-2021 Texas Instruments Incorporated
4  *
5  * All rights reserved not granted herein.
6  *
7  * Limited License.
8  *
9  * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10  * license under copyrights and patents it now or hereafter owns or controls to make,
11  * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12  * terms herein. With respect to the foregoing patent license, such license is granted
13  * solely to the extent that any such patent is necessary to Utilize the software alone.
14  * The patent license shall not apply to any combinations which include this software,
15  * other than combinations with devices manufactured by or for TI ("TI Devices").
16  * No hardware patent is licensed hereunder.
17  *
18  * Redistributions must preserve existing copyright notices and reproduce this license
19  * (including the above copyright notice and the disclaimer and (if applicable) source
20  * code license limitations below) in the documentation and/or other materials provided
21  * with the distribution
22  *
23  * Redistribution and use in binary form, without modification, are permitted provided
24  * that the following conditions are met:
25  *
26  * * No reverse engineering, decompilation, or disassembly of this software is
27  * permitted with respect to any software provided in binary form.
28  *
29  * * any redistribution and use are licensed by TI for use only with TI Devices.
30  *
31  * * Nothing shall obligate TI to provide you with source code for the software
32  * licensed and provided to you in object code.
33  *
34  * If software source code is provided to you, modification and redistribution of the
35  * source code are permitted provided that the following conditions are met:
36  *
37  * * any redistribution and use of the source code, including any resulting derivative
38  * works, are licensed by TI for use only with TI Devices.
39  *
40  * * any redistribution and use of any object code compiled from the source code
41  * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42  *
43  * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44  *
45  * may be used to endorse or promote products derived from this software without
46  * specific prior written permission.
47  *
48  * DISCLAIMER.
49  *
50  * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53  * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59  * OF THE POSSIBILITY OF SUCH DAMAGE.
60  *
61  */
62 
63 #ifndef HWA_VPAC_VISS_H_
64 #define HWA_VPAC_VISS_H_
65 
66 #include <VX/vx.h>
67 #include <VX/vx_kernels.h>
68 
69 #include <TI/hwa_vpac_viss_fcp.h>
70 
71 #ifdef VPAC3
72 #include <TI/hwa_vpac_viss3.h>
73 #elif defined (VPAC3L)
74 #include <TI/hwa_vpac_viss3l.h>
75 #else
76 #include <TI/hwa_vpac_viss1.h>
77 #endif
78 
79 #ifdef __cplusplus
80 extern "C" {
81 #endif
82 
91 #define TIVX_KERNEL_VPAC_VISS_NAME "com.ti.hwa.vpac_viss"
92 
93 /*********************************
94  * VPAC_VISS Control Commands
95  *********************************/
96 
115 #define TIVX_VPAC_VISS_CMD_SET_DCC_PARAMS (0x30000000u)
116 
117 /*********************************
118  * VPAC_VISS Defines
119  *********************************/
120 
127 #define TIVX_VPAC_VISS_MAX_H3A_STAT_NUMBYTES (24576U)
128 
138 #define TIVX_VPAC_VISS_H3A_OUT_BUFF_ALIGN (64U)
139 
147 #define TIVX_VPAC_VISS_H3A_IN_RAW0 (0U)
148 
149 #define TIVX_VPAC_VISS_H3A_IN_RAW1 (1U)
150 
151 #define TIVX_VPAC_VISS_H3A_IN_RAW2 (2U)
152 
153 #define TIVX_VPAC_VISS_H3A_IN_LSC (3U)
154 #ifdef VPAC3L
155 
156 #define TIVX_VPAC_VISS_H3A_IN_PCID (4U)
157 #endif
158 
160 #define TIVX_VPAC_VISS_H3A_MODE_AEWB (0U)
161 
162 #define TIVX_VPAC_VISS_H3A_MODE_AF (1U)
163 
167 /*********************************
168  * VPAC_VISS STRUCTURES
169  *********************************/
170 
180 typedef struct {
191  uint32_t h3a_source_data;
193  uint32_t exposure_time;
195  uint32_t analog_gain;
197  uint32_t ae_valid;
199  uint32_t ae_converged;
201  uint32_t digital_gain;
203  uint32_t wb_gains[4];
205  int32_t wb_offsets[4];
209  uint32_t awb_valid;
211  uint32_t awb_converged;
213 
224 typedef struct
225 {
227  uint16_t aewwin1_WINH;
229  uint16_t aewwin1_WINW;
231  uint16_t aewwin1_WINVC;
233  uint16_t aewwin1_WINHC;
239 
249 typedef struct {
256  uint32_t aew_af_mode;
267  uint32_t h3a_source_data;
273  uint32_t cpu_id;
277  uint32_t channel_id;
279  uint32_t size;
281  uint32_t resv[(TIVX_VPAC_VISS_H3A_OUT_BUFF_ALIGN-(sizeof(tivx_h3a_aew_config)+16U))/4U ];
285 
286 /*********************************
287  * Function Prototypes
288  *********************************/
289 
295 
301 
310 
319 
329 
338 
339 
340 #ifdef __cplusplus
341 }
342 #endif
343 
344 #endif /* HWA_VPAC_VISS_H_ */
345 
void tivx_ae_awb_params_init(tivx_ae_awb_params_t *prms)
Function to initialize AEWB Output Parameters These parameters come from the AEWB algorithm...
Data corresponding to results of 2A algorithm.
The VISS kernels in this kernel extension.
The VISS kernels in this kernel extension.
void tivx_h3a_aew_config_init(tivx_h3a_aew_config *prms)
Function to initialize H3A aew Config.
void tivxRegisterHwaTargetVpacVissKernels(void)
Function to register HWA Kernels on the vpac_viss Target.
uint32_t h3a_source_data
The h3a_output data structure used by the TIVX_KERNEL_VISS kernel.
uint32_t channel_id
void tivxUnRegisterHwaTargetVpacVissKernels(void)
Function to un-register HWA Kernels on the vpac_viss Target.
#define TIVX_VPAC_VISS_H3A_OUT_BUFF_ALIGN
The H3A output memory address alignment.
The VISS kernels in this kernel extension.
uint16_t aewsubwin_AEWINCH
void tivx_h3a_data_init(tivx_h3a_data_t *prms)
Function to initialize H3A data Parameters.
The configuration data structure used by the TIVX_KERNEL_VISS kernel.
tivx_h3a_aew_config aew_config
H3A AEW configuration data structure used by the TIVX_KERNEL_VISS kernel.
uint32_t aew_af_mode
void tivx_vpac_viss_params_init(tivx_vpac_viss_params_t *prms)
Function to initialize VISS Parameters.
#define TIVX_VPAC_VISS_MAX_H3A_STAT_NUMBYTES
Maximum H3A number of bytes in statistics data array.
The VISS FCP structures in this kernel extension.
uint16_t aewsubwin_AEWINCV