nt9856x/code/hdal/drivers/k_flow/include/gximage/hd_gximage.h
2023-03-28 15:07:53 +08:00

315 lines
8.6 KiB
C
Executable File

/**
@brief Header file of hdal gximage module.\n
This file contains the functions which is related to hdal gximage in the chip.
@file hd_gximage.h
@ingroup gximage
@note Nothing.
Copyright Novatek Microelectronics Corp. 2018. All rights reserved.
*/
#ifndef _HD_GXIMAGE_H_
#define _HD_GXIMAGE_H_
#define GFX_USER_VERSION 20181022
#define GFX_MAX_PLANE_NUM 3
#define GFX_MAX_MULTI_OUT_NUM 3
#define MAX_JOB_IN_A_LIST 8
typedef enum {
GFX_USER_CMD_NULL,
GFX_USER_CMD_NULL1,
GFX_USER_CMD_NULL2,
GFX_USER_CMD_NULL3,
GFX_USER_CMD_INIT,
GFX_USER_CMD_UNINIT,
GFX_USER_CMD_COPY,
GFX_USER_CMD_DMA_COPY,
GFX_USER_CMD_SCALE,
GFX_USER_CMD_ROTATE,
GFX_USER_CMD_COLOR_TRANSFORM,
GFX_USER_CMD_DRAW_LINE,
GFX_USER_CMD_DRAW_RECT,
GFX_USER_CMD_ARITHMETIC,
GFX_USER_CMD_JOB_LIST,
GFX_USER_CMD_ISE_SCALE_Y8,
GFX_USER_CMD_AFFINE,
GFX_USER_CMD_I8_COLORKEY,
GFX_USER_CMD_SCALE_LINK_LIST_BUF,
GFX_USER_CMD_SCALE_LINK_LIST,
GFX_USER_CMD_ALPHA_BLEND,
GFX_USER_CMD_RAW_GRAPHIC,
GFX_USER_CMD_SET_ABORT,
GFX_USER_CMD_DRAW_LINE_BY_CPU,
GFX_USER_CMD_MAX,
ENUM_DUMMY4WORD(GFX_USER_CMD)
} GFX_USER_CMD;
typedef enum _GFX_GRPH_ENGINE {
GFX_GRPH_ENGINE_1 = 0,
GFX_GRPH_ENGINE_2,
GFX_GRPH_ENGINE_MAX,
ENUM_DUMMY4WORD(GFX_GRPH_ENGINE)
} GFX_GRPH_ENGINE;
typedef enum {
GFX_ARITH_BIT_NULL,
GFX_ARITH_BIT_8,
GFX_ARITH_BIT_16,
GFX_ARITH_BIT_MAX,
ENUM_DUMMY4WORD(GFX_ARITH_BIT)
} GFX_ARITH_BIT;
typedef enum {
GFX_ARITH_OP_NULL,
GFX_ARITH_OP_PLUS,
GFX_ARITH_OP_MINUS,
GFX_ARITH_OP_MULTIPLY,
GFX_ARITH_OP_MAX,
ENUM_DUMMY4WORD(GFX_ARITH_OP)
} GFX_ARITH_OP;
typedef enum {
GFX_ROTATE_ANGLE_NULL,
GFX_ROTATE_ANGLE_90,
GFX_ROTATE_ANGLE_180,
GFX_ROTATE_ANGLE_270,
GFX_ROTATE_ANGLE_MIRROR_X,
GFX_ROTATE_ANGLE_MIRROR_Y,
GFX_ROTATE_ANGLE_MAX,
ENUM_DUMMY4WORD(GFX_ROTATE_ANGLE)
} GFX_ROTATE_ANGLE;
typedef enum _GFX_SCALE_METHOD {
GFX_SCALE_METHOD_NULL,
GFX_SCALE_METHOD_BICUBIC,
GFX_SCALE_METHOD_BILINEAR,
GFX_SCALE_METHOD_NEAREST,
GFX_SCALE_METHOD_INTEGRATION,
GFX_SCALE_METHOD_MAX,
ENUM_DUMMY4WORD(GFX_SCALE_METHOD)
} GFX_SCALE_METHOD;
typedef enum _GFX_ISE_ENGINE {
GFX_ISE_ENGINE_1 = 0,
GFX_ISE_ENGINE_2,
GFX_ISE_ENGINE_MAX,
ENUM_DUMMY4WORD(GFX_ISE_ENGINE)
} GFX_ISE_ENGINE;
typedef enum _GFX_RECT_TYPE {
GFX_RECT_TYPE_NULL,
GFX_RECT_TYPE_SOLID,
GFX_RECT_TYPE_HOLLOW,
GFX_RECT_TYPE_MAX,
ENUM_DUMMY4WORD(GFX_RECT_TYPE)
} GFX_RECT_TYPE;
typedef enum {
GFX_SET_DRV_ABORT,
ENUM_DUMMY4WORD(GFX_KDRV_CMD)
} GFX_KDRV_CMD;
typedef struct _GFX_IMG_BUF {
UINT32 w;
UINT32 h;
VDO_PXLFMT format;
UINT32 p_phy_addr[GFX_MAX_PLANE_NUM];
UINT32 lineoffset[GFX_MAX_PLANE_NUM];
UINT32 palette[16];
} GFX_IMG_BUF;
typedef struct _GFX_COPY {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
INT32 src_x;
INT32 src_y;
INT32 src_w;
INT32 src_h;
INT32 dst_x;
INT32 dst_y;
UINT32 colorkey;
UINT32 alpha;
UINT32 flush;
GFX_GRPH_ENGINE engine;
} GFX_COPY;
typedef struct _GFX_DMA_COPY {
UINT32 p_src;
UINT32 p_dst;
UINT32 length;
} GFX_DMA_COPY;
typedef struct _GFX_SCALE {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
INT32 src_x;
INT32 src_y;
INT32 src_w;
INT32 src_h;
INT32 dst_x;
INT32 dst_y;
INT32 dst_w;
INT32 dst_h;
GFX_SCALE_METHOD method;
INT32 flush;
} GFX_SCALE;
typedef struct _GFX_ROTATE {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
INT32 src_x;
INT32 src_y;
INT32 src_w;
INT32 src_h;
INT32 dst_x;
INT32 dst_y;
UINT32 angle;
UINT32 flush;
} GFX_ROTATE;
typedef struct _GFX_COLOR_TRANSFORM {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
UINT32 p_tmp_buf;
UINT32 tmp_buf_size;
UINT32 p_lookup_table[GFX_MAX_PLANE_NUM];
} GFX_COLOR_TRANSFORM;
typedef struct _GFX_DRAW_LINE {
GFX_IMG_BUF dst_img;
UINT32 color;
UINT32 start_x;
UINT32 start_y;
UINT32 end_x;
UINT32 end_y;
UINT32 thickness;
UINT32 flush;
} GFX_DRAW_LINE;
typedef struct _GFX_DRAW_RECT {
GFX_IMG_BUF dst_img;
GFX_RECT_TYPE type;
UINT32 color;
UINT32 x;
UINT32 y;
UINT32 w;
UINT32 h;
UINT32 thickness;
UINT32 flush;
} GFX_DRAW_RECT;
typedef struct _GFX_ARITHMETIC {
UINT32 p_op1;
UINT32 p_op2;
UINT32 p_out;
UINT32 size;
GFX_ARITH_OP operation;
GFX_ARITH_BIT bits;
} GFX_ARITHMETIC;
typedef struct _GFX_ISE_SCALE_Y8 {
INT32 src_w;
INT32 src_h;
INT32 dst_w;
INT32 dst_h;
UINT32 p_src;
UINT32 src_loff;
UINT32 p_dst;
UINT32 dst_loff;
GFX_SCALE_METHOD method;
GFX_ISE_ENGINE engine;
} GFX_ISE_SCALE_Y8;
typedef struct _GFX_AFFINE {
INT32 w;
INT32 h;
INT32 plane_num;
UINT32 p_src[GFX_MAX_PLANE_NUM];
UINT32 src_loff[GFX_MAX_PLANE_NUM];
UINT32 p_dst[GFX_MAX_PLANE_NUM];
UINT32 dst_loff[GFX_MAX_PLANE_NUM];
UINT32 uvpack[GFX_MAX_PLANE_NUM];
float fCoeffA[GFX_MAX_PLANE_NUM];
float fCoeffB[GFX_MAX_PLANE_NUM];
float fCoeffC[GFX_MAX_PLANE_NUM];
float fCoeffD[GFX_MAX_PLANE_NUM];
float fCoeffE[GFX_MAX_PLANE_NUM];
float fCoeffF[GFX_MAX_PLANE_NUM];
} GFX_AFFINE;
typedef struct _GFX_SCALE_LINK_LIST_BUF {
UINT32 p_addr;
UINT32 length;
} GFX_SCALE_LINK_LIST_BUF;
typedef struct _GFX_SCALE_DMA_FLUSH {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
INT32 src_x;
INT32 src_y;
INT32 src_w;
INT32 src_h;
INT32 dst_x;
INT32 dst_y;
INT32 dst_w;
INT32 dst_h;
GFX_SCALE_METHOD method;
int in_buf_flush;
int out_buf_flush;
} GFX_SCALE_DMA_FLUSH;
typedef struct _GFX_ALPHA_BLEND {
GFX_IMG_BUF src_img;
GFX_IMG_BUF dst_img;
INT32 dst_x;
INT32 dst_y;
UINT32 p_alpha;
UINT32 flush;
} GFX_ALPHA_BLEND;
typedef struct _GFX_RAW_GRAPHIC {
UINT32 engine;
UINT32 p_addr;
UINT32 length;
UINT32 flush;
} GFX_RAW_GRAPHIC;
typedef struct _GFX_ABORT {
UINT32 engine;
} GFX_ABORT;
typedef struct _GFX_USER_DATA {
UINT32 version;
GFX_USER_CMD cmd;
union {
GFX_COPY copy;
GFX_DMA_COPY dma_copy;
GFX_SCALE scale;
GFX_ROTATE rotate;
GFX_COLOR_TRANSFORM color_transform;
GFX_DRAW_LINE draw_line;
GFX_DRAW_RECT draw_rect;
GFX_ARITHMETIC arithmetic;
GFX_ISE_SCALE_Y8 ise_scale_y8;
GFX_AFFINE affine;
GFX_SCALE_LINK_LIST_BUF scale_link_list_buf;
GFX_SCALE_DMA_FLUSH ise_scale_dma_flush;
GFX_ALPHA_BLEND alpha_blend;
GFX_RAW_GRAPHIC raw_graphic;
GFX_ABORT abort;
} data;
} GFX_USER_DATA;
#if defined(__FREERTOS)
extern int nvt_gfx_init(void);
extern int nvt_gfx_ioctl(int f, unsigned int cmd, void *arg);
#endif
#endif //_HD_GXIMAGE_H_