TIOVX User Guide
video_io_csitx.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2020-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 VIDEO_IO_CSITX_H_
64 #define VIDEO_IO_CSITX_H_
65 
66 #include <VX/vx.h>
67 #include <VX/vx_kernels.h>
68 
69 #ifdef __cplusplus
70 extern "C" {
71 #endif
72 
81 #define TIVX_KERNEL_CSITX_NAME "com.ti.csitx"
82 
83 
84 
85 /*********************************
86  * CSITX Control Commands
87  *********************************/
88 
94 #define TIVX_CSITX_PRINT_STATISTICS (0x40000000u)
95 
102 #define TIVX_CSITX_GET_STATISTICS (0x40000001u)
103 
104 
105 /*********************************
106  * CSITX Defines
107  *********************************/
108 
113 #define TIVX_CSITX_MAX_CH (4U)
114 
119 #if defined (SOC_J721S2) || defined (SOC_J784S4)
120 #define TIVX_CSITX_MAX_INST (2U)
121 #else
122 #define TIVX_CSITX_MAX_INST (1U)
123 #endif
124 
129 #define TIVX_CSITX_LANE_BAND_SPEED_80_TO_100_MBPS ((uint32_t) 0x00U)
130 
134 #define TIVX_CSITX_LANE_BAND_SPEED_100_TO_120_MBPS ((uint32_t) 0x01U)
135 
139 #define TIVX_CSITX_LANE_BAND_SPEED_120_TO_160_MBPS ((uint32_t) 0x02U)
140 
144 #define TIVX_CSITX_LANE_BAND_SPEED_160_TO_200_MBPS ((uint32_t) 0x03U)
145 
149 #define TIVX_CSITX_LANE_BAND_SPEED_200_TO_240_MBPS ((uint32_t) 0x04U)
150 
154 #define TIVX_CSITX_LANE_BAND_SPEED_240_TO_320_MBPS ((uint32_t) 0x05U)
155 
159 #define TIVX_CSITX_LANE_BAND_SPEED_320_TO_390_MBPS ((uint32_t) 0x06U)
160 
164 #define TIVX_CSITX_LANE_BAND_SPEED_390_TO_450_MBPS ((uint32_t) 0x07U)
165 
169 #define TIVX_CSITX_LANE_BAND_SPEED_450_TO_510_MBPS ((uint32_t) 0x08U)
170 
174 #define TIVX_CSITX_LANE_BAND_SPEED_510_TO_560_MBPS ((uint32_t) 0x09U)
175 
179 #define TIVX_CSITX_LANE_BAND_SPEED_560_TO_640_MBPS ((uint32_t) 0x0AU)
180 
184 #define TIVX_CSITX_LANE_BAND_SPEED_640_TO_690_MBPS ((uint32_t) 0x0BU)
185 
189 #define TIVX_CSITX_LANE_BAND_SPEED_690_TO_770_MBPS ((uint32_t) 0x0CU)
190 
194 #define TIVX_CSITX_LANE_BAND_SPEED_770_TO_870_MBPS ((uint32_t) 0x0DU)
195 
199 #define TIVX_CSITX_LANE_BAND_SPEED_870_TO_950_MBPS ((uint32_t) 0x0EU)
200 
204 #define TIVX_CSITX_LANE_BAND_SPEED_950_TO_1000_MBPS ((uint32_t) 0x0FU)
205 
209 #define TIVX_CSITX_LANE_BAND_SPEED_1000_TO_1200_MBPS ((uint32_t) 0x10U)
210 
214 #define TIVX_CSITX_LANE_BAND_SPEED_1200_TO_1400_MBPS ((uint32_t) 0x11U)
215 
219 #define TIVX_CSITX_LANE_BAND_SPEED_1400_TO_1600_MBPS ((uint32_t) 0x12U)
220 
224 #define TIVX_CSITX_LANE_BAND_SPEED_1600_TO_1800_MBPS ((uint32_t) 0x13U)
225 
229 #define TIVX_CSITX_LANE_BAND_SPEED_1800_TO_2000_MBPS ((uint32_t) 0x14U)
230 
234 #define TIVX_CSITX_LANE_BAND_SPEED_2000_TO_2200_MBPS ((uint32_t) 0x15U)
235 
239 #define TIVX_CSITX_LANE_BAND_SPEED_2200_TO_2500_MBPS ((uint32_t) 0x16U)
240 
245 #define TIVX_CSITX_LANE_BAND_SPEED_RESERVED ((uint32_t) 0x17U)
246 
251 #define TIVX_CSITX_LANE_SPEED_MBPS_RESERVED ((uint32_t) 0xFFFFFFFFU)
252 
253 /*********************************
254  * CSITX STRUCTURES
255  *********************************/
264 typedef struct
265 {
266  uint32_t rxCompEnable;
267  uint32_t rxv1p3MapEnable;
268  uint32_t numDataLanes;
269  uint32_t lanePolarityCtrl[5];
270  uint32_t vBlank;
271  uint32_t hBlank;
272  uint32_t startDelayPeriod;
273  uint32_t laneBandSpeed;
274  uint32_t laneSpeedMbps;
275  uint32_t fifoDepth;
277 
283 typedef struct
284 {
286  uint32_t instId[TIVX_CSITX_MAX_INST];
287  uint32_t numInst;
288  uint32_t numCh;
289  uint32_t chVcNum[TIVX_CSITX_MAX_CH];
290  uint32_t chInstMap[TIVX_CSITX_MAX_CH];
292 
298 typedef struct
299 {
303  uint32_t queueCount[TIVX_CSITX_MAX_INST][TIVX_CSITX_MAX_CH];
307  uint32_t dequeueCount[TIVX_CSITX_MAX_INST][TIVX_CSITX_MAX_CH];
311  uint32_t frmRepeatCount[TIVX_CSITX_MAX_INST][TIVX_CSITX_MAX_CH];
315  uint32_t overflowCount[TIVX_CSITX_MAX_INST];
317 
318 /*********************************
319  * Function Prototypes
320  *********************************/
321 
327 
333 
334 
335 
352 VX_API_ENTRY vx_node VX_API_CALL tivxCsitxNode(vx_graph graph,
353  vx_user_data_object configuration,
354  vx_object_array input);
355 
356 
365 
366 #ifdef __cplusplus
367 }
368 #endif
369 
370 #endif /* VIDEO_IO_CSITX_H_ */
371 
Csitx status structure used to get the current status.
#define TIVX_CSITX_MAX_CH
Maximum number of channels supported in the csitx node.
The CSITX DRV instance configuration data structure used by the TIVX_KERNEL_CSITX kernel...
void tivx_csitx_params_init(tivx_csitx_params_t *prms)
Function to initialize Csitx Parameters.
VX_API_ENTRY vx_node VX_API_CALL tivxCsitxNode(vx_graph graph, vx_user_data_object configuration, vx_object_array input)
[Graph] Creates a CSI Tx node.
void tivxUnRegisterVideoIOTargetCsitxKernels(void)
Function to un-register Video IO Kernels on the csitx Target.
struct _vx_user_data_object * vx_user_data_object
The User Data Object. User Data Object is a strongly-typed container for other data structures...
struct _vx_object_array * vx_object_array
#define TIVX_CSITX_MAX_INST
Maximum number of instances supported in the csitx node.
The configuration data structure used by the TIVX_KERNEL_CSITX kernel.
void tivxRegisterVideoIOTargetCsitxKernels(void)
Function to register Video IO Kernels on the csitx Target.
struct _vx_graph * vx_graph
struct _vx_node * vx_node
vx_status(* VX_API_CALL)(vx_reference *ref)
Callback type used to register release callbacks from object derived from references.
Definition: vx_reference.h:56