1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef __HI_COMM_VO_DEV_H__ 17 #define __HI_COMM_VO_DEV_H__ 18 19 #include "hi_type.h" 20 #include "hi_common.h" 21 #include "hi_errno.h" 22 #include "hi_comm_video.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif /* End of #ifdef __cplusplus */ 29 30 typedef enum hiEN_VOU_ERR_CODE_E { 31 EN_ERR_VO_DEV_NOT_CONFIG = 0x40, 32 EN_ERR_VO_DEV_NOT_ENABLE = 0x41, 33 EN_ERR_VO_DEV_HAS_ENABLED = 0x42, 34 EN_ERR_VO_DEV_HAS_BINDED = 0x43, 35 EN_ERR_VO_DEV_NOT_BINDED = 0x44, 36 37 ERR_VO_NOT_ENABLE = 0x45, 38 ERR_VO_NOT_DISABLE = 0x46, 39 ERR_VO_NOT_CONFIG = 0x47, 40 41 ERR_VO_CHN_NOT_DISABLE = 0x48, 42 ERR_VO_CHN_NOT_ENABLE = 0x49, 43 ERR_VO_CHN_NOT_CONFIG = 0x4a, 44 ERR_VO_CHN_NOT_ALLOC = 0x4b, 45 46 ERR_VO_CCD_INVALID_PAT = 0x4c, 47 ERR_VO_CCD_INVALID_POS = 0x4d, 48 49 ERR_VO_WAIT_TIMEOUT = 0x4e, 50 ERR_VO_INVALID_VFRAME = 0x4f, 51 ERR_VO_INVALID_RECT_PARA = 0x50, 52 ERR_VO_SETBEGIN_ALREADY = 0x51, 53 ERR_VO_SETBEGIN_NOTYET = 0x52, 54 ERR_VO_SETEND_ALREADY = 0x53, 55 ERR_VO_SETEND_NOTYET = 0x54, 56 57 ERR_VO_GRP_INVALID_ID = 0x55, 58 ERR_VO_GRP_NOT_CREATE = 0x56, 59 ERR_VO_GRP_HAS_CREATED = 0x57, 60 ERR_VO_GRP_NOT_DESTROY = 0x58, 61 ERR_VO_GRP_CHN_FULL = 0x59, 62 ERR_VO_GRP_CHN_EMPTY = 0x5a, 63 ERR_VO_GRP_CHN_NOT_EMPTY = 0x5b, 64 ERR_VO_GRP_INVALID_SYN_MODE = 0x5c, 65 ERR_VO_GRP_INVALID_BASE_PTS = 0x5d, 66 ERR_VO_GRP_NOT_START = 0x5e, 67 ERR_VO_GRP_NOT_STOP = 0x5f, 68 ERR_VO_GRP_INVALID_FRMRATE = 0x60, 69 ERR_VO_GRP_CHN_HAS_REG = 0x61, 70 ERR_VO_GRP_CHN_NOT_REG = 0x62, 71 ERR_VO_GRP_CHN_NOT_UNREG = 0x63, 72 ERR_VO_GRP_BASE_NOT_CFG = 0x64, 73 74 ERR_GFX_NOT_DISABLE = 0x65, 75 ERR_GFX_NOT_BIND = 0x66, 76 ERR_GFX_NOT_UNBIND = 0x67, 77 ERR_GFX_INVALID_ID = 0x68, 78 79 ERR_VO_WBC_NOT_DISABLE = 0x69, 80 ERR_VO_WBC_NOT_CONFIG = 0x6a, 81 82 ERR_VO_CHN_AREA_OVERLAP = 0x6b, 83 84 EN_ERR_INVALID_WBCID = 0x6c, 85 EN_ERR_INVALID_LAYERID = 0x6d, 86 EN_ERR_VO_VIDEO_HAS_BINDED = 0x6e, 87 EN_ERR_VO_VIDEO_NOT_BINDED = 0x6f, 88 ERR_VO_WBC_HAS_BIND = 0x70, 89 ERR_VO_WBC_HAS_CONFIG = 0x71, 90 ERR_VO_WBC_NOT_BIND = 0x72, 91 92 /* new added */ 93 ERR_VO_BUTT 94 } EN_VOU_ERR_CODE_E; 95 96 /* System define error code */ 97 #define HI_ERR_VO_BUSY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY) 98 #define HI_ERR_VO_NO_MEM HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM) 99 #define HI_ERR_VO_NULL_PTR HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR) 100 #define HI_ERR_VO_SYS_NOTREADY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY) 101 #define HI_ERR_VO_INVALID_DEVID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID) 102 #define HI_ERR_VO_INVALID_CHNID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID) 103 #define HI_ERR_VO_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM) 104 #define HI_ERR_VO_NOT_SUPPORT HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT) 105 #define HI_ERR_VO_NOT_PERMIT HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM) 106 #define HI_ERR_VO_INVALID_WBCID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_WBCID) 107 #define HI_ERR_VO_INVALID_LAYERID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_LAYERID) 108 109 /* Device relative error code */ 110 #define HI_ERR_VO_DEV_NOT_CONFIG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_DEV_NOT_CONFIG) 111 #define HI_ERR_VO_DEV_NOT_ENABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_DEV_NOT_ENABLE) 112 #define HI_ERR_VO_DEV_HAS_ENABLED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_DEV_HAS_ENABLED) 113 #define HI_ERR_VO_DEV_HAS_BINDED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_DEV_HAS_BINDED) 114 #define HI_ERR_VO_DEV_NOT_BINDED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_DEV_NOT_BINDED) 115 116 /* Video layer relative error code */ 117 #define HI_ERR_VO_VIDEO_NOT_ENABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_NOT_ENABLE) 118 #define HI_ERR_VO_VIDEO_NOT_DISABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_NOT_DISABLE) 119 #define HI_ERR_VO_VIDEO_NOT_CONFIG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_NOT_CONFIG) 120 #define HI_ERR_VO_VIDEO_HAS_BINDED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_VIDEO_HAS_BINDED) 121 #define HI_ERR_VO_VIDEO_NOT_BINDED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, EN_ERR_VO_VIDEO_NOT_BINDED) 122 123 /* WBC Relative error code */ 124 #define HI_ERR_VO_WBC_NOT_DISABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WBC_NOT_DISABLE) 125 #define HI_ERR_VO_WBC_NOT_CONFIG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WBC_NOT_CONFIG) 126 #define HI_ERR_VO_WBC_HAS_CONFIG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WBC_HAS_CONFIG) 127 #define HI_ERR_VO_WBC_NOT_BIND HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WBC_NOT_BIND) 128 #define HI_ERR_VO_WBC_HAS_BIND HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WBC_HAS_BIND) 129 130 /* Channel Relative error code */ 131 #define HI_ERR_VO_CHN_NOT_DISABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CHN_NOT_DISABLE) 132 #define HI_ERR_VO_CHN_NOT_ENABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CHN_NOT_ENABLE) 133 #define HI_ERR_VO_CHN_NOT_CONFIG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CHN_NOT_CONFIG) 134 #define HI_ERR_VO_CHN_NOT_ALLOC HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CHN_NOT_ALLOC) 135 #define HI_ERR_VO_CHN_AREA_OVERLAP HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CHN_AREA_OVERLAP) 136 137 /* Cascade Relatvie error code */ 138 #define HI_ERR_VO_INVALID_PATTERN HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CCD_INVALID_PAT) 139 #define HI_ERR_VO_INVALID_POSITION HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_CCD_INVALID_POS) 140 141 /* MISCellaneous error code */ 142 #define HI_ERR_VO_WAIT_TIMEOUT HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_WAIT_TIMEOUT) 143 #define HI_ERR_VO_INVALID_VFRAME HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_INVALID_VFRAME) 144 #define HI_ERR_VO_INVALID_RECT_PARA HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_INVALID_RECT_PARA) 145 #define HI_ERR_VO_SETBEGIN_ALREADY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_SETBEGIN_ALREADY) 146 #define HI_ERR_VO_SETBEGIN_NOTYET HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_SETBEGIN_NOTYET) 147 #define HI_ERR_VO_SETEND_ALREADY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_SETEND_ALREADY) 148 #define HI_ERR_VO_SETEND_NOTYET HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_SETEND_NOTYET) 149 150 /* Synchronization group relative error code */ 151 #define HI_ERR_VO_GRP_INVALID_ID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_INVALID_ID) 152 #define HI_ERR_VO_GRP_NOT_CREATE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_NOT_CREATE) 153 #define HI_ERR_VO_GRP_HAS_CREATED HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_HAS_CREATED) 154 #define HI_ERR_VO_GRP_NOT_DESTROY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_NOT_DESTROY) 155 #define HI_ERR_VO_GRP_CHN_FULL HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_FULL) 156 #define HI_ERR_VO_GRP_CHN_EMPTY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_EMPTY) 157 #define HI_ERR_VO_GRP_CHN_NOT_EMPTY HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_NOT_EMPTY) 158 #define HI_ERR_VO_GRP_INVALID_SYN_MODE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_INVALID_SYN_MODE) 159 #define HI_ERR_VO_GRP_INVALID_BASE_PTS HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_INVALID_BASE_PTS) 160 #define HI_ERR_VO_GRP_NOT_START HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_NOT_START) 161 #define HI_ERR_VO_GRP_NOT_STOP HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_NOT_STOP) 162 #define HI_ERR_VO_GRP_INVALID_FRMRATE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_INVALID_FRMRATE) 163 #define HI_ERR_VO_GRP_CHN_HAS_REG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_HAS_REG) 164 #define HI_ERR_VO_GRP_CHN_NOT_REG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_NOT_REG) 165 #define HI_ERR_VO_GRP_CHN_NOT_UNREG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_CHN_NOT_UNREG) 166 #define HI_ERR_VO_GRP_BASE_NOT_CFG HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_VO_GRP_BASE_NOT_CFG) 167 168 /* Graphics layer relative error code */ 169 #define HI_ERR_VO_GFX_NOT_DISABLE HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_GFX_NOT_DISABLE) 170 #define HI_ERR_VO_GFX_NOT_BIND HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_GFX_NOT_BIND) 171 #define HI_ERR_VO_GFX_NOT_UNBIND HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_GFX_NOT_UNBIND) 172 #define HI_ERR_VO_GFX_INVALID_ID HI_DEF_ERR(HI_ID_VO, EN_ERR_LEVEL_ERROR, ERR_GFX_INVALID_ID) 173 174 /* VO video output interface type */ 175 #define VO_INTF_CVBS (0x01L << 0) 176 #define VO_INTF_YPBPR (0x01L << 1) 177 #define VO_INTF_VGA (0x01L << 2) 178 #define VO_INTF_BT656 (0x01L << 3) 179 #define VO_INTF_BT1120 (0x01L << 4) 180 #define VO_INTF_HDMI (0x01L << 5) 181 #define VO_INTF_LCD (0x01L << 6) 182 #define VO_INTF_BT656_H (0x01L << 7) 183 #define VO_INTF_BT656_L (0x01L << 8) 184 #define VO_INTF_LCD_6BIT (0x01L << 9) 185 #define VO_INTF_LCD_8BIT (0x01L << 10) 186 #define VO_INTF_LCD_16BIT (0x01L << 11) 187 #define VO_INTF_LCD_18BIT (0x01L << 12) 188 #define VO_INTF_LCD_24BIT (0x01L << 13) 189 #define VO_INTF_MIPI (0x01L << 14) 190 #define VO_INTF_MIPI_SLAVE (0x01L << 15) 191 192 typedef HI_U32 VO_INTF_TYPE_E; 193 194 typedef enum hiVO_INTF_SYNC_E { 195 VO_OUTPUT_PAL = 0, /* PAL standard */ 196 VO_OUTPUT_NTSC, /* NTSC standard */ 197 198 VO_OUTPUT_1080P24, /* 1920 x 1080 at 24 Hz. */ 199 VO_OUTPUT_1080P25, /* 1920 x 1080 at 25 Hz. */ 200 VO_OUTPUT_1080P30, /* 1920 x 1080 at 30 Hz. */ 201 202 VO_OUTPUT_720P50, /* 1280 x 720 at 50 Hz. */ 203 VO_OUTPUT_720P60, /* 1280 x 720 at 60 Hz. */ 204 VO_OUTPUT_1080I50, /* 1920 x 1080 at 50 Hz, interlace. */ 205 VO_OUTPUT_1080I60, /* 1920 x 1080 at 60 Hz, interlace. */ 206 VO_OUTPUT_1080P50, /* 1920 x 1080 at 50 Hz. */ 207 VO_OUTPUT_1080P60, /* 1920 x 1080 at 60 Hz. */ 208 209 VO_OUTPUT_576P50, /* 720 x 576 at 50 Hz. */ 210 VO_OUTPUT_480P60, /* 720 x 480 at 60 Hz. */ 211 212 VO_OUTPUT_800x600_60, /* VESA 800 x 600 at 60 Hz (non-interlaced) */ 213 VO_OUTPUT_1024x768_60, /* VESA 1024 x 768 at 60 Hz (non-interlaced) */ 214 VO_OUTPUT_1280x1024_60, /* VESA 1280 x 1024 at 60 Hz (non-interlaced) */ 215 VO_OUTPUT_1366x768_60, /* VESA 1366 x 768 at 60 Hz (non-interlaced) */ 216 VO_OUTPUT_1440x900_60, /* VESA 1440 x 900 at 60 Hz (non-interlaced) CVT Compliant */ 217 VO_OUTPUT_1280x800_60, /* 1280*800@60Hz VGA@60Hz */ 218 VO_OUTPUT_1600x1200_60, /* VESA 1600 x 1200 at 60 Hz (non-interlaced) */ 219 VO_OUTPUT_1680x1050_60, /* VESA 1680 x 1050 at 60 Hz (non-interlaced) */ 220 VO_OUTPUT_1920x1200_60, /* VESA 1920 x 1600 at 60 Hz (non-interlaced) CVT (Reduced Blanking) */ 221 VO_OUTPUT_640x480_60, /* VESA 640 x 480 at 60 Hz (non-interlaced) CVT */ 222 VO_OUTPUT_960H_PAL, /* ITU-R BT.1302 960 x 576 at 50 Hz (interlaced) */ 223 VO_OUTPUT_960H_NTSC, /* ITU-R BT.1302 960 x 480 at 60 Hz (interlaced) */ 224 VO_OUTPUT_1920x2160_30, /* 1920x2160_30 */ 225 VO_OUTPUT_2560x1440_30, /* 2560x1440_30 */ 226 VO_OUTPUT_2560x1440_60, /* 2560x1440_60 */ 227 VO_OUTPUT_2560x1600_60, /* 2560x1600_60 */ 228 VO_OUTPUT_3840x2160_24, /* 3840x2160_24 */ 229 VO_OUTPUT_3840x2160_25, /* 3840x2160_25 */ 230 VO_OUTPUT_3840x2160_30, /* 3840x2160_30 */ 231 VO_OUTPUT_3840x2160_50, /* 3840x2160_50 */ 232 VO_OUTPUT_3840x2160_60, /* 3840x2160_60 */ 233 VO_OUTPUT_4096x2160_24, /* 4096x2160_24 */ 234 VO_OUTPUT_4096x2160_25, /* 4096x2160_25 */ 235 VO_OUTPUT_4096x2160_30, /* 4096x2160_30 */ 236 VO_OUTPUT_4096x2160_50, /* 4096x2160_50 */ 237 VO_OUTPUT_4096x2160_60, /* 4096x2160_60 */ 238 VO_OUTPUT_320x240_60, /* For ota5182 at 60 Hz (8bit) */ 239 VO_OUTPUT_320x240_50, /* For ili9342 at 50 Hz (6bit) */ 240 VO_OUTPUT_240x320_50, /* Hi3559AV100: For ili9341 at 50 Hz (6bit) */ 241 /* Hi3556AV100/Hi3519AV100: For st7789 at 50Hz(6bit) */ 242 VO_OUTPUT_240x320_60, /* For ili9341 at 60 Hz (16bit) */ 243 VO_OUTPUT_800x600_50, /* For LCD at 50 Hz (24bit) */ 244 VO_OUTPUT_720x1280_60, /* For MIPI DSI Tx 720 x1280 at 60 Hz */ 245 VO_OUTPUT_1080x1920_60, /* For MIPI DSI Tx 1080x1920 at 60 Hz */ 246 VO_OUTPUT_7680x4320_30, /* For HDMI2.1 at 30 Hz */ 247 VO_OUTPUT_USER, /* User timing. */ 248 249 VO_OUTPUT_BUTT 250 } VO_INTF_SYNC_E; 251 252 typedef enum hiVO_CSC_MATRIX_E { 253 VO_CSC_MATRIX_IDENTITY = 0, /* Identity CSC matrix. */ 254 255 VO_CSC_MATRIX_BT601_TO_BT709, /* BT601 to BT709 */ 256 VO_CSC_MATRIX_BT709_TO_BT601, /* BT709 to BT601 */ 257 258 VO_CSC_MATRIX_BT601_TO_RGB_PC, /* BT601 to RGB */ 259 VO_CSC_MATRIX_BT709_TO_RGB_PC, /* BT709 to RGB */ 260 261 VO_CSC_MATRIX_RGB_TO_BT601_PC, /* RGB to BT601 FULL */ 262 VO_CSC_MATRIX_RGB_TO_BT709_PC, /* RGB to BT709 FULL */ 263 264 VO_CSC_MATRIX_RGB_TO_BT2020_PC, /* RGB to BT.2020 */ 265 VO_CSC_MATRIX_BT2020_TO_RGB_PC, /* BT.2020 to RGB */ 266 267 VO_CSC_MATRIX_RGB_TO_BT601_TV, /* RGB to BT601 LIMIT */ 268 VO_CSC_MATRIX_RGB_TO_BT709_TV, /* RGB to BT709 LIMIT */ 269 270 VO_CSC_MATRIX_BUTT 271 } VO_CSC_MATRIX_E; 272 typedef struct hiVO_SYNC_INFO_S { 273 HI_BOOL bSynm; /* RW; sync mode(0:timing,as BT.656; 1:signal,as LCD) */ 274 HI_BOOL bIop; /* RW; interlaced or progressive display(0:i; 1:p) */ 275 HI_U8 u8Intfb; /* RW; interlace bit width while output */ 276 277 HI_U16 u16Vact; /* RW; vertical active area */ 278 HI_U16 u16Vbb; /* RW; vertical back blank porch */ 279 HI_U16 u16Vfb; /* RW; vertical front blank porch */ 280 281 HI_U16 u16Hact; /* RW; horizontal active area */ 282 HI_U16 u16Hbb; /* RW; horizontal back blank porch */ 283 HI_U16 u16Hfb; /* RW; horizontal front blank porch */ 284 HI_U16 u16Hmid; /* RW; bottom horizontal active area */ 285 286 HI_U16 u16Bvact; /* RW; bottom vertical active area */ 287 HI_U16 u16Bvbb; /* RW; bottom vertical back blank porch */ 288 HI_U16 u16Bvfb; /* RW; bottom vertical front blank porch */ 289 290 HI_U16 u16Hpw; /* RW; horizontal pulse width */ 291 HI_U16 u16Vpw; /* RW; vertical pulse width */ 292 293 HI_BOOL bIdv; /* RW; inverse data valid of output */ 294 HI_BOOL bIhs; /* RW; inverse horizontal synch signal */ 295 HI_BOOL bIvs; /* RW; inverse vertical synch signal */ 296 } VO_SYNC_INFO_S; 297 298 typedef struct hiVO_PUB_ATTR_S { 299 HI_U32 u32BgColor; /* RW; Background color of a device, in RGB format. */ 300 VO_INTF_TYPE_E enIntfType; /* RW; Type of a VO interface */ 301 VO_INTF_SYNC_E enIntfSync; /* RW; Type of a VO interface timing */ 302 VO_SYNC_INFO_S stSyncInfo; /* RW; Information about VO interface timings */ 303 } VO_PUB_ATTR_S; 304 305 typedef struct hiVO_CSC_S { 306 VO_CSC_MATRIX_E enCscMatrix; /* CSC matrix */ 307 HI_U32 u32Luma; /* RW; Range: [0, 100]; luminance, default: 50 */ 308 HI_U32 u32Contrast; /* RW; Range: [0, 100]; contrast, default: 50 */ 309 HI_U32 u32Hue; /* RW; Range: [0, 100]; hue, default: 50 */ 310 HI_U32 u32Satuature; /* RW; Range: [0, 100]; satuature, default: 50 */ 311 } VO_CSC_S; 312 313 typedef struct hiVO_MOD_PARAM_S { 314 HI_BOOL bTransparentTransmit; /* RW, Range: [0, 1]; YC(Luminance and Chrominance) changes or not 315 when passing through VO */ 316 HI_BOOL bExitDev; 317 HI_BOOL bWbcBgBlackEn; 318 HI_BOOL bDevClkExtEn; 319 HI_BOOL bSaveBufMode[VO_MAX_PHY_DEV_NUM]; /* save buff mode */ 320 } VO_MOD_PARAM_S; 321 322 typedef enum hiVO_CLK_SOURCE_E { 323 VO_CLK_SOURCE_PLL, 324 VO_CLK_SOURCE_LCDMCLK, 325 326 VO_CLK_SOURCE_BUTT 327 } VO_CLK_SOURCE_E; 328 329 typedef struct hiVO_USER_INTFSYNC_PLL_S { 330 HI_U32 u32Fbdiv; 331 HI_U32 u32Frac; 332 HI_U32 u32Refdiv; 333 HI_U32 u32Postdiv1; 334 HI_U32 u32Postdiv2; 335 } VO_USER_INTFSYNC_PLL_S; 336 337 typedef struct hiVO_USER_INTFSYNC_ATTR_S { 338 VO_CLK_SOURCE_E enClkSource; 339 340 union { 341 VO_USER_INTFSYNC_PLL_S stUserSyncPll; 342 HI_U32 u32LcdMClkDiv; 343 }; 344 } VO_USER_INTFSYNC_ATTR_S; 345 346 typedef struct hiVO_USER_INTFSYNC_INFO_S { 347 VO_USER_INTFSYNC_ATTR_S stUserIntfSyncAttr; 348 HI_U32 u32PreDiv; 349 HI_U32 u32DevDiv; 350 HI_BOOL bClkReverse; 351 } VO_USER_INTFSYNC_INFO_S; 352 353 #ifdef __cplusplus 354 #if __cplusplus 355 } 356 #endif 357 #endif /* End of #ifdef __cplusplus */ 358 359 #endif /* End of #ifndef __HI_COMM_VO_DEV_H__ */ 360