• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __REG3_INFO_H__
3 #define __REG3_INFO_H__
4 
5 #include "rga_drv.h"
6 
7 //General Registers
8 /* yqw: status和int寄存器尚不明了,无法进行修改。 */
9 //#define RGA2_STATUS			 0x00c
10 //#define RGA2_INT				 0x010
11 
12 #define RGA3_SYS_CTRL			 0x000
13 #define RGA3_CMD_CTRL			 0x004
14 #define RGA3_CMD_ADDR			 0x008
15 #define RGA3_MI_GROUP_CTRL		0x00c
16 #define RGA3_ARQOS_CTRL		 0x010
17 #define RGA3_VERSION_NUM		 0x018
18 #define RGA3_VERSION_TIM		 0x01c
19 #define RGA3_INT_EN			 0x020
20 #define RGA3_INT_RAW			 0x024
21 #define RGA3_INT_MSK			 0x028
22 #define RGA3_INT_CLR			 0x02c
23 #define RGA3_RO_SRST			 0x030
24 #define RGA3_STATUS0			 0x034
25 #define RGA3_SCAN_CNT			 0x038
26 #define RGA3_STATUS1			 0x03c
27 #define RGA3_CMD_STATE			0x040
28 
29 /* TODO: RGA_INT */
30 
31 /* RGA3_WIN0_RD_CTRL */
32 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_ENABLE			 (0x1 << 0)
33 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_MODE			 (0x3 << 1)
34 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_PIC_FORMAT		 (0xf << 4)
35 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_FORMAT		 (0x3 << 8)
36 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_YUV10B_COMPACT	 (0x1 << 10)
37 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_ENDIAN_MODE		 (0x1 << 11)
38 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_PIX_SWAP			(0x1 << 12)
39 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_YC_SWAP			 (0x1 << 13)
40 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_ROT				 (0x1 << 16)
41 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_XMIRROR			 (0x1 << 17)
42 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_YMIRROR			 (0x1 << 18)
43 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_HOR_BY			 (0x1 << 20)
44 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_HOR_UP			 (0x1 << 21)
45 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_VER_BY			 (0x1 << 22)
46 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_VER_UP			 (0x1 << 23)
47 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_Y2R_EN			 (0x1 << 24)
48 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_R2Y_EN			 (0x1 << 25)
49 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_CSC_MODE			(0x3 << 26)
50 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_PERF_OPT_DIS		(0x1 << 29)
51 #define m_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_ALIGN_DIS		(0x1 << 30)
52 
53 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_ENABLE(x)		 ((x & 0x1) << 0)
54 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_MODE(x)		 ((x & 0x3) << 1)
55 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_PIC_FORMAT(x)	 ((x & 0xf) << 4)
56 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_FORMAT(x)		((x & 0x3) << 8)
57 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_YUV10B_COMPACT(x) ((x & 0x1) << 10)
58 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_ENDIAN_MODE(x)	 ((x & 0x1) << 11)
59 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_PIX_SWAP(x)		 ((x & 0x1) << 12)
60 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_YC_SWAP(x)		 ((x & 0x1) << 13)
61 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_ROT(x)		((x & 0x1) << 16)
62 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_XMIRROR(x)		 ((x & 0x1) << 17)
63 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_YMIRROR(x)		 ((x & 0x1) << 18)
64 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_HOR_BY(x)		 ((x & 0x1) << 20)
65 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_HOR_UP(x)		 ((x & 0x1) << 21)
66 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_VER_BY(x)		 ((x & 0x1) << 22)
67 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_VER_UP(x)		 ((x & 0x1) << 23)
68 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_Y2R_EN(x)		 ((x & 0x1) << 24)
69 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_R2Y_EN(x)		 ((x & 0x1) << 25)
70 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_CSC_MODE(x)		 ((x & 0x3) << 26)
71 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_PERF_OPT_DIS(x)	 ((x & 0x1) << 29)
72 #define s_RGA3_WIN0_RD_CTRL_SW_WIN0_RD_ALIGN_DIS(x)	 ((x & 0x1) << 30)
73 
74 /* RGA3_WIN0_FBC_OFF */
75 #define m_RGA3_WIN0_FBC_OFF_SW_WIN0_FBC_XOFF			(0x1fff << 0)
76 #define m_RGA3_WIN0_FBC_OFF_SW_WIN0_FBC_YOFF			(0x1fff << 16)
77 
78 #define s_RGA3_WIN0_FBC_OFF_SW_WIN0_FBC_XOFF(x)		 ((x & 0x1fff) << 0)
79 #define s_RGA3_WIN0_FBC_OFF_SW_WIN0_FBC_YOFF(x)		 ((x & 0x1fff) << 16)
80 
81 /* RGA3_WIN0_SRC_SIZE */
82 #define m_RGA3_WIN0_SRC_SIZE_SW_WIN0_SRC_WIDTH		 (0x1fff << 0)
83 #define m_RGA3_WIN0_SRC_SIZE_SW_WIN0_SRC_HEIGHT		 (0x1fff << 16)
84 
85 #define s_RGA3_WIN0_SRC_OFF_SW_WIN0_SRC_WIDTH(x)	((x & 0x1fff) << 0)
86 #define s_RGA3_WIN0_SRC_OFF_SW_WIN0_SRC_HEIGHT(x)	 ((x & 0x1fff) << 16)
87 
88 /* RGA3_WIN0_ACT_OFF */
89 #define m_RGA3_WIN0_ACT_OFF_SW_WIN0_ACT_XOFF			(0x1fff << 0)
90 #define m_RGA3_WIN0_ACT_OFF_SW_WIN0_ACT_YOFF			(0x1fff << 16)
91 
92 #define s_RGA3_WIN0_ACT_OFF_SW_WIN0_ACT_XOFF(x)		 ((x & 0x1fff) << 0)
93 #define s_RGA3_WIN0_ACT_OFF_SW_WIN0_ACT_YOFF(x)		 ((x & 0x1fff) << 16)
94 
95 /* RGA3_WIN0_ACT_SIZE */
96 #define m_RGA3_WIN0_ACT_SIZE_SW_WIN0_ACT_WIDTH		 (0x1fff << 0)
97 #define m_RGA3_WIN0_ACT_SIZE_SW_WIN0_ACT_HEIGHT		 (0x1fff << 16)
98 
99 #define s_RGA3_WIN0_ACT_SIZE_SW_WIN0_ACT_WIDTH(x)	 ((x & 0x1fff) << 0)
100 #define s_RGA3_WIN0_ACT_SIZE_SW_WIN0_ACT_HEIGHT(x)	 ((x & 0x1fff) << 16)
101 
102 /* RGA3_WIN0_DST_SIZE */
103 #define m_RGA3_WIN0_DST_SIZE_SW_WIN0_DST_WIDTH		 (0x1fff << 0)
104 #define m_RGA3_WIN0_DST_SIZE_SW_WIN0_DST_HEIGHT		 (0x1fff << 16)
105 
106 #define s_RGA3_WIN0_DST_SIZE_SW_WIN0_DST_WIDTH(x)	 ((x & 0x1fff) << 0)
107 #define s_RGA3_WIN0_DST_SIZE_SW_WIN0_DST_HEIGHT(x)	 ((x & 0x1fff) << 16)
108 
109 /* RGA3_WIN0_SCL_FAC */
110 #define m_RGA3_WIN0_SCL_FAC_SW_WIN0_VER_FAC			 (0xffff << 0)
111 #define m_RGA3_WIN0_SCL_FAC_SW_WIN0_HOR_FAC			 (0xffff << 16)
112 
113 #define s_RGA3_WIN0_SCL_FAC_SW_WIN0_VER_FAC(x)		 ((x & 0xffff) << 0)
114 #define s_RGA3_WIN0_SCL_FAC_SW_WIN0_HOR_FAC(x)		 ((x & 0xffff) << 16)
115 
116 /* RGA3_WIN1_RD_CTRL */
117 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_ENABLE			 (0x1 << 0)
118 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_MODE			 (0x3 << 1)
119 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_PIC_FORMAT		 (0xf << 4)
120 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_FORMAT		 (0x3 << 8)
121 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_YUV10B_COMPACT	 (0x1 << 10)
122 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_ENDIAN_MODE		 (0x1 << 11)
123 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_PIX_SWAP			(0x1 << 12)
124 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_YC_SWAP			 (0x1 << 13)
125 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_ROT				 (0x1 << 16)
126 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_XMIRROR			 (0x1 << 17)
127 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_YMIRROR			 (0x1 << 18)
128 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_HOR_BY			 (0x1 << 20)
129 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_HOR_UP			 (0x1 << 21)
130 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_VER_BY			 (0x1 << 22)
131 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_VER_UP			 (0x1 << 23)
132 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_Y2R_EN			 (0x1 << 24)
133 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_R2Y_EN			 (0x1 << 25)
134 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_CSC_MODE			(0x3 << 26)
135 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_PERF_OPT_DIS		(0x1 << 29)
136 #define m_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_ALIGN_DIS		(0x1 << 30)
137 
138 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_ENABLE(x)		 ((x & 0x1) << 0)
139 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_MODE(x)		 ((x & 0x3) << 1)
140 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_PIC_FORMAT(x)	 ((x & 0xf) << 4)
141 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_FORMAT(x)		((x & 0x3) << 8)
142 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_YUV10B_COMPACT(x) ((x & 0x1) << 10)
143 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_ENDIAN_MODE(x)	 ((x & 0x1) << 11)
144 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_PIX_SWAP(x)		 ((x & 0x1) << 12)
145 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_YC_SWAP(x)		 ((x & 0x1) << 13)
146 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_ROT(x)		((x & 0x1) << 16)
147 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_XMIRROR(x)		 ((x & 0x1) << 17)
148 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_YMIRROR(x)		 ((x & 0x1) << 18)
149 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_HOR_BY(x)		 ((x & 0x1) << 20)
150 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_HOR_UP(x)		 ((x & 0x1) << 21)
151 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_VER_BY(x)		 ((x & 0x1) << 22)
152 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_VER_UP(x)		 ((x & 0x1) << 23)
153 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_Y2R_EN(x)		 ((x & 0x1) << 24)
154 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_R2Y_EN(x)		 ((x & 0x1) << 25)
155 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_CSC_MODE(x)		 ((x & 0x3) << 26)
156 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_PERF_OPT_DIS(x)	 ((x & 0x1) << 29)
157 #define s_RGA3_WIN1_RD_CTRL_SW_WIN1_RD_ALIGN_DIS(x)	 ((x & 0x1) << 30)
158 
159 /* RGA3_WIN1_FBC_OFF */
160 #define m_RGA3_WIN1_FBC_OFF_SW_WIN1_FBC_XOFF			(0x1fff << 0)
161 #define m_RGA3_WIN1_FBC_OFF_SW_WIN1_FBC_YOFF			(0x1fff << 16)
162 
163 #define s_RGA3_WIN1_FBC_OFF_SW_WIN1_FBC_XOFF(x)		 ((x & 0x1fff) << 0)
164 #define s_RGA3_WIN1_FBC_OFF_SW_WIN1_FBC_YOFF(x)		 ((x & 0x1fff) << 16)
165 
166 /* RGA3_WIN1_SRC_SIZE */
167 #define m_RGA3_WIN1_SRC_SIZE_SW_WIN1_SRC_WIDTH		 (0x1fff << 0)
168 #define m_RGA3_WIN1_SRC_SIZE_SW_WIN1_SRC_HEIGHT		 (0x1fff << 16)
169 
170 #define s_RGA3_WIN1_SRC_OFF_SW_WIN1_SRC_WIDTH(x)	((x & 0x1fff) << 0)
171 #define s_RGA3_WIN1_SRC_OFF_SW_WIN1_SRC_HEIGHT(x)	 ((x & 0x1fff) << 16)
172 
173 /* RGA3_WIN1_ACT_OFF */
174 #define m_RGA3_WIN1_ACT_OFF_SW_WIN1_ACT_XOFF			(0x1fff << 0)
175 #define m_RGA3_WIN1_ACT_OFF_SW_WIN1_ACT_YOFF			(0x1fff << 16)
176 
177 #define s_RGA3_WIN1_ACT_OFF_SW_WIN1_ACT_XOFF(x)		 ((x & 0x1fff) << 0)
178 #define s_RGA3_WIN1_ACT_OFF_SW_WIN1_ACT_YOFF(x)		 ((x & 0x1fff) << 16)
179 
180 /* RGA3_WIN1_ACT_SIZE */
181 #define m_RGA3_WIN1_ACT_SIZE_SW_WIN1_ACT_WIDTH		 (0x1fff << 0)
182 #define m_RGA3_WIN1_ACT_SIZE_SW_WIN1_ACT_HEIGHT		 (0x1fff << 16)
183 
184 #define s_RGA3_WIN1_ACT_SIZE_SW_WIN1_ACT_WIDTH(x)	 ((x & 0x1fff) << 0)
185 #define s_RGA3_WIN1_ACT_SIZE_SW_WIN1_ACT_HEIGHT(x)	 ((x & 0x1fff) << 16)
186 
187 /* RGA3_WIN1_DST_SIZE */
188 #define m_RGA3_WIN1_DST_SIZE_SW_WIN1_DST_WIDTH		 (0x1fff << 0)
189 #define m_RGA3_WIN1_DST_SIZE_SW_WIN1_DST_HEIGHT		 (0x1fff << 16)
190 
191 #define s_RGA3_WIN1_DST_SIZE_SW_WIN1_DST_WIDTH(x)	 ((x & 0x1fff) << 0)
192 #define s_RGA3_WIN1_DST_SIZE_SW_WIN1_DST_HEIGHT(x)	 ((x & 0x1fff) << 16)
193 
194 /* RGA3_WIN1_SCL_FAC */
195 #define m_RGA3_WIN1_SCL_FAC_SW_WIN1_VER_FAC			 (0xffff << 0)
196 #define m_RGA3_WIN1_SCL_FAC_SW_WIN1_HOR_FAC			 (0xffff << 16)
197 
198 #define s_RGA3_WIN1_SCL_FAC_SW_WIN1_VER_FAC(x)		 ((x & 0xffff) << 0)
199 #define s_RGA3_WIN1_SCL_FAC_SW_WIN1_HOR_FAC(x)		 ((x & 0xffff) << 16)
200 
201 /* RGA3_OVLP_CTRL */
202 #define m_RGA3_OVLP_CTRL_SW_OVLP_MODE				 (0x3 << 0)
203 #define m_RGA3_OVLP_CTRL_SW_OVLP_FIELD				 (0x1 << 2)
204 #define m_RGA3_OVLP_CTRL_SW_TOP_SWAP			(0x1 << 3)
205 #define m_RGA3_OVLP_CTRL_SW_TOP_ALPHA_EN		(0x1 << 4)
206 #define m_RGA3_OVLP_CTRL_SW_TOP_KEY_EN				 (0x7FFF << 5)
207 #define m_RGA3_OVLP_CTRL_SW_OVLP_Y2R_EN				 (0x1 << 20)
208 #define m_RGA3_OVLP_CTRL_SW_OVLP_R2Y_EN				 (0x1 << 21)
209 #define m_RGA3_OVLP_CTRL_SW_OVLP_CSC_MODE			 (0x3 << 22)
210 
211 #define s_RGA3_OVLP_CTRL_SW_OVLP_MODE(x)		((x & 0x3) << 0)
212 #define s_RGA3_OVLP_CTRL_SW_OVLP_FIELD(x)		((x & 0x1) << 2)
213 #define s_RGA3_OVLP_CTRL_SW_TOP_SWAP(x)			((x & 0x1) << 3)
214 #define s_RGA3_OVLP_CTRL_SW_TOP_ALPHA_EN(x)		((x & 0x1) << 4)
215 #define s_RGA3_OVLP_CTRL_SW_TOP_KEY_EN(x)		((x & 0x7FFF) << 5)
216 #define s_RGA3_OVLP_CTRL_SW_OVLP_Y2R_EN(x)		((x & 0x1) << 20)
217 #define s_RGA3_OVLP_CTRL_SW_OVLP_R2Y_EN(x)		((x & 0x1) << 21)
218 #define s_RGA3_OVLP_CTRL_SW_OVLP_CSC_MODE(x)	((x & 0x3) << 22)
219 
220 /* RGA3_OVLP_OFF */
221 #define m_RGA3_OVLP_OFF_SW_OVLP_XOFF		(0x1fff << 0)
222 #define m_RGA3_OVLP_OFF_SW_OVLP_YOFF		(0x1fff << 16)
223 
224 #define s_RGA3_OVLP_OFF_SW_OVLP_XOFF(x)		((x & 0x1fff) << 0)
225 #define s_RGA3_OVLP_OFF_SW_OVLP_YOFF(x)		((x & 0x1fff) << 16)
226 
227 /* RGA3_OVLP_TOP_KEY_MIN */
228 #define m_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_YG_MIN	 (0x3ff << 0)
229 #define m_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_UB_MIN	 (0x3ff << 10)
230 #define m_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_VR_MIN	 (0x3ff << 20)
231 
232 #define s_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_YG_MIN(x)	((x & 0x3f)f << 0)
233 #define s_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_UB_MIN(x)	((x & 0x3ff) << 10)
234 #define s_RGA3_OVLP_TOP_KEY_MIN_SW_TOP_KEY_VR_MIN(x)	((x & 0x3ff) << 20)
235 
236 /* RGA3_OVLP_TOP_KEY_MAX */
237 #define m_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_YG_MAX	 (0x3ff << 0)
238 #define m_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_UB_MAX	 (0x3ff << 10)
239 #define m_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_VR_MAX	 (0x3ff << 20)
240 
241 #define s_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_YG_MAX(x)	((x & 0x3ff) << 0)
242 #define s_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_UB_MAX(x)	((x & 0x3ff) << 10)
243 #define s_RGA3_OVLP_TOP_KEY_MAX_SW_TOP_KEY_VR_MAX(x)	((x & 0x3ff) << 20)
244 
245 /* RGA3_OVLP_TOP_CTRL */
246 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_COLOR_M0			(0x1 << 0)
247 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_ALPHA_M0			(0x1 << 1)
248 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_BLEND_M0			(0x3 << 2)
249 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_ALPHA_CAL_M0		(0x1 << 4)
250 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_FACTOR_M0		 (0x7 << 5)
251 #define m_RGA3_OVLP_TOP_CTRL_SW_TOP_GLOBAL_ALPHA		(0xff << 16)
252 
253 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_COLOR_M0(x)		 ((x & 0x1) << 0)
254 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_ALPHA_M0(x)		 ((x & 0x1) << 1)
255 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_BLEND_M0(x)		 ((x & 0x3) << 2)
256 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_ALPHA_CAL_M0(x)	 ((x & 0x1) << 4)
257 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_FACTOR_M0(x)		((x & 0x7) << 5)
258 #define s_RGA3_OVLP_TOP_CTRL_SW_TOP_GLOBAL_ALPHA(x)	 ((x & 0xff) << 16)
259 
260 /* RGA3_OVLP_BOT_CTRL */
261 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_COLOR_M0			(0x1 << 0)
262 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_ALPHA_M0			(0x1 << 1)
263 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_BLEND_M0			(0x3 << 2)
264 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_ALPHA_CAL_M0		(0x1 << 4)
265 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_FACTOR_M0		 (0x7 << 5)
266 #define m_RGA3_OVLP_BOT_CTRL_SW_BOT_GLOBAL_ALPHA		(0xff << 16)
267 
268 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_COLOR_M0(x)		 ((x & 0x1) << 0)
269 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_ALPHA_M0(x)		 ((x & 0x1) << 1)
270 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_BLEND_M0(x)		 ((x & 0x3) << 2)
271 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_ALPHA_CAL_M0(x)	 ((x & 0x1) << 4)
272 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_FACTOR_M0(x)		((x & 0x7) << 5)
273 #define s_RGA3_OVLP_BOT_CTRL_SW_BOT_GLOBAL_ALPHA(x)	 ((x & 0xff) << 16)
274 
275 /* RGA3_OVLP_TOP_ALPHA */
276 #define m_RGA3_OVLP_TOP_ALPHA_SW_TOP_ALPHA_M1		 (0x1 << 1)
277 #define m_RGA3_OVLP_TOP_ALPHA_SW_TOP_BLEND_M1		 (0x3 << 2)
278 #define m_RGA3_OVLP_TOP_ALPHA_SW_TOP_ALPHA_CAL_M1	 (0x1 << 4)
279 #define m_RGA3_OVLP_TOP_ALPHA_SW_TOP_FACTOR_M1		 (0x7 << 5)
280 
281 #define s_RGA3_OVLP_TOP_ALPHA_SW_TOP_ALPHA_M1(x)		((x & 0x1) << 1)
282 #define s_RGA3_OVLP_TOP_ALPHA_SW_TOP_BLEND_M1(x)		((x & 0x3) << 2)
283 #define s_RGA3_OVLP_TOP_ALPHA_SW_TOP_ALPHA_CAL_M1(x)	((x & 0x1) << 4)
284 #define s_RGA3_OVLP_TOP_ALPHA_SW_TOP_FACTOR_M1(x)	 ((x & 0x7) << 5)
285 
286 /* RGA3_OVLP_BOT_ALPHA */
287 #define m_RGA3_OVLP_BOT_ALPHA_SW_BOT_ALPHA_M1		 (0x1 << 1)
288 #define m_RGA3_OVLP_BOT_ALPHA_SW_BOT_BLEND_M1		 (0x3 << 2)
289 #define m_RGA3_OVLP_BOT_ALPHA_SW_BOT_ALPHA_CAL_M1	 (0x1 << 4)
290 #define m_RGA3_OVLP_BOT_ALPHA_SW_BOT_FACTOR_M1		 (0x7 << 5)
291 
292 #define s_RGA3_OVLP_BOT_ALPHA_SW_BOT_ALPHA_M1(x)		((x & 0x1) << 1)
293 #define s_RGA3_OVLP_BOT_ALPHA_SW_BOT_BLEND_M1(x)		((x & 0x3) << 2)
294 #define s_RGA3_OVLP_BOT_ALPHA_SW_BOT_ALPHA_CAL_M1(x)	((x & 0x1) << 4)
295 #define s_RGA3_OVLP_BOT_ALPHA_SW_BOT_FACTOR_M1(x)	 ((x & 0x7) << 5)
296 
297 /* RGA3_WR_CTRL */
298 #define m_RGA3_WR_CTRL_SW_WR_MODE			(0x3 << 0)
299 #define m_RGA3_WR_CTRL_SW_WR_FBCE_SPARSE_EN			 (0x1 << 2)
300 #define m_RGA3_WR_CTRL_SW_WR_PIC_FORMAT				 (0xf << 4)
301 #define m_RGA3_WR_CTRL_SW_WR_FORMAT				(0x3 << 8)
302 #define m_RGA3_WR_CTRL_SW_WR_YUV10B_COMPACT			 (0x1 << 10)
303 #define m_RGA3_WR_CTRL_SW_WR_ENDIAN_MODE		(0x1 << 11)
304 #define m_RGA3_WR_CTRL_SW_WR_PIX_SWAP				 (0x1 << 12)
305 #define m_RGA3_WR_CTRL_SW_OUTSTANDING_MAX			 (0x3f << 13)
306 #define m_RGA3_WR_CTRL_SW_WR_YC_SWAP			(0x1 << 20)
307 
308 #define s_RGA3_WR_CTRL_SW_WR_MODE(x)			((x & 0x3) << 0)
309 #define s_RGA3_WR_CTRL_SW_WR_FBCE_SPARSE_EN(x)		 ((x & 0x1) << 2)
310 #define s_RGA3_WR_CTRL_SW_WR_PIC_FORMAT(x)		((x & 0xf) << 4)
311 #define s_RGA3_WR_CTRL_SW_WR_FORMAT(x)			((x & 0x3) << 8)
312 #define s_RGA3_WR_CTRL_SW_WR_YUV10B_COMPACT(x)		 ((x & 0x1) << 10)
313 #define s_RGA3_WR_CTRL_SW_WR_ENDIAN_MODE(x)		((x & 0x1) << 11)
314 #define s_RGA3_WR_CTRL_SW_WR_PIX_SWAP(x)		((x & 0x1) << 12)
315 #define s_RGA3_WR_CTRL_SW_OUTSTANDING_MAX(x)	((x & 0x3f) << 13)
316 #define s_RGA3_WR_CTRL_SW_WR_YC_SWAP(x)			((x & 0x1) << 20)
317 
318 /* RGA3_WR_FBCE_CTRL */
319 #define m_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_BLKBD_OPT_DIS	(0x1 << 0)
320 #define m_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_HOFF_DISS		(0x1 << 1)
321 #define m_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_PL_FIFO0_WATERMARK	 (0x3f << 2)
322 #define m_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_PL_FIFO1_WATERMARK	 (0x3f << 8)
323 #define m_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_SIZE_ALIGN_DIS		 (0x1 << 31)
324 
325 #define s_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_BLKBD_OPT_DIS(x)	((x & 0x1) << 0)
326 #define s_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_HOFF_DISS(x)		((x & 0x1) << 1)
327 #define s_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_PL_FIFO0_WATERMARK(x) ((x & 0x3f) << 2)
328 #define s_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_PL_FIFO1_WATERMARK(x) ((x & 0x3f) << 8)
329 #define s_RGA3_WR_FBCE_CTRL_SW_WR_FBCE_SIZE_ALIGN_DIS(x) ((x & 0x1) << 31)
330 
331 /* RGA3_MMU_STATUS read_only */
332 #define m_RGA3_MMU_STATUS_PAGING_ENABLED		(0x1 << 0)
333 #define m_RGA3_MMU_STATUS_PAGE_FAULT_ACTIVE			 (0x1 << 1)
334 #define m_RGA3_MMU_STATUS_STAIL_ACTIVE				 (0x1 << 2)
335 #define m_RGA3_MMU_STATUS_MMU_IDLE			(0x1 << 3)
336 #define m_RGA3_MMU_STATUS_REPLAY_BUFFER_EMPTY		 (0x1 << 4)
337 #define m_RGA3_MMU_STATUS_PAGE_FAULT_IS_WRITE		 (0x1 << 5)
338 #define m_RGA3_MMU_STATUS_PAGE_FAULT_BUS_ID			 (0x1f << 6)
339 
340 /* RGA3_MMU_INT_RAWSTAT read_only */
341 #define m_RGA3_MMU_INT_RAWSTAT_READ_BUS_ERROR		 (0x1 << 0)
342 #define m_RGA3_MMU_INT_RAWSTAT_PAGE_FAULT			 (0x1 << 1)
343 
344 /* RGA3_MMU_INT_CLEAR write_only */
345 #define m_RGA3_MMU_INT_CLEAR_READ_BUS_ERROR			 (0x1 << 0)
346 #define m_RGA3_MMU_INT_CLEAR_PAGE_FAULT				 (0x1 << 1)
347 
348 #define s_RGA3_MMU_INT_CLEAR_READ_BUS_ERROR(x)		 ((x & 0x1) << 0)
349 #define s_RGA3_MMU_INT_CLEAR_PAGE_FAULT(x)		((x & 0x1) << 1)
350 
351 /* RGA3_MMU_INT_MASK */
352 #define m_RGA3_MMU_INT_MASK_READ_BUS_ERROR			 (0x1 << 0)
353 #define m_RGA3_MMU_INT_MASK_PAGE_FAULT				 (0x1 << 1)
354 
355 #define s_RGA3_MMU_INT_MASK_READ_BUS_ERROR(x)		 ((x & 0x1) << 0)
356 #define s_RGA3_MMU_INT_MASK_PAGE_FAULT(x)		((x & 0x1) << 1)
357 
358 /* RGA3_MMU_INT_STATUS read_only */
359 #define m_RGA3_MMU_INT_STATUS_READ_BUS_ERROR		(0x1 << 0)
360 #define m_RGA3_MMU_INT_STATUS_PAGE_FAULT			(0x1 << 1)
361 
362 /* RGA3_MMU_AUTO_GATING */
363 #define m_RGA3_MMU_AUTO_GATING_MMU_AUTO_GATING		 (0x1 << 1)
364 #define m_RGA3_MMU_AUTO_GATING_MMU_CFG_MODE		(0x1 << 1)
365 #define m_RGA3_MMU_AUTO_GATING_MMU_BUG_FIXED_DISABLE	(0x1 << 31)
366 
367 #define s_RGA3_MMU_AUTO_GATING_MMU_AUTO_GATING(x)	 ((x & 0x1) << 1)
368 #define s_RGA3_MMU_AUTO_GATING_MMU_BUG_FIXED_DISABLE(x) ((x & 0x1) << 31)
369 
370 /* sys_reg */
371 #define RGA3_SYS_CTRL_OFFSET			 0x000
372 #define RGA3_CMD_CTRL_OFFSET			 0x004
373 #define RGA3_CMD_ADDR_OFFSET			 0x008
374 #define RGA3_MI_GROUP_CTRL_OFFSET		 0x00c
375 #define RGA3_ARQOS_CTRL_OFFSET			 0x010
376 #define RGA3_VERSION_NUM_OFFSET			 0x018
377 #define RGA3_VERSION_TIM_OFFSET			 0x01c
378 #define RGA3_INT_EN_OFFSET				 0x020
379 #define RGA3_INT_RAW_OFFSET				 0x024
380 #define RGA3_INT_MSK_OFFSET				 0x028
381 #define RGA3_INT_CLR_OFFSET				 0x02c
382 #define RGA3_RO_SRST_OFFSET				 0x030
383 #define RGA3_STATUS0_OFFSET				 0x034
384 #define RGA3_SCAN_CNT_OFFSET			 0x038
385 #define RGA3_STATUS1_OFFSET				 0x03c
386 #define RGA3_CMD_STATE_OFFSET			 0x040
387 
388 /* op_reg */
389 #define RGA3_WIN0_RD_CTRL_OFFSET		 0x000
390 #define RGA3_WIN0_Y_BASE_OFFSET			 0x010
391 #define RGA3_WIN0_U_BASE_OFFSET			 0x014
392 #define RGA3_WIN0_V_BASE_OFFSET			 0x018
393 #define RGA3_WIN0_VIR_STRIDE_OFFSET		 0x01c
394 #define RGA3_WIN0_FBC_OFF_OFFSET		 0x020
395 #define RGA3_WIN0_SRC_SIZE_OFFSET		 0x024
396 #define RGA3_WIN0_ACT_OFF_OFFSET		 0x028
397 #define RGA3_WIN0_ACT_SIZE_OFFSET		 0x02c
398 #define RGA3_WIN0_DST_SIZE_OFFSET		 0x030
399 #define RGA3_WIN0_SCL_FAC_OFFSET		 0x034
400 #define RGA3_WIN0_UV_VIR_STRIDE_OFFSET	 0x038
401 #define RGA3_WIN1_RD_CTRL_OFFSET		 0x040
402 #define RGA3_WIN1_Y_BASE_OFFSET			 0x050
403 #define RGA3_WIN1_U_BASE_OFFSET			 0x054
404 #define RGA3_WIN1_V_BASE_OFFSET			 0x058
405 #define RGA3_WIN1_VIR_STRIDE_OFFSET		 0x05c
406 #define RGA3_WIN1_FBC_OFF_OFFSET		 0x060
407 #define RGA3_WIN1_SRC_SIZE_OFFSET		 0x064
408 #define RGA3_WIN1_ACT_OFF_OFFSET		 0x068
409 #define RGA3_WIN1_ACT_SIZE_OFFSET		 0x06c
410 #define RGA3_WIN1_DST_SIZE_OFFSET		 0x070
411 #define RGA3_WIN1_SCL_FAC_OFFSET		 0x074
412 #define RGA3_WIN1_UV_VIR_STRIDE_OFFSET	 0x078
413 #define RGA3_OVLP_CTRL_OFFSET			 0x080
414 #define RGA3_OVLP_OFF_OFFSET			 0x084
415 #define RGA3_OVLP_TOP_KEY_MIN_OFFSET	 0x088
416 #define RGA3_OVLP_TOP_KEY_MAX_OFFSET	 0x08c
417 #define RGA3_OVLP_TOP_CTRL_OFFSET		 0x090
418 #define RGA3_OVLP_BOT_CTRL_OFFSET		 0x094
419 #define RGA3_OVLP_TOP_ALPHA_OFFSET		 0x098
420 #define RGA3_OVLP_BOT_ALPHA_OFFSET		 0x09c
421 #define RGA3_WR_CTRL_OFFSET				 0x0a0
422 #define RGA3_WR_FBCE_CTRL_OFFSET		 0x0a4
423 #define RGA3_WR_VIR_STRIDE_OFFSET		 0x0a8
424 #define RGA3_WR_PL_VIR_STRIDE_OFFSET	 0x0ac
425 #define RGA3_WR_Y_BASE_OFFSET			 0x0b0
426 #define RGA3_WR_U_BASE_OFFSET			 0x0b4
427 #define RGA3_WR_V_BASE_OFFSET			 0x0b8
428 #define RGA3_MMU_DTE_ADDR_OFFSET		 0x0f00
429 #define RGA3_MMU_STATUS_OFFSET			 0x0f04
430 #define RGA3_MMU_COMMAND_OFFSET			 0x0f08
431 #define RGA3_MMU_PAGE_FAULT_ADDR_OFFSET	 0x0f0c
432 #define RGA3_MMU_ZAP_ONE_LINE_OFFSET	 0x0f10
433 #define RGA3_MMU_INT_RAWSTAT_OFFSET		 0x0f14
434 #define RGA3_MMU_INT_CLEAR_OFFSET		 0x0f18
435 #define RGA3_MMU_INT_MASK_OFFSET		 0x0f1c
436 #define RGA3_MMU_INT_STATUS_OFFSET		 0x0f20
437 #define RGA3_MMU_AUTO_GATING_OFFSET		 0x0f24
438 #define RGA3_MMU_REG_LOAD_EN_OFFSET		 0x0f28
439 
440 int rga3_gen_reg_info(unsigned char *base, struct rga3_req *msg);
441 void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req);
442 //void RGA_MSG_2_RGA3_MSG_32(struct rga_req_32 *req_rga, struct rga3_req *req);
443 
444 void rga3_soft_reset(struct rga_scheduler_t *scheduler);
445 int rga3_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler);
446 int rga3_init_reg(struct rga_job *job);
447 int rga3_get_version(struct rga_scheduler_t *scheduler);
448 
449 #endif
450 
451