| /* |
| * Copyright (C) 2018 Synaptics Incorporated. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| * INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND |
| * SYNAPTICS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, |
| * INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE, AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY |
| * INTELLECTUAL PROPERTY RIGHTS. IN NO EVENT SHALL SYNAPTICS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR |
| * CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE |
| * OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED AND |
| * BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| * NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS |
| * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF |
| * COMPETENT JURISDICTION DOES NOT PERMIT THE DISCLAIMER OF DIRECT |
| * DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS' TOTAL CUMULATIVE LIABILITY |
| * TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S. DOLLARS. |
| */ |
| |
| #ifndef _VPP_API_H_ |
| #define _VPP_API_H_ |
| |
| #include "errcode_vpp.h" |
| |
| typedef void (*voidfunc_t)(void *); |
| |
| #define E_SUC ( 0x00000000 ) |
| #define E_ERR ( 0x80000000 ) |
| //#define E_VPP_BASE ( 0x0200 << 16) //VPP base |
| //#define E_VPP( code ) ( E_ERR | E_VPP_BASE | ( (code) & 0xFFFF ) ) |
| |
| /* error code */ |
| #define VPP_E_NODEV E_VPP(1) |
| #define VPP_E_BADPARAM E_VPP(2) |
| #define VPP_E_BADCALL E_VPP(3) |
| #define VPP_E_UNSUPPORT E_VPP(4) |
| #define VPP_E_IOFAIL E_VPP(5) |
| #define VPP_E_UNCONFIG E_VPP(6) |
| #define VPP_E_CMDQFULL E_VPP(7) |
| #define VPP_E_FRAMEQFULL E_VPP(8) |
| #define VPP_E_BCMBUFFULL E_VPP(9) |
| #define VPP_E_NOMEM E_VPP(10) |
| #define VPP_EVBIBUFFULL E_VPP(11) |
| #define VPP_EHARDWAREBUSY E_VPP(12) |
| |
| #define MV_VPP_OK 0 |
| #define MV_VPP_ENODEV VPP_E_NODEV |
| #define MV_VPP_EBADPARAM VPP_E_BADPARAM |
| #define MV_VPP_EBADCALL VPP_E_BADCALL |
| #define MV_VPP_EUNSUPPORT VPP_E_UNSUPPORT |
| #define MV_VPP_EIOFAIL VPP_E_IOFAIL |
| #define MV_VPP_EUNCONFIG VPP_E_UNCONFIG |
| #define MV_VPP_ECMDQFULL VPP_E_CMDQFULL |
| #define MV_VPP_EFRAMEQFULL VPP_E_FRAMEQFULL |
| #define MV_VPP_EBCMBUFFULL VPP_E_BCMBUFFULL |
| #define MV_VPP_ENOMEM VPP_E_NOMEM |
| #define MV_VPP_EVBIBUFFULL VPP_EVBIBUFFULL |
| #define MV_VPP_EHARDWAREBUSY VPP_EHARDWAREBUSY |
| #define VPP_IOCTL_VBI_DMA_CFGQ 0xbeef0001 |
| #define VPP_IOCTL_VBI_BCM_CFGQ 0xbeef0002 |
| #define VPP_IOCTL_VDE_BCM_CFGQ 0xbeef0003 |
| #define VPP_IOCTL_TIMING 0xbeef0004 |
| #define VPP_IOCTL_START_BCM_TRANSACTION 0xbeef0005 |
| #define VPP_IOCTL_BCM_SCHE_CMD 0xbeef0006 |
| #define VPP_IOCTL_INTR_MSG 0xbeef0007 |
| #define CEC_IOCTL_RX_MSG_BUF_MSG 0xbeef0008 |
| #define VPP_CC_MSG_TYPE_VPP 0x00 |
| #define VPP_CC_MSG_TYPE_CEC 0x01 |
| #define VPP_FRAME_IN_USE 0x10 |
| |
| /* definition of display mode */ |
| typedef enum { |
| DISP_NON_DEFINED = -1, |
| DISP_STILL_PIC = 0, |
| DISP_FRAME = 1, |
| DISP_PATGEN = 2, |
| } ENUM_DISP_MODE; |
| |
| /* definition of video component data format in frame buffer */ |
| typedef enum { |
| SRCFMT_MIN = 0, |
| SRCFMT_YUV422 = 0, /* only valid for video plane */ |
| SRCFMT_ARGB32 = 1, /* only valid for gfx/PG planes */ |
| SRCFMT_YUV420SP = 2, |
| SRCFMT_YUV420SP_TILED_MODE0 = 3, |
| SRCFMT_YUV420SP_TILED_MODE1 = 4, |
| SRCFMT_MAX |
| } ENUM_SRC_FMT; |
| |
| |
| /* definition of video component data order in frame buffer */ |
| typedef enum { |
| ORDER_ARGB = 0, |
| ORDER_ABGR = 1, |
| ORDER_RGBA = 2, |
| ORDER_BGRA = 3, |
| ORDER_ARGB32_MAX = 4, |
| ORDER_AVYU = 0, |
| ORDER_AUYV = 1, |
| ORDER_VYUA = 2, |
| ORDER_UYVA = 3, |
| ORDER_UYVY = 0, |
| ORDER_VYUY = 1, |
| ORDER_YUYV = 2, |
| ORDER_YVYU = 3, |
| } ENUM_SRC_ORDER; |
| |
| /* definition of CPCB output video format */ |
| typedef enum { |
| OUTPUT_PROGRESSIVE = 0, |
| OUTPUT_INTERLACED = 1, |
| OUTPUT_AUTO_SELECT = 2, |
| } ENUM_OUTPUT_MODE; |
| |
| /* definition of all the output color supported by VPP*/ |
| typedef enum { |
| OUTPUT_COLOR_FMT_INVALID = -1, |
| FIRST_OUTPUT_COLOR_FMT = 0, |
| OUTPUT_COLOR_FMT_RGB888 = 0, |
| OUTPUT_COLOR_FMT_YCBCR444 = 1, |
| OUTPUT_COLOR_FMT_YCBCR422 = 2, |
| OUTPUT_COLOR_FMT_YCBCR420 = 3, |
| MAX_NUM_OUTPUT_COLOR_FMTS |
| } ENUM_OUTPUT_COLOR_FMT; |
| |
| /* definition of all the bit depths (output) supported by VPP*/ |
| typedef enum { |
| OUTPUT_BIT_DEPTH_INVALID = -1, |
| FIRST_OUTPUT_BIT_DEPTH = 0, |
| OUTPUT_BIT_DEPTH_12BIT = 0, |
| OUTPUT_BIT_DEPTH_10BIT = 1, |
| OUTPUT_BIT_DEPTH_8BIT = 2, |
| MAX_NUM_OUTPUT_BIT_DEPTHS |
| } ENUM_OUTPUT_BIT_DEPTH; |
| |
| /* definition of all the input depths (input) supported by VPP*/ |
| typedef enum { |
| INPUT_BIT_DEPTH_INVALID = -1, |
| FIRST_INPUT_BIT_DEPTH = 0, |
| INPUT_BIT_DEPTH_8BIT = 0, |
| INPUT_BIT_DEPTH_10BIT = 1, |
| MAX_NUM_INPUT_BIT_DEPTHS |
| } ENUM_INPUT_BIT_DEPTH; |
| |
| /* definition of aspect ratio */ |
| typedef enum { |
| ASPECT_RATIO_INVALID = -1, |
| FIRST_ASPECT_RATIO = 0, |
| ASPECT_RATIO_NONE = 0, |
| ASPECT_RATIO_4BY3 = 1, |
| ASPECT_RATIO_16BY9 = 2, |
| MAX_ASPECT_RATIO |
| } ENUM_ASPECT_RATIO; |
| |
| /* definition of scan information */ |
| typedef enum { |
| SCAN_DATA_INVALID = -1, |
| FIRST_SCAN_DATA = 0, |
| SCAN_DATA_NONE = 0, |
| OVER_SCAN_DATA = 1, |
| UNDER_SCAN_DATA = 2, |
| MAX_SCAN_DATA |
| } ENUM_SCAN_DATA; |
| |
| /* definition of VPP TG timing formats */ |
| typedef enum { |
| RES_INVALID = -1, |
| FIRST_RES = 0, |
| RES_NTSC_M = 0, |
| RES_NTSC_J = 1, |
| RES_PAL_M = 2, |
| RES_PAL_BGH = 3, |
| RES_525I60 = 4, |
| RES_525I5994 = 5, |
| RES_625I50 = 6, |
| RES_525P60 = 7, |
| RES_525P5994 = 8, |
| RES_625P50 = 9, |
| RES_720P30 = 10, |
| RES_720P2997 = 11, |
| RES_720P25 = 12, |
| RES_720P60 = 13, |
| RES_720P5994 = 14, |
| RES_720P50 = 15, |
| RES_1080I60 = 16, |
| RES_1080I5994 = 17, |
| RES_1080I50 = 18, |
| RES_1080P30 = 19, |
| RES_1080P2997 = 20, |
| RES_1080P25 = 21, |
| RES_1080P24 = 22, |
| RES_1080P2398 = 23, |
| RES_1080P60 = 24, |
| RES_1080P5994 = 25, |
| RES_1080P50 = 26, |
| RES_LVDS_1080P48 = 27, |
| RES_LVDS_1080P50 = 28, |
| RES_LVDS_1080P60 = 29, |
| RES_LVDS_2160P12 = 30, |
| RES_VGA_480P60 = 31, |
| RES_VGA_480P5994 = 32, |
| FIRST_RES_3D = 33, |
| RES_720P50_3D = 33, |
| RES_720P60_3D = 34, |
| RES_720P5994_3D = 35, |
| RES_1080P24_3D = 36, |
| RES_1080P2398_3D = 37, |
| RES_1080P30_3D = 38, |
| RES_1080P2997_3D = 39, |
| RES_1080P25_3D = 40, |
| RES_1080I60_FP = 41, |
| RES_1080I5994_FP = 42, |
| RES_1080I50_FP = 43, |
| RES_LVDS_1920X540P60_3D = 44, |
| RES_LVDS_1920X540P30_3D = 45, |
| RES_LVDS_1920X540P24_3D = 46, |
| RES_LVDS_720P100_3D = 47, |
| RES_LVDS_720P120_3D = 48, |
| RES_LVDS_1080P48_3D = 49, |
| RES_LVDS_1080P50_3D = 50, |
| RES_LVDS_1080P60_3D = 51, |
| RES_LVDS_1920X540P100_3D = 52, |
| RES_LVDS_1920X540P120_3D = 53, |
| RES_LVDS_960X1080P100_3D = 54, |
| RES_LVDS_960X1080P120_3D = 55, |
| MAX_NUM_RES_3D = 55, |
| RES_MIN_4Kx2K = 56, |
| RES_4Kx2K2398 = 56, |
| RES_4Kx2K24 = 57, |
| RES_4Kx2K24_SMPTE = 58, |
| RES_4Kx2K25 = 59, |
| RES_4Kx2K2997 = 60, |
| RES_4Kx2K30 = 61, |
| RES_4Kx2K50 = 62, |
| RES_4Kx2K5994 = 63, |
| RES_4Kx2K60 = 64, |
| RES_4Kx2K30_HDMI = 65, |
| RES_4Kx1K120 = 66, |
| RES_MAX_4Kx2K = 66, |
| RES_720P_4Kx1K120_3D = 67, |
| RES_4Kx2K2398_SMPTE = 68, |
| RES_4Kx2K25_SMPTE = 69, |
| RES_4Kx2K2997_SMPTE = 70, |
| RES_4Kx2K30_SMPTE = 71, |
| RES_4Kx2K50_SMPTE = 72, |
| RES_4Kx2K5994_SMPTE = 73, |
| RES_4Kx2K60_SMPTE = 74, |
| RES_4Kx2K50_420 = 75, |
| RES_4Kx2K5994_420 = 76, |
| RES_4Kx2K60_420 = 77, |
| RES_4Kx2K2398_3D = 78, |
| RES_4Kx2K24_3D = 79, |
| RES_4Kx2K25_3D = 80, |
| RES_4Kx2K2997_3D = 81, |
| RES_4Kx2K30_3D = 82, |
| RES_RESET, |
| MAX_NUM_RESS |
| } ENUM_CPCB_TG_RES; |
| |
| /* definition of VPP status */ |
| typedef enum { |
| STATUS_INACTIVE = 0, |
| STATUS_INACTIVE_PENDING = 1, |
| STATUS_ACTIVE = 2, |
| STATUS_ACTIVE_PENDING = 3, |
| STATUS_DISP_VIDEO = 4, |
| } ENUM_PLANE_STATUS; |
| |
| /* definition of VPP CPCB video outputs(for Berlin) */ |
| typedef enum { |
| CPCB_INVALID = -1, |
| FIRST_CPCB = 0, |
| CPCB_1 = 0, |
| MAX_NUM_CPCBS |
| } ENUM_CPCB_ID; |
| /* definition of alpha polarity */ |
| typedef enum { |
| ALPHA_POL_NORMAL = 0, |
| ALPHA_POL_INVERSE = 1, |
| } ENUM_ALPHA_POL; |
| |
| #endif |
| |