1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __REG2_INFO_H__ 3*4882a593Smuzhiyun #define __REG2_INFO_H__ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun //#include "chip_register.h" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun //#include "rga_struct.h" 9*4882a593Smuzhiyun #include "rga2.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef MIN 12*4882a593Smuzhiyun #define MIN(X, Y) ((X)<(Y)?(X):(Y)) 13*4882a593Smuzhiyun #endif 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #ifndef MAX 16*4882a593Smuzhiyun #define MAX(X, Y) ((X)>(Y)?(X):(Y)) 17*4882a593Smuzhiyun #endif 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #ifndef ABS 20*4882a593Smuzhiyun #define ABS(X) (((X) < 0) ? (-(X)) : (X)) 21*4882a593Smuzhiyun #endif 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #ifndef CLIP 24*4882a593Smuzhiyun #define CLIP(x, a, b) ((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)) 25*4882a593Smuzhiyun #endif 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define rRGA_SYS_CTRL (*(volatile u32 *)(RGA2_BASE + RGA2_SYS_CTRL_OFFSET )) 28*4882a593Smuzhiyun #define rRGA_CMD_CTRL (*(volatile u32 *)(RGA2_BASE + RGA2_CMD_CTRL_OFFSET )) 29*4882a593Smuzhiyun #define rRGA_CMD_BASE (*(volatile u32 *)(RGA2_BASE + RGA2_CMD_BASE_OFFSET )) 30*4882a593Smuzhiyun #define rRGA_STATUS (*(volatile u32 *)(RGA2_BASE + RGA2_STATUS_OFFSET )) 31*4882a593Smuzhiyun #define rRGA_INT (*(volatile u32 *)(RGA2_BASE + RGA2_INT_OFFSET )) 32*4882a593Smuzhiyun #define rRGA_MMU_CTRL0 (*(volatile u32 *)(RGA2_BASE + RGA2_MMU_CTRL0_OFFSET )) 33*4882a593Smuzhiyun #define rRGA_MMU_CMD_BASE (*(volatile u32 *)(RGA2_BASE + RGA2_MMU_CMD_BASE_OFFSET)) 34*4882a593Smuzhiyun #define rRGA_CMD_ADDR (*(volatile u32 *)(RGA2_BASE + RGA2_CMD_ADDR)) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /*RGA_INT*/ 37*4882a593Smuzhiyun #define m_RGA2_INT_ALL_CMD_DONE_INT_EN ( 1<<10 ) 38*4882a593Smuzhiyun #define m_RGA2_INT_MMU_INT_EN ( 1<<9 ) 39*4882a593Smuzhiyun #define m_RGA2_INT_ERROR_INT_EN ( 1<<8 ) 40*4882a593Smuzhiyun #define m_RGA2_INT_NOW_CMD_DONE_INT_CLEAR ( 1<<7 ) 41*4882a593Smuzhiyun #define m_RGA2_INT_ALL_CMD_DONE_INT_CLEAR ( 1<<6 ) 42*4882a593Smuzhiyun #define m_RGA2_INT_MMU_INT_CLEAR ( 1<<5 ) 43*4882a593Smuzhiyun #define m_RGA2_INT_ERROR_INT_CLEAR ( 1<<4 ) 44*4882a593Smuzhiyun #define m_RGA2_INT_CUR_CMD_DONE_INT_FLAG ( 1<<3 ) 45*4882a593Smuzhiyun #define m_RGA2_INT_ALL_CMD_DONE_INT_FLAG ( 1<<2 ) 46*4882a593Smuzhiyun #define m_RGA2_INT_MMU_INT_FLAG ( 1<<1 ) 47*4882a593Smuzhiyun #define m_RGA2_INT_ERROR_INT_FLAG ( 1<<0 ) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define s_RGA2_INT_ALL_CMD_DONE_INT_EN(x) ( (x&0x1)<<10 ) 50*4882a593Smuzhiyun #define s_RGA2_INT_MMU_INT_EN(x) ( (x&0x1)<<9 ) 51*4882a593Smuzhiyun #define s_RGA2_INT_ERROR_INT_EN(x) ( (x&0x1)<<8 ) 52*4882a593Smuzhiyun #define s_RGA2_INT_NOW_CMD_DONE_INT_CLEAR(x) ( (x&0x1)<<7 ) 53*4882a593Smuzhiyun #define s_RGA2_INT_ALL_CMD_DONE_INT_CLEAR(x) ( (x&0x1)<<6 ) 54*4882a593Smuzhiyun #define s_RGA2_INT_MMU_INT_CLEAR(x) ( (x&0x1)<<5 ) 55*4882a593Smuzhiyun #define s_RGA2_INT_ERROR_INT_CLEAR(x) ( (x&0x1)<<4 ) 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun /* RGA_MODE_CTRL */ 60*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_RENDER_MODE ( 0x7<<0 ) 61*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_BITBLT_MODE ( 0x1<<3 ) 62*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_CF_ROP4_PAT ( 0x1<<4 ) 63*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_ALPHA_ZERO_KET ( 0x1<<5 ) 64*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_GRADIENT_SAT ( 0x1<<6 ) 65*4882a593Smuzhiyun #define m_RGA2_MODE_CTRL_SW_INTR_CF_E ( 0x1<<7 ) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_RENDER_MODE(x) ( (x&0x7)<<0 ) 68*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_BITBLT_MODE(x) ( (x&0x1)<<3 ) 69*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_CF_ROP4_PAT(x) ( (x&0x1)<<4 ) 70*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_ALPHA_ZERO_KET(x) ( (x&0x1)<<5 ) 71*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_GRADIENT_SAT(x) ( (x&0x1)<<6 ) 72*4882a593Smuzhiyun #define s_RGA2_MODE_CTRL_SW_INTR_CF_E(x) ( (x&0x1)<<7 ) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun /* RGA_SRC_INFO */ 75*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SRC_FMT ( 0xf<<0 ) 76*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_RB_SWAP ( 0x1<<4 ) 77*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_ALPHA_SWAP ( 0x1<<5 ) 78*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_UV_SWAP ( 0x1<<6 ) 79*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_CP_ENDAIN ( 0x1<<7 ) 80*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_CSC_MODE ( 0x3<<8 ) 81*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_ROT_MODE ( 0x3<<10 ) 82*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_MIR_MODE ( 0x3<<12 ) 83*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_HSCL_MODE ( 0x3<<14 ) 84*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_VSCL_MODE ( 0x3<<16 ) 85*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_TRANS_MODE ( 0x1<<18 ) 86*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_TRANS_E ( 0xf<<19 ) 87*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_DITHER_UP_E ( 0x1<<23 ) 88*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_SRC_SCL_FILTER ( 0x3<<24 ) 89*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_VSP_MODE_SEL ( 0x1<<26 ) 90*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_YUV10_E ( 0x1<<27 ) 91*4882a593Smuzhiyun #define m_RGA2_SRC_INFO_SW_SW_YUV10_ROUND_E ( 0x1<<28 ) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SRC_FMT(x) ( (x&0xf)<<0 ) 98*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_RB_SWAP(x) ( (x&0x1)<<4 ) 99*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_ALPHA_SWAP(x) ( (x&0x1)<<5 ) 100*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_UV_SWAP(x) ( (x&0x1)<<6 ) 101*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_CP_ENDAIN(x) ( (x&0x1)<<7 ) 102*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_CSC_MODE(x) ( (x&0x3)<<8 ) 103*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_ROT_MODE(x) ( (x&0x3)<<10 ) 104*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_MIR_MODE(x) ( (x&0x3)<<12 ) 105*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_HSCL_MODE(x) ( (x&0x3)<<14 ) 106*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_VSCL_MODE(x) ( (x&0x3)<<16 ) 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_TRANS_MODE(x) ( (x&0x1)<<18 ) 109*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_TRANS_E(x) ( (x&0xf)<<19 ) 110*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_DITHER_UP_E(x) ( (x&0x1)<<23 ) 111*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_SRC_SCL_FILTER(x) ( (x&0x3)<<24 ) 112*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_VSP_MODE_SEL(x) ( (x&0x1)<<26 ) 113*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_YUV10_E(x) ( (x&0x1)<<27 ) 114*4882a593Smuzhiyun #define s_RGA2_SRC_INFO_SW_SW_YUV10_ROUND_E(x) ( (x&0x1)<<28 ) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* RGA_SRC_VIR_INFO */ 117*4882a593Smuzhiyun #define m_RGA2_SRC_VIR_INFO_SW_SRC_VIR_STRIDE ( 0x7fff<<0 ) //modify 118*4882a593Smuzhiyun #define m_RGA2_SRC_VIR_INFO_SW_MASK_VIR_STRIDE ( 0x3ff<<16 ) //modify 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #define s_RGA2_SRC_VIR_INFO_SW_SRC_VIR_STRIDE(x) ( (x&0x7fff)<<0 ) //modify 121*4882a593Smuzhiyun #define s_RGA2_SRC_VIR_INFO_SW_MASK_VIR_STRIDE(x) ( (x&0x3ff)<<16 ) //modify 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* RGA_SRC_ACT_INFO */ 125*4882a593Smuzhiyun #define m_RGA2_SRC_ACT_INFO_SW_SRC_ACT_WIDTH ( 0x1fff<<0 ) 126*4882a593Smuzhiyun #define m_RGA2_SRC_ACT_INFO_SW_SRC_ACT_HEIGHT ( 0x1fff<<16 ) 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define s_RGA2_SRC_ACT_INFO_SW_SRC_ACT_WIDTH(x) ( (x&0x1fff)<<0 ) 129*4882a593Smuzhiyun #define s_RGA2_SRC_ACT_INFO_SW_SRC_ACT_HEIGHT(x) ( (x&0x1fff<)<16 ) 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* RGA_DST_INFO */ 133*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_FMT ( 0xf<<0 ) 134*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_RB_SWAP ( 0x1<<4 ) 135*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_ALPHA_SWAP ( 0x1<<5 ) 136*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_UV_SWAP ( 0x1<<6 ) 137*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_SRC1_FMT ( 0x7<<7 ) 138*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_SRC1_RB_SWP ( 0x1<<10) 139*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_SRC1_ALPHA_SWP ( 0x1<<11) 140*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DITHER_UP_E ( 0x1<<12) 141*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DITHER_DOWN_E ( 0x1<<13) 142*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DITHER_MODE ( 0x3<<14) 143*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_CSC_MODE ( 0x3<<16) //add 144*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_CSC_CLIP_MODE ( 0x1<<18) 145*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_CSC_MODE_2 ( 0x1<<19) //add 146*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_FMT_YUV400_EN ( 0x1<<24) 147*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_FMT_Y4_EN ( 0x1<<25) 148*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_DST_NN_QUANTIZE_EN ( 0x1<<26) 149*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_SRC1_CSC_MODE ( 0x3<<20) //add 150*4882a593Smuzhiyun #define m_RGA2_DST_INFO_SW_SRC1_CSC_CLIP_MODE ( 0x1<<22) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_FMT(x) ( (x&0xf)<<0 ) 153*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_RB_SWAP(x) ( (x&0x1)<<4 ) 154*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_ALPHA_SWAP(x) ( (x&0x1)<<5 ) 155*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_UV_SWAP(x) ( (x&0x1)<<6 ) 156*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_SRC1_FMT(x) ( (x&0x7)<<7 ) 157*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_SRC1_RB_SWP(x) ( (x&0x1)<<10) 158*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_SRC1_ALPHA_SWP(x) ( (x&0x1)<<11) 159*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DITHER_UP_E(x) ( (x&0x1)<<12) 160*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DITHER_DOWN_E(x) ( (x&0x1)<<13) 161*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DITHER_MODE(x) ( (x&0x3)<<14) 162*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_CSC_MODE(x) ( (x&0x3)<<16) //add 163*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_CSC_CLIP_MODE(x) ( (x&0x1)<<18) 164*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_CSC_MODE_2(x) ( (x&0x1)<<19) //add 165*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_FMT_YUV400_EN(x) ( (x&0x1)<<24) 166*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_FMT_Y4_EN(x) ( (x&0x1)<<25) 167*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_DST_NN_QUANTIZE_EN(x) ( (x&0x1)<<26) 168*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_SRC1_CSC_MODE(x) ( (x&0x3)<<20) //add 169*4882a593Smuzhiyun #define s_RGA2_DST_INFO_SW_SRC1_CSC_CLIP_MODE(x) ( (x&0x1)<<22) 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* RGA_ALPHA_CTRL0 */ 173*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL0_SW_ALPHA_ROP_0 ( 0x1<<0 ) 174*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL0_SW_ALPHA_ROP_SEL ( 0x1<<1 ) 175*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL0_SW_ROP_MODE ( 0x3<<2 ) 176*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL0_SW_SRC_GLOBAL_ALPHA ( 0xff<<4 ) 177*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL0_SW_DST_GLOBAL_ALPHA ( 0xff<<12 ) 178*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRLO_SW_MASK_ENDIAN ( 0x1<<20 ) //add 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL0_SW_ALPHA_ROP_0(x) ( (x&0x1)<<0 ) 181*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL0_SW_ALPHA_ROP_SEL(x) ( (x&0x1)<<1 ) 182*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL0_SW_ROP_MODE(x) ( (x&0x3)<<2 ) 183*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL0_SW_SRC_GLOBAL_ALPHA(x) ( (x&0xff)<<4 ) 184*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL0_SW_DST_GLOBAL_ALPHA(x) ( (x&0xff)<<12 ) 185*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRLO_SW_MASK_ENDIAN(x) ( (x&0x1)<<20 ) //add 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun /* RGA_ALPHA_CTRL1 */ 190*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_COLOR_M0 ( 0x1<<0 ) 191*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_COLOR_M0 ( 0x1<<1 ) 192*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_FACTOR_M0 ( 0x7<<2 ) 193*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_FACTOR_M0 ( 0x7<<5 ) 194*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_CAL_M0 ( 0x1<<8 ) 195*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_CAL_M0 ( 0x1<<9 ) 196*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_BLEND_M0 ( 0x3<<10) 197*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_BLEND_M0 ( 0x3<<12) 198*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_M0 ( 0x1<<14) 199*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_M0 ( 0x1<<15) 200*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_FACTOR_M1 ( 0x7<<16) 201*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_FACTOR_M1 ( 0x7<<19) 202*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_CAL_M1 ( 0x1<<22) 203*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_CAL_M1 ( 0x1<<23) 204*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_BLEND_M1 ( 0x3<<24) 205*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_BLEND_M1 ( 0x3<<26) 206*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_M1 ( 0x1<<28) 207*4882a593Smuzhiyun #define m_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_M1 ( 0x1<<29) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_COLOR_M0(x) ( (x&0x1)<<0 ) 210*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_COLOR_M0(x) ( (x&0x1)<<1 ) 211*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_FACTOR_M0(x) ( (x&0x7)<<2 ) 212*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_FACTOR_M0(x) ( (x&0x7)<<5 ) 213*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_CAL_M0(x) ( (x&0x1)<<8 ) 214*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_CAL_M0(x) ( (x&0x1)<<9 ) 215*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_BLEND_M0(x) ( (x&0x3)<<10) 216*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_BLEND_M0(x) ( (x&0x3)<<12) 217*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_M0(x) ( (x&0x1)<<14) 218*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_M0(x) ( (x&0x1)<<15) 219*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_FACTOR_M1(x) ( (x&0x7)<<16) 220*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_FACTOR_M1(x) ( (x&0x7)<<19) 221*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_CAL_M1(x) ( (x&0x1)<<22) 222*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_CAL_M1(x) ( (x&0x1)<<23) 223*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_BLEND_M1(x) ( (x&0x3)<<24) 224*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_BLEND_M1(x) ( (x&0x3)<<26) 225*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_DST_ALPHA_M1(x) ( (x&0x1)<<28) 226*4882a593Smuzhiyun #define s_RGA2_ALPHA_CTRL1_SW_SRC_ALPHA_M1(x) ( (x&0x1)<<29) 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun /* RGA_MMU_CTRL1 */ 231*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC_MMU_EN ( 0x1<<0 ) 232*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC_MMU_FLUSH ( 0x1<<1 ) 233*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC_MMU_PREFETCH_EN ( 0x1<<2 ) 234*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC_MMU_PREFETCH_DIR ( 0x1<<3 ) 235*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC1_MMU_EN ( 0x1<<4 ) 236*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC1_MMU_FLUSH ( 0x1<<5 ) 237*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC1_MMU_PREFETCH_EN ( 0x1<<6 ) 238*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_SRC1_MMU_PREFETCH_DIR ( 0x1<<7 ) 239*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_DST_MMU_EN ( 0x1<<8 ) 240*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_DST_MMU_FLUSH ( 0x1<<9 ) 241*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_DST_MMU_PREFETCH_EN ( 0x1<<10 ) 242*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_DST_MMU_PREFETCH_DIR ( 0x1<<11 ) 243*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_ELS_MMU_EN ( 0x1<<12 ) 244*4882a593Smuzhiyun #define m_RGA2_MMU_CTRL1_SW_ELS_MMU_FLUSH ( 0x1<<13 ) 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC_MMU_EN(x) ( (x&0x1)<<0 ) 247*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC_MMU_FLUSH(x) ( (x&0x1)<<1 ) 248*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC_MMU_PREFETCH_EN(x) ( (x&0x1)<<2 ) 249*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC_MMU_PREFETCH_DIR(x) ( (x&0x1)<<3 ) 250*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC1_MMU_EN(x) ( (x&0x1)<<4 ) 251*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC1_MMU_FLUSH(x) ( (x&0x1)<<5 ) 252*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC1_MMU_PREFETCH_EN(x) ( (x&0x1)<<6 ) 253*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_SRC1_MMU_PREFETCH_DIR(x) ( (x&0x1)<<7 ) 254*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_DST_MMU_EN(x) ( (x&0x1)<<8 ) 255*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_DST_MMU_FLUSH(x) ( (x&0x1)<<9 ) 256*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_DST_MMU_PREFETCH_EN(x) ( (x&0x1)<<10 ) 257*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_DST_MMU_PREFETCH_DIR(x) ( (x&0x1)<<11 ) 258*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_ELS_MMU_EN(x) ( (x&0x1)<<12 ) 259*4882a593Smuzhiyun #define s_RGA2_MMU_CTRL1_SW_ELS_MMU_FLUSH(x) ( (x&0x1)<<13 ) 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun #define RGA2_SYS_CTRL_OFFSET 0x0 263*4882a593Smuzhiyun #define RGA2_CMD_CTRL_OFFSET 0x4 264*4882a593Smuzhiyun #define RGA2_CMD_BASE_OFFSET 0x8 265*4882a593Smuzhiyun #define RGA2_STATUS_OFFSET 0xc 266*4882a593Smuzhiyun #define RGA2_INT_OFFSET 0x10 267*4882a593Smuzhiyun #define RGA2_MMU_CTRL0_OFFSET 0x14 268*4882a593Smuzhiyun #define RGA2_MMU_CMD_BASE_OFFSET 0x18 269*4882a593Smuzhiyun /* dst full csc */ 270*4882a593Smuzhiyun #define RGA2_DST_CSC_00_OFFSET 0x0 271*4882a593Smuzhiyun #define RGA2_DST_CSC_01_OFFSET 0x4 272*4882a593Smuzhiyun #define RGA2_DST_CSC_02_OFFSET 0x8 273*4882a593Smuzhiyun #define RGA2_DST_CSC_OFF0_OFFSET 0xc 274*4882a593Smuzhiyun #define RGA2_DST_CSC_10_OFFSET 0x10 275*4882a593Smuzhiyun #define RGA2_DST_CSC_11_OFFSET 0x14 276*4882a593Smuzhiyun #define RGA2_DST_CSC_12_OFFSET 0x18 277*4882a593Smuzhiyun #define RGA2_DST_CSC_OFF1_OFFSET 0x1c 278*4882a593Smuzhiyun #define RGA2_DST_CSC_20_OFFSET 0x20 279*4882a593Smuzhiyun #define RGA2_DST_CSC_21_OFFSET 0x24 280*4882a593Smuzhiyun #define RGA2_DST_CSC_22_OFFSET 0x28 281*4882a593Smuzhiyun #define RGA2_DST_CSC_OFF2_OFFSET 0x2c 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun #define RGA2_MODE_CTRL_OFFSET 0x00 284*4882a593Smuzhiyun #define RGA2_SRC_INFO_OFFSET 0x04 285*4882a593Smuzhiyun #define RGA2_SRC_BASE0_OFFSET 0x08 286*4882a593Smuzhiyun #define RGA2_SRC_BASE1_OFFSET 0x0c 287*4882a593Smuzhiyun #define RGA2_SRC_BASE2_OFFSET 0x10 288*4882a593Smuzhiyun #define RGA2_SRC_BASE3_OFFSET 0x14 289*4882a593Smuzhiyun #define RGA2_SRC_VIR_INFO_OFFSET 0x18 290*4882a593Smuzhiyun #define RGA2_SRC_ACT_INFO_OFFSET 0x1c 291*4882a593Smuzhiyun #define RGA2_SRC_X_FACTOR_OFFSET 0x20 292*4882a593Smuzhiyun #define RGA2_SRC_Y_FACTOR_OFFSET 0x24 293*4882a593Smuzhiyun #define RGA2_SRC_BG_COLOR_OFFSET 0x28 294*4882a593Smuzhiyun #define RGA2_SRC_FG_COLOR_OFFSET 0x2c 295*4882a593Smuzhiyun #define RGA2_SRC_TR_COLOR0_OFFSET 0x30 296*4882a593Smuzhiyun #define RGA2_CF_GR_A_OFFSET 0x30 // repeat 297*4882a593Smuzhiyun #define RGA2_SRC_TR_COLOR1_OFFSET 0x34 298*4882a593Smuzhiyun #define RGA2_CF_GR_B_OFFSET 0x34 // repeat 299*4882a593Smuzhiyun #define RGA2_DST_INFO_OFFSET 0x38 300*4882a593Smuzhiyun #define RGA2_DST_BASE0_OFFSET 0x3c 301*4882a593Smuzhiyun #define RGA2_DST_BASE1_OFFSET 0x40 302*4882a593Smuzhiyun #define RGA2_DST_BASE2_OFFSET 0x44 303*4882a593Smuzhiyun #define RGA2_DST_VIR_INFO_OFFSET 0x48 304*4882a593Smuzhiyun #define RGA2_DST_ACT_INFO_OFFSET 0x4c 305*4882a593Smuzhiyun #define RGA2_ALPHA_CTRL0_OFFSET 0x50 306*4882a593Smuzhiyun #define RGA2_ALPHA_CTRL1_OFFSET 0x54 307*4882a593Smuzhiyun #define RGA2_FADING_CTRL_OFFSET 0x58 308*4882a593Smuzhiyun #define RGA2_PAT_CON_OFFSET 0x5c 309*4882a593Smuzhiyun #define RGA2_ROP_CTRL0_OFFSET 0x60 310*4882a593Smuzhiyun #define RGA2_CF_GR_G_OFFSET 0x60 // repeat 311*4882a593Smuzhiyun #define RGA2_DST_Y4MAP_LUT0_OFFSET 0x60 // repeat 312*4882a593Smuzhiyun #define RGA2_DST_QUANTIZE_SCALE_OFFSET 0x60 // repeat 313*4882a593Smuzhiyun #define RGA2_ROP_CTRL1_OFFSET 0x64 314*4882a593Smuzhiyun #define RGA2_CF_GR_R_OFFSET 0x64 // repeat 315*4882a593Smuzhiyun #define RGA2_DST_Y4MAP_LUT1_OFFSET 0x64 // repeat 316*4882a593Smuzhiyun #define RGA2_DST_QUANTIZE_OFFSET_OFFSET 0x64 // repeat 317*4882a593Smuzhiyun #define RGA2_MASK_BASE_OFFSET 0x68 318*4882a593Smuzhiyun #define RGA2_MMU_CTRL1_OFFSET 0x6c 319*4882a593Smuzhiyun #define RGA2_MMU_SRC_BASE_OFFSET 0x70 320*4882a593Smuzhiyun #define RGA2_MMU_SRC1_BASE_OFFSET 0x74 321*4882a593Smuzhiyun #define RGA2_MMU_DST_BASE_OFFSET 0x78 322*4882a593Smuzhiyun #define RGA2_MMU_ELS_BASE_OFFSET 0x7c 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun int RGA2_gen_reg_info(unsigned char *base, unsigned char *csc_base, struct rga2_req *msg); 325*4882a593Smuzhiyun void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req); 326*4882a593Smuzhiyun void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req); 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun #endif 331*4882a593Smuzhiyun 332