📄 2d_engine.h
字号:
#define BITBLT_TRANSFORM_MIRROR_ROTATE_90 0x00
#define BITBLT_TRANSFORM_ROTATE_90 0x01
#define BITBLT_TRANSFORM_ROTATE_270 0x02
#define BITBLT_TRANSFORM_MIRROR_ROTATE_270 0x03
#define BITBLT_TRANSFORM_ROTATE_180 0x04
#define BITBLT_TRANSFORM_MIRROR 0x05
#define BITBLT_TRANSFORM_MIRROR_ROTATE_180 0x06
#define BITBLT_TRANSFORM_COPY 0x07
#define G2D_CLIP_DISABLE 0
#define G2D_CLIP_ENABLE 1
#define G2D_SRC_KEY_DISABLE 0
#define G2D_SRC_KEY_ENABLE 1
#define D2D_SRC_KEY_ENABLE G2D_SRC_KEY_ENABLE
#define G2D_LINE_LINE_MODE 0
#define G2D_LINE_DOTTED_MODE 1
#define G2D_FONT_BACKGROUND_DISABLE 0
#define G2D_FONT_BACKGROUND_ENABLE 1
#define G2D_FONT_ITALIC_DISABLE 0
#define G2D_FONT_ITALIC_ENABLE 1
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define G2D_DEST_16BPP_LUT_DISABLE 0
#define G2D_DEST_16BPP_LUT_ENABLE 1
#define G2D_DEST_8BPP_LUT_DISABLE 2
#define G2D_SRC_16BPP_LUT_DISABLE 0
#define G2D_SRC_8BPP_LUT_DISABLE 1
#define G2D_SRC_8BPP_LUT_ENABLE 2
#endif
/* bit mapping of 2D engine submode control register or software G2D function flag*/
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define REG_SUBMODE_CTRL_ITALIC_FONT_BIT 0x8000
#define REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT 0x4000
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230)||(!defined(__MTK_TARGET__)))
#define REG_SUBMODE_CTRL_ITALIC_FONT_BIT 0x80000000
#define REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT 0x40000000
#endif
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define REG_SUBMODE_CTRL_BITBLT_TRANSFORM_MASK 0x0007
#define REG_SUBMODE_CTRL_DOTTED_LINE_BIT 0x0800
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230)||(!defined(__MTK_TARGET__)))
#define REG_SUBMODE_CTRL_BITBLT_TRANSFORM_MASK 0x00000007
#define REG_SUBMODE_CTRL_DOTTED_LINE_BIT 0x00000800
#endif
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define REG_SUBMODE_CTRL_XY_MAJOR_BIT 0x0400
#define REG_SUBMODE_CTRL_X_INC_DEC_BIT 0x0200
#define REG_SUBMODE_CTRL_Y_INC_DEC_BIT 0x0100
#define REG_SUBMODE_CTRL_BITBLT_TRANSPARENT_BIT 0x0008
#endif
#if (defined(MT6228)||defined(MT6229)||defined(MT6230)||(!defined(__MTK_TARGET__)))
#define REG_SUBMODE_CTRL_FONT_ORDER_BIT 0x20000000
#define REG_SUBMODE_CTRL_ALPHA_MASK 0x00FF0000
#define REG_SUBMODE_CTRL_ROP_CODE_MASK 0x000F0000
#define REG_SUBMODE_CTRL_START_BIT_MASK 0x00070000
#define REG_SUBMODE_CTRL_ENABLE_ARCS_MASK 0x000F0000
#define REG_SUBMODE_CTRL_LINE_ANTI_ALIAS_BIT 0x00000100
#define REG_SUBMODE_CTRL_COLOR_GRADIENT_BIT 0x00000040
#define REG_SUBMODE_CTRL_BITBLT_DIRECTION_MASK 0x00000030
#define REG_SUBMODE_CTRL_ITALIC_BITBLT_BIT 0x00000008
#define BITBLT_TRANSFORM_DIRECTION_RB_CORNER 0x00000000 /* right buttom */
#define BITBLT_TRANSFORM_DIRECTION_LB_CORNER 0x00000010 /* left buttom */
#define BITBLT_TRANSFORM_DIRECTION_RT_CORNER 0x00000020 /* right top */
#define BITBLT_TRANSFORM_DIRECTION_LT_CORNER 0x00000030 /* left top */
#define G2D_REC_FILL_ITALIC_DISABLE 0 /* rectangle fill italic */
#define G2D_REC_FILL_ITALIC_ENABLE 1
#define G2D_FONT_ORDER_LSB_FIRST 0
#define G2D_FONT_ORDER_MSB_FIRST 1
#define G2D_BITBLT_ITALIC_DISABLE 0 /* bitlbt italic */
#define G2D_BITBLT_ITALIC_ENABLE 1
#define G2D_LINE_ANTI_ALIAS_DISABLE 0 /* line drawing anti-aliasing */
#define G2D_LINE_ANTI_ALIAS_ENABLE 1
#define G2D_REC_FILL_COLOR_GRAD_DISABLE 0 /* color gradient when rectangle fill */
#define G2D_REC_FILL_COLOR_GRAD_ENABLE 1
#define G2D_BITBLT_DEST_SRC_KEY_DISABLE 0
#define G2D_BITBLT_DEST_SRC_KEY_ENABLE 1
#define G2D_ROP_ALL_ZERO 0x00
#define G2D_ROP_INV_AFTER_SRC_OR_DEST 0x01 /* ~(S|D) */
#define G2D_ROP_INV_SRC_AND_DEST 0x02 /* ~S & D */
#define G2D_ROP_INV_SRC 0x03 /* ~S */
#define G2D_ROP_SRC_AND_INV_DEST 0x04 /* S & ~D */
#define G2D_ROP_INV_DEST 0x05 /* ~D */
#define G2D_ROP_SRC_XOR_DEST 0x06 /* S ^ D */
#define G2D_ROP_INV_AFTER_SRC_AND_DEST 0x07 /* ~(S & D) */
#define G2D_ROP_SRC_AND_DEST 0x08 /* S & D */
#define G2D_ROP_INV_AFTER_SRC_XOR_DEST 0x09 /* ~(S ^ D) */
#define G2D_ROP_DEST 0x0A /* D */
#define G2D_ROP_INV_SRC_OR_DEST 0x0B /* ~S | D */
#define G2D_ROP_SRC 0x0C /* S */
#define G2D_ROP_SRC_OR_INV_DEST 0x0D /* S | ~D */
#define G2D_ROP_SRC_OR_DEST 0x0E /* S | D */
#define G2D_ROP_ALL_ONE 0x0F
#define G2D_FONT_START_BIT_0 0x00
#define G2D_FONT_START_BIT_1 0x01
#define G2D_FONT_START_BIT_2 0x02
#define G2D_FONT_START_BIT_3 0x03
#define G2D_FONT_START_BIT_4 0x04
#define G2D_FONT_START_BIT_5 0x05
#define G2D_FONT_START_BIT_6 0x06
#define G2D_FONT_START_BIT_7 0x07
#define G2D_CIRCLE_ARC_1 0x01
#define G2D_CIRCLE_ARC_2 0x02
#define G2D_CIRCLE_ARC_1_2 0x03
#define G2D_CIRCLE_ARC_3 0x04
#define G2D_CIRCLE_ARC_1_3 0x05
#define G2D_CIRCLE_ARC_2_3 0x06
#define G2D_CIRCLE_ARC_1_2_3 0x07
#define G2D_CIRCLE_ARC_4 0x08
#define G2D_CIRCLE_ARC_1_4 0x09
#define G2D_CIRCLE_ARC_2_4 0x0A
#define G2D_CIRCLE_ARC_1_2_4 0x0B
#define G2D_CIRCLE_ARC_3_4 0x0C
#define G2D_CIRCLE_ARC_1_3_4 0x0D
#define G2D_CIRCLE_ARC_2_3_4 0x0E
#define G2D_CIRCLE_ARC_1_2_3_4 0x0F
#endif
/* bit mapping of 2D engine common control register */
#define REG_COMMON_CTRL_G2D_ENGINE_RESET_BIT 0x0001
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define REG_COMMON_CTRL_G2D_PALETTE_ENABLE_BIT 0x0002
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT 0x0002
#endif
#define REG_COMMON_CTRL_G2D_CLIP_ENABLE_BIT 0x0004
/* macros of 2D engine fire mode control register */
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define SET_G2D_SRC_16BPP_LUT_DIS REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_SOURCE_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_SRC_COLOR_16BPP_LUT_DIS;
#define SET_G2D_SRC_8BPP_LUT_DIS REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_SOURCE_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_SRC_COLOR_8BPP_LUT_DIS;
#define SET_G2D_SRC_8BPP_LUT_EN REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_SOURCE_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_SRC_COLOR_8BPP_LUT_EN;
#define SET_G2D_DEST_16BPP_LUT_DIS REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_DEST_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_DEST_COLOR_16BPP_LUT_DIS;
#define SET_G2D_DEST_16BPP_LUT_EN REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_DEST_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_DEST_COLOR_16BPP_LUT_EN;
#define SET_G2D_DEST_8BPP_LUT_DIS REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_DEST_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= FIRE_DEST_COLOR_8BPP_LUT_DIS;
#define SET_G2D_RECTANGLE_FILL_DEST_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_RECTANGLE_FILL ;
#define SET_G2D_RECTANGLE_FILL_DEST_8BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_RECTANGLE_FILL | FIRE_DEST_COLOR_8BPP_LUT_DIS);
#define SET_G2D_RECTANGLE_PATTERN_FILL_DEST_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_RECTANGLE_PATTERN_FILL;
#define SET_G2D_RECTANGLE_PATTERN_FILL_DEST_8BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_RECTANGLE_PATTERN_FILL|FIRE_DEST_COLOR_8BPP_LUT_DIS);
#define SET_G2D_FONT_CACHING_DEST_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_FONT_CACHING;
#define SET_G2D_FONT_CACHING_DEST_8BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_FONT_CACHING|FIRE_DEST_COLOR_8BPP_LUT_DIS);
#define SET_G2D_LINE_DRAWING_DEST_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_LINE_DRAWING;
#define SET_G2D_LINE_DRAWING_DEST_8BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_LINE_DRAWING|FIRE_DEST_COLOR_8BPP_LUT_DIS);
#define SET_G2D_BITBLT_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_BITBLT;
#define SET_G2D_BITBLT_8BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_BITBLT | FIRE_SRC_COLOR_8BPP_LUT_DIS | FIRE_DEST_COLOR_8BPP_LUT_DIS);
#define SET_G2D_BITBLT_DEST_16BPP_LUT_ENABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_BITBLT | FIRE_SRC_COLOR_8BPP_LUT_DIS | FIRE_DEST_COLOR_16BPP_LUT_EN);
#define SET_G2D_ALPHA_BLENDING_SRC_16BPP_LUT_DISABLE REG_G2D_FIRE_CTRL = FIRE_G2D_ALPHA_BLENDING;
#define SET_G2D_ALPHA_BLENDING_SRC_8BPP_LUT_ENABLE REG_G2D_FIRE_CTRL = (FIRE_G2D_ALPHA_BLENDING|FIRE_SRC_COLOR_8BPP_LUT_EN) ;
#endif
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define SET_G2D_SRC_COLOR_MODE(color_mode) REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_SOURCE_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= color_mode;
#define SET_G2D_DEST_COLOR_MODE(color_mode) REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_DEST_COLOR_MODE_MASK;\
REG_G2D_FIRE_CTRL |= color_mode;
#define SET_G2D_FIRE_MODE(fire_mode) REG_G2D_FIRE_CTRL &= ~REG_FIRE_CTRL_G2D_FUNCTION_MODE_MASK;\
REG_G2D_FIRE_CTRL |= fire_mode;
#endif
/* macros of G2D engine submode control register */
#define ENABLE_BITBLT_ITALIC_FONT REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_ITALIC_FONT_BIT;
#define DISABLE_BITBLT_ITALIC_FONT REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_ITALIC_FONT_BIT;
#define ENABLE_BITBLT_DOTTED_LINE REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_DOTTED_LINE_BIT;
#define DISABLE_BITBLT_DOTTED_LINE REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_DOTTED_LINE_BIT;
#define SET_BITBLT_TRANSFORM_MODE(n) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_BITBLT_TRANSFORM_MASK;\
REG_G2D_SUBMODE_CTRL |= n;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define ENABLE_BITBLT_FONT_BACKGROUND REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT;
#define DISABLE_BITBLT_FONT_BACKGROUND REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT;
#define SET_BITBLT_Y_MAJOR REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_XY_MAJOR_BIT;
#define SET_BITBLT_X_MAJOR REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_XY_MAJOR_BIT;
#define SET_BITBLT_X_INCREAMENT REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_X_INC_DEC_BIT;
#define SET_BITBLT_X_DECREAMENT REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_X_INC_DEC_BIT;
#define SET_BITBLT_Y_INCREAMENT REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_Y_INC_DEC_BIT;
#define SET_BITBLT_Y_DECREAMENT REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_Y_INC_DEC_BIT;
#define ENABLE_BITBLT_TRANSPARENT REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_BITBLT_TRANSPARENT_BIT;
#define DISABLE_BITBLT_TRANSPARENT REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_BITBLT_TRANSPARENT_BIT;
#define IS_BITBLT_SRC_KEY_ENABLE (REG_G2D_SUBMODE_CTRL & REG_SUBMODE_CTRL_BITBLT_TRANSPARENT_BIT)
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define ENABLE_BITBLT_FONT_BACKGROUND REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT;
#define DISABLE_BITBLT_FONT_BACKGROUND REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_FONT_BACKGROUND_BIT;
#define SET_G2D_FONT_LSB_FIRST REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_FONT_ORDER_BIT;
#define SET_G2D_FONT_MSB_FIRST REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_FONT_ORDER_BIT;
#define SET_BITBLT_ALPHA_VALUE(alpha) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_ALPHA_MASK;\
REG_G2D_SUBMODE_CTRL |= (alpha<<16);
#define SET_BITBLT_ROP_MODE(rop) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_ROP_CODE_MASK;\
REG_G2D_SUBMODE_CTRL |= rop;
#define SET_FONT_START_BIT(bit) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_START_BIT_MASK;\
REG_G2D_SUBMODE_CTRL |= (bit<<16);
#define SET_CIRCLE_ENABLE_ARC(arc) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_ENABLE_ARCS_MASK;\
REG_G2D_SUBMODE_CTRL |= arc;
#define ENABLE_LINE_ANTI_ALIASING REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_LINE_ANTI_ALIAS_BIT;
#define DISABLE_LINE_ANTI_ALIASING REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_LINE_ANTI_ALIAS_BIT;
#define ENABLE_REC_FILL_COLOR_GRADIENT REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_COLOR_GRADIENT_BIT;
#define DISABLE_REC_FILL_COLOR_GRADIENT REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_COLOR_GRADIENT_BIT;
#define SET_BITBLT_DIRECTION(direction) REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_BITBLT_DIRECTION_MASK;\
REG_G2D_SUBMODE_CTRL |= direction;
#define ENABLE_G2D_BITBLT_ITALIC_MODE REG_G2D_SUBMODE_CTRL |= REG_SUBMODE_CTRL_ITALIC_BITBLT_BIT;
#define DISABLE_G2D_BITBLT_ITALIC_MODE REG_G2D_SUBMODE_CTRL &= ~REG_SUBMODE_CTRL_ITALIC_BITBLT_BIT;
#define IS_BITBLT_SRC_KEY_ENABLE (REG_G2D_COMM_CTRL & REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT)
#endif
/* macros of 2D engine status register */
#define G2D_ENGINE_IS_BUSY (REG_G2D_STATUS & REG_G2D_ENGINE_STATUS_BUSY_BIT)
/* macros of 2D engine common control register */
#define RESET_G2D_ENGINE (REG_G2D_COMM_CTRL |= REG_COMMON_CTRL_G2D_ENGINE_RESET_BIT);\
(REG_G2D_COMM_CTRL &= ~REG_COMMON_CTRL_G2D_ENGINE_RESET_BIT);
#define ENABLE_G2D_ENGINE_CLIP (REG_G2D_COMM_CTRL |= REG_COMMON_CTRL_G2D_CLIP_ENABLE_BIT);
#define DISABLE_G2D_ENGINE_CLIP (REG_G2D_COMM_CTRL &= ~REG_COMMON_CTRL_G2D_CLIP_ENABLE_BIT);
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define ENABLE_G2D_ENGINE_PALETTE (REG_G2D_COMM_CTRL |= REG_COMMON_CTRL_G2D_PALETTE_ENABLE_BIT);
#define DISABLE_G2D_ENGINE_PALETTE (REG_G2D_COMM_CTRL &= ~REG_COMMON_CTRL_G2D_PALETTE_ENABLE_BIT);
#endif
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define ENABLE_G2D_ENGINE_SRC_KEY (REG_G2D_COMM_CTRL |= REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT);
#define DISABLE_G2D_ENGINE_SRC_KEY (REG_G2D_COMM_CTRL &= ~REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT);
#endif
#define ENABLE_G2D_ENGINE_INT REG_G2D_INT_CTRL = 1;
#define DISABLE_G2D_ENGINE_INT REG_G2D_INT_CTRL = 0;
/* macro of graphic 2D engine tilt registers */
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define GET_G2D_TILT(index) (((*((volatile unsigned int *) (G2D_TILT_BASE+(index&0xFC))))&((0xFF<<((index&0x03)<<3))))>>((index&0x03)<<3));
#define SET_G2D_TILT(index,offset) \
{\
kal_uint32 data;\
kal_uint8 shift;\
data=*((volatile unsigned int *)(G2D_TILT_BASE+(index&0xFC)));\
shift=(index&0x03)<<3;\
*((volatile unsigned int *) (G2D_TILT_BASE+(index&0xFC)))=(data&(~(0xFF<<shift)))|(offset<<shift);\
}
#endif
/* macro of graphic 2D engine color palette registers */
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define SET_G2D_PALETTE_COLOR(index,color) *((volatile unsigned int *) (G2D_PALETTE_BASE+(index<<2))) = color;
#endif
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define G2D_CMQ_LENGTH 512
#endif
#define G2D_CMQ_CTRL_REG (GCMQ_base + 0x0000)
#define G2D_CMQ_STATUS_REG (GCMQ_base + 0x0004)
#define G2D_CMQ_DATA_REG (GCMQ_base + 0x0008)
#define REG_G2D_CMQ_CTRL *((volatile unsigned int *)(GCMQ_base + 0x0000))
#define REG_G2D_CMQ_STATUS *((volatile unsigned int *)(GCMQ_base + 0x0004))
#define REG_G2D_CMQ_DATA *((volatile unsigned int *)(GCMQ_base + 0x0008))
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define G2D_CMQ_QUEUE_BASE_ADDR_REG (GCMQ_base + 0x000C)
#define G2D_CMQ_QUEUE_LENGTH_REG (GCMQ_base + 0x0010)
#define REG_G2D_CMQ_QUEUE_BASE_ADDR *((volatile unsigned int *)(GCMQ_base + 0x000C))
#define REG_G2D_CMQ_QUEUE_LENGTH *((volatile unsigned int *)(GCMQ_base + 0x0010))
#endif
#define ENABLE_G2D_CMQ REG_G2D_CMQ_CTRL=1;
#define DISABLE_G2D_CMQ REG_G2D_CMQ_CTRL &=0xFE;
#define G2D_CMQ_IS_ENABLE (REG_G2D_CMQ_CTRL & 0x01)
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define ENABLE_G2D_CMQ_WRITE REG_G2D_CMQ_CTRL |= 0x02;
#define DISABLE_G2D_CMQ_WRITE REG_G2D_CMQ_CTRL &= 0xFFFFFFFD;
#endif
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define G2D_CMQ_FREE_SPACE REG_G2D_CMQ_STATUS
#define WRITE_G2D_CMQ(addr,data) REG_G2D_CMQ_DATA = ((addr<<16)|data);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define G2D_CMQ_FREE_SPACE (REG_G2D_CMQ_STATUS & 0x7FF)
#define G2D_CMQ_IS_WRITABLE ((REG_G2D_CMQ_STATUS & 0x8000)>>15)
#define G2D_WRITE_CMQ(data) while (!G2D_CMQ_IS_WRITABLE) {};\
REG_G2D_CMQ_DATA=data;
#endif
#define G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR 0x01000000
#define G2D_CMQ_SUBMODE_CTRL_REG_ADDR 0x01040000
#define G2D_CMQ_2D_COMMON_CTRL_REG_ADDR 0x01080000
#define G2D_CMQ_2D_STATUS_REG_ADDR 0x01100000
#define G2D_CMQ_SRC_BASE_L_ADDR 0x02000000
#define G2D_CMQ_SRC_BASE_H_ADDR 0x02020000
#define G2D_CMQ_SRC_PITCH_ADDR 0x02040000
#define G2D_CMQ_SRC_X_ADDR 0x020A0000
#define G2D_CMQ_SRC_Y_ADDR 0x02080000
#define G2D_CMQ_SRC_HEIGHT_ADDR 0x020C0000
#define G2D_CMQ_SRC_WIDTH_ADDR 0x020E0000
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
#define G2D_CMQ_SRCKEY_COLOR_ADDR 0x02100000
#define G2D_CMQ_K1_ADDR 0x02100000
#define G2D_CMQ_SRC_ALPHA_ADDR 0x02140000
#define G2D_CMQ_K2_ADDR 0x02140000
#define G2D_CMQ_PAT_FG_COLOR_ADDR 0x02180000
#define G2D_CMQ_DEST_ALPHA_ADDR 0x021C0000
#define G2D_CMQ_E_ADDR 0x021C0000
#define G2D_CMQ_PAT_BG_COLOR_ADDR 0x021C0000
#define G2D_CMQ_DEST_BASE_L_ADDR 0x03000000
#define G2D_CMQ_DEST_BASE_H_ADDR 0x03020000
#define G2D_CMQ_DEST_PITCH_ADDR 0x03040000
#define G2D_CMQ_DEST_Y_ADDR 0x03080000
#define G2D_CMQ_DEST_X_ADDR 0x030A0000
#define G2D_CMQ_Y_START_ADDR 0x03080000
#define G2D_CMQ_X_START_ADDR 0x030A0000
#define G2D_CMQ_DEST_HEIGHT_ADDR 0x030C0000
#define G2D_CMQ_DEST_WIDTH_ADDR 0x030E0000
#define G2D_CMQ_Y_END_ADDR 0x030C0000
#define G2D_CMQ_X_END_ADDR 0x030E0000
#define G2D_CMQ_CLIP_TOP_Y_ADDR 0x05000000
#define G2D_CMQ_CLIP_LEFT_X_ADDR 0x05020000
#define G2D_CMQ_CLIP_BOTTOM_Y_ADDR 0x05040000
#define G2D_CMQ_CLIP_RIGHT_X_ADDR 0x05060000
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
#define G2D_CMQ_SUBMODE_CTRL_REG_L_ADDR 0x01040000
#define G2D_CMQ_SUBMODE_CTRL_REG_H_ADDR 0x01060000
#define G2D_CMQ_TRIANGLE_SLOPE_L_L_ADDR 0x02000000
#define G2D_CMQ_TRIANGLE_SLOPE_L_H_ADDR 0x02020000
#define G2D_CMQ_SRCKEY_COLOR_L_ADDR 0x02100000
#define G2D_CMQ_SRCKEY_COLOR_H_ADDR 0x02120000
#define G2D_CMQ_DEST_BASE_L_ADDR 0x03000000
#define G2D_CMQ_DEST_BASE_H_ADDR 0x03020000
#define G2D_CMQ_DEST_PITCH_ADDR 0x03040000
#define G2D_CMQ_DEST_Y_ADDR 0x03080000
#define G2D_CMQ_DEST_X_ADDR 0x030A0000
#define G2D_CMQ_Y_START_ADDR 0x03080000
#define G2D_CMQ_X_START_ADDR 0x030A0000
#define G2D_CMQ_CIRCLE_CENTER_Y_ADDR 0x03080000
#define G2D_CMQ_CIRCLE_CENTER_X_ADDR 0x030A0000
#define G2D_CMQ_BEZIER_START_Y_ADDR 0x03080000
#define G2D_CMQ_BEZIER_START_X_ADDR 0x030A0000
#define G2D_CMQ_Y_END_ADDR 0x030C0000
#define G2D_CMQ_X_END_ADDR 0x030E0000
#define G2D_CMQ_CIRCLE_RADIUS_ADDR 0x030C0000
#define G2D_CMQ_BEZIER_MIDDLE_Y_ADDR 0x030C0000
#define G2D_CMQ_BEZIER_MIDDLE_X_ADDR 0x030E0000
#define G2D_CMQ_TRIANGLE_Y_END_ADDR 0x030C0000
#define G2D_CMQ_BEZIER_END_Y_ADDR 0x03100000
#define G2D_CMQ_BEZIER_END_X_ADDR 0x03120000
#define G2D_CMQ_LINE_DELTA_Y_ADDR 0x03100000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -