⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2d_engine.h

📁 最新MTK手机软件源码
💻 H
📖 第 1 页 / 共 3 页
字号:
#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 + -