blob: 6601bf5b4e61d462f32c3d00e202746310995366 [file] [log] [blame]
/*
* 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