xref: /OK3568_Linux_fs/kernel/drivers/video/rockchip/rga2/rga2_reg_info.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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