1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Copyright (C) Rockchip Electronics Co., Ltd.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Author: Cerf Yu <cerf.yu@rock-chips.com>
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun #define pr_fmt(fmt) "rga_common: " fmt
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun #include "rga.h"
11*4882a593Smuzhiyun #include "rga_common.h"
12*4882a593Smuzhiyun
rga_is_rgb_format(uint32_t format)13*4882a593Smuzhiyun bool rga_is_rgb_format(uint32_t format)
14*4882a593Smuzhiyun {
15*4882a593Smuzhiyun switch (format) {
16*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
17*4882a593Smuzhiyun case RGA_FORMAT_RGBX_8888:
18*4882a593Smuzhiyun case RGA_FORMAT_RGB_888:
19*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
20*4882a593Smuzhiyun case RGA_FORMAT_BGRX_8888:
21*4882a593Smuzhiyun case RGA_FORMAT_BGR_888:
22*4882a593Smuzhiyun case RGA_FORMAT_RGB_565:
23*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
24*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
25*4882a593Smuzhiyun case RGA_FORMAT_BGR_565:
26*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
27*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
28*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
29*4882a593Smuzhiyun case RGA_FORMAT_XRGB_8888:
30*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
31*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
32*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
33*4882a593Smuzhiyun case RGA_FORMAT_XBGR_8888:
34*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
35*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
36*4882a593Smuzhiyun return true;
37*4882a593Smuzhiyun default:
38*4882a593Smuzhiyun return false;
39*4882a593Smuzhiyun }
40*4882a593Smuzhiyun }
41*4882a593Smuzhiyun
rga_is_yuv_format(uint32_t format)42*4882a593Smuzhiyun bool rga_is_yuv_format(uint32_t format)
43*4882a593Smuzhiyun {
44*4882a593Smuzhiyun switch (format) {
45*4882a593Smuzhiyun case RGA_FORMAT_Y4:
46*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
49*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
50*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
51*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
52*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
53*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
54*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
55*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
58*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
59*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
60*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
61*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
62*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
63*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
64*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
67*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
68*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
69*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
70*4882a593Smuzhiyun return true;
71*4882a593Smuzhiyun default:
72*4882a593Smuzhiyun return false;
73*4882a593Smuzhiyun }
74*4882a593Smuzhiyun }
75*4882a593Smuzhiyun
rga_is_alpha_format(uint32_t format)76*4882a593Smuzhiyun bool rga_is_alpha_format(uint32_t format)
77*4882a593Smuzhiyun {
78*4882a593Smuzhiyun switch (format) {
79*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
80*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
81*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
82*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
83*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
84*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
85*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
86*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
87*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
88*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
89*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
90*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
91*4882a593Smuzhiyun return true;
92*4882a593Smuzhiyun default:
93*4882a593Smuzhiyun return false;
94*4882a593Smuzhiyun }
95*4882a593Smuzhiyun }
96*4882a593Smuzhiyun
rga_is_yuv420_packed_format(uint32_t format)97*4882a593Smuzhiyun bool rga_is_yuv420_packed_format(uint32_t format)
98*4882a593Smuzhiyun {
99*4882a593Smuzhiyun switch (format) {
100*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
101*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
102*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
103*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
104*4882a593Smuzhiyun return true;
105*4882a593Smuzhiyun default:
106*4882a593Smuzhiyun return false;
107*4882a593Smuzhiyun }
108*4882a593Smuzhiyun }
109*4882a593Smuzhiyun
rga_is_yuv420_planar_format(uint32_t format)110*4882a593Smuzhiyun bool rga_is_yuv420_planar_format(uint32_t format)
111*4882a593Smuzhiyun {
112*4882a593Smuzhiyun switch (format) {
113*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
114*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
115*4882a593Smuzhiyun return true;
116*4882a593Smuzhiyun default:
117*4882a593Smuzhiyun return false;
118*4882a593Smuzhiyun }
119*4882a593Smuzhiyun }
120*4882a593Smuzhiyun
rga_is_yuv420_semi_planar_format(uint32_t format)121*4882a593Smuzhiyun bool rga_is_yuv420_semi_planar_format(uint32_t format)
122*4882a593Smuzhiyun {
123*4882a593Smuzhiyun switch (format) {
124*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
125*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
126*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
127*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
128*4882a593Smuzhiyun return true;
129*4882a593Smuzhiyun default:
130*4882a593Smuzhiyun return false;
131*4882a593Smuzhiyun }
132*4882a593Smuzhiyun }
133*4882a593Smuzhiyun
rga_is_yuv422_packed_format(uint32_t format)134*4882a593Smuzhiyun bool rga_is_yuv422_packed_format(uint32_t format)
135*4882a593Smuzhiyun {
136*4882a593Smuzhiyun switch (format) {
137*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
138*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
139*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
140*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
141*4882a593Smuzhiyun return true;
142*4882a593Smuzhiyun default:
143*4882a593Smuzhiyun return false;
144*4882a593Smuzhiyun }
145*4882a593Smuzhiyun }
146*4882a593Smuzhiyun
rga_is_yuv422_planar_format(uint32_t format)147*4882a593Smuzhiyun bool rga_is_yuv422_planar_format(uint32_t format)
148*4882a593Smuzhiyun {
149*4882a593Smuzhiyun switch (format) {
150*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
151*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
152*4882a593Smuzhiyun return true;
153*4882a593Smuzhiyun default:
154*4882a593Smuzhiyun return false;
155*4882a593Smuzhiyun }
156*4882a593Smuzhiyun }
157*4882a593Smuzhiyun
rga_is_yuv422_semi_planar_format(uint32_t format)158*4882a593Smuzhiyun bool rga_is_yuv422_semi_planar_format(uint32_t format)
159*4882a593Smuzhiyun {
160*4882a593Smuzhiyun switch (format) {
161*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
162*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
163*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
164*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
165*4882a593Smuzhiyun return true;
166*4882a593Smuzhiyun default:
167*4882a593Smuzhiyun return false;
168*4882a593Smuzhiyun }
169*4882a593Smuzhiyun }
170*4882a593Smuzhiyun
rga_is_yuv8bit_format(uint32_t format)171*4882a593Smuzhiyun bool rga_is_yuv8bit_format(uint32_t format)
172*4882a593Smuzhiyun {
173*4882a593Smuzhiyun switch (format) {
174*4882a593Smuzhiyun case RGA_FORMAT_Y4:
175*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
178*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
179*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
180*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
181*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
182*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
183*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
184*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
187*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
188*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
189*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
190*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
191*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
192*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
193*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
194*4882a593Smuzhiyun return true;
195*4882a593Smuzhiyun default:
196*4882a593Smuzhiyun return false;
197*4882a593Smuzhiyun }
198*4882a593Smuzhiyun }
199*4882a593Smuzhiyun
rga_is_yuv10bit_format(uint32_t format)200*4882a593Smuzhiyun bool rga_is_yuv10bit_format(uint32_t format)
201*4882a593Smuzhiyun {
202*4882a593Smuzhiyun switch (format) {
203*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
204*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
205*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
206*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
207*4882a593Smuzhiyun return true;
208*4882a593Smuzhiyun default:
209*4882a593Smuzhiyun return false;
210*4882a593Smuzhiyun }
211*4882a593Smuzhiyun }
212*4882a593Smuzhiyun
rga_is_yuv422p_format(uint32_t format)213*4882a593Smuzhiyun bool rga_is_yuv422p_format(uint32_t format)
214*4882a593Smuzhiyun {
215*4882a593Smuzhiyun switch (format) {
216*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
217*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
218*4882a593Smuzhiyun return true;
219*4882a593Smuzhiyun default:
220*4882a593Smuzhiyun return false;
221*4882a593Smuzhiyun }
222*4882a593Smuzhiyun }
223*4882a593Smuzhiyun
rga_is_only_y_format(uint32_t format)224*4882a593Smuzhiyun bool rga_is_only_y_format(uint32_t format)
225*4882a593Smuzhiyun {
226*4882a593Smuzhiyun switch (format) {
227*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
228*4882a593Smuzhiyun case RGA_FORMAT_Y4:
229*4882a593Smuzhiyun return true;
230*4882a593Smuzhiyun default:
231*4882a593Smuzhiyun return false;
232*4882a593Smuzhiyun }
233*4882a593Smuzhiyun }
234*4882a593Smuzhiyun
rga_get_format_name(uint32_t format)235*4882a593Smuzhiyun const char *rga_get_format_name(uint32_t format)
236*4882a593Smuzhiyun {
237*4882a593Smuzhiyun switch (format) {
238*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
239*4882a593Smuzhiyun return "RGBA8888";
240*4882a593Smuzhiyun case RGA_FORMAT_RGBX_8888:
241*4882a593Smuzhiyun return "RGBX8888";
242*4882a593Smuzhiyun case RGA_FORMAT_RGB_888:
243*4882a593Smuzhiyun return "RGB888";
244*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
245*4882a593Smuzhiyun return "BGRA8888";
246*4882a593Smuzhiyun case RGA_FORMAT_BGRX_8888:
247*4882a593Smuzhiyun return "BGRX8888";
248*4882a593Smuzhiyun case RGA_FORMAT_BGR_888:
249*4882a593Smuzhiyun return "BGR888";
250*4882a593Smuzhiyun case RGA_FORMAT_RGB_565:
251*4882a593Smuzhiyun return "RGB565";
252*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
253*4882a593Smuzhiyun return "RGBA5551";
254*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
255*4882a593Smuzhiyun return "RGBA4444";
256*4882a593Smuzhiyun case RGA_FORMAT_BGR_565:
257*4882a593Smuzhiyun return "BGR565";
258*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
259*4882a593Smuzhiyun return "BGRA5551";
260*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
261*4882a593Smuzhiyun return "BGRA4444";
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
264*4882a593Smuzhiyun return "YCbCr422SP";
265*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
266*4882a593Smuzhiyun return "YCbCr422P";
267*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
268*4882a593Smuzhiyun return "YCbCr420SP";
269*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
270*4882a593Smuzhiyun return "YCbCr420P";
271*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
272*4882a593Smuzhiyun return "YCrCb422SP";
273*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
274*4882a593Smuzhiyun return "YCrCb422P";
275*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
276*4882a593Smuzhiyun return "YCrCb420SP";
277*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
278*4882a593Smuzhiyun return "YCrCb420P";
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
281*4882a593Smuzhiyun return "YVYU422";
282*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
283*4882a593Smuzhiyun return "YVYU420";
284*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
285*4882a593Smuzhiyun return "VYUY422";
286*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
287*4882a593Smuzhiyun return "VYUY420";
288*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
289*4882a593Smuzhiyun return "YUYV422";
290*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
291*4882a593Smuzhiyun return "YUYV420";
292*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
293*4882a593Smuzhiyun return "UYVY422";
294*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
295*4882a593Smuzhiyun return "UYVY420";
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
298*4882a593Smuzhiyun return "YCrCb420SP10B";
299*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
300*4882a593Smuzhiyun return "YCbCr420SP10B";
301*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
302*4882a593Smuzhiyun return "YCbCr422SP10B";
303*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
304*4882a593Smuzhiyun return "YCrCb422SP10B";
305*4882a593Smuzhiyun case RGA_FORMAT_BPP1:
306*4882a593Smuzhiyun return "BPP1";
307*4882a593Smuzhiyun case RGA_FORMAT_BPP2:
308*4882a593Smuzhiyun return "BPP2";
309*4882a593Smuzhiyun case RGA_FORMAT_BPP4:
310*4882a593Smuzhiyun return "BPP4";
311*4882a593Smuzhiyun case RGA_FORMAT_BPP8:
312*4882a593Smuzhiyun return "BPP8";
313*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
314*4882a593Smuzhiyun return "YCbCr400";
315*4882a593Smuzhiyun case RGA_FORMAT_Y4:
316*4882a593Smuzhiyun return "y4";
317*4882a593Smuzhiyun
318*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
319*4882a593Smuzhiyun return "ARGB8888";
320*4882a593Smuzhiyun case RGA_FORMAT_XRGB_8888:
321*4882a593Smuzhiyun return "XRGB8888";
322*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
323*4882a593Smuzhiyun return "ARGB5551";
324*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
325*4882a593Smuzhiyun return "ARGB4444";
326*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
327*4882a593Smuzhiyun return "ABGR8888";
328*4882a593Smuzhiyun case RGA_FORMAT_XBGR_8888:
329*4882a593Smuzhiyun return "XBGR8888";
330*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
331*4882a593Smuzhiyun return "ABGR5551";
332*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
333*4882a593Smuzhiyun return "ABGR4444";
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun case RGA_FORMAT_RGBA_2BPP:
336*4882a593Smuzhiyun return "RGBA2BPP";
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun default:
339*4882a593Smuzhiyun return "UNF";
340*4882a593Smuzhiyun }
341*4882a593Smuzhiyun }
342*4882a593Smuzhiyun
rga_get_format_bits(uint32_t format)343*4882a593Smuzhiyun int rga_get_format_bits(uint32_t format)
344*4882a593Smuzhiyun {
345*4882a593Smuzhiyun int bits = 0;
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun switch (format) {
348*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
349*4882a593Smuzhiyun case RGA_FORMAT_RGBX_8888:
350*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
351*4882a593Smuzhiyun case RGA_FORMAT_BGRX_8888:
352*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
353*4882a593Smuzhiyun case RGA_FORMAT_XRGB_8888:
354*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
355*4882a593Smuzhiyun case RGA_FORMAT_XBGR_8888:
356*4882a593Smuzhiyun bits = 32;
357*4882a593Smuzhiyun break;
358*4882a593Smuzhiyun case RGA_FORMAT_RGB_888:
359*4882a593Smuzhiyun case RGA_FORMAT_BGR_888:
360*4882a593Smuzhiyun bits = 24;
361*4882a593Smuzhiyun break;
362*4882a593Smuzhiyun case RGA_FORMAT_RGB_565:
363*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
364*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
365*4882a593Smuzhiyun case RGA_FORMAT_BGR_565:
366*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
367*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
368*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
369*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
370*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
371*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
372*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
373*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
374*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
375*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
376*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
377*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
378*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
379*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
380*4882a593Smuzhiyun /* YUV 420 packed according to the arrangement of YUV422 packed. */
381*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
382*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
383*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
384*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
385*4882a593Smuzhiyun bits = 16;
386*4882a593Smuzhiyun break;
387*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
388*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
389*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
390*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
391*4882a593Smuzhiyun bits = 12;
392*4882a593Smuzhiyun break;
393*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
394*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
395*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
396*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
397*4882a593Smuzhiyun bits = 15;
398*4882a593Smuzhiyun break;
399*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
400*4882a593Smuzhiyun case RGA_FORMAT_BPP8:
401*4882a593Smuzhiyun bits = 8;
402*4882a593Smuzhiyun break;
403*4882a593Smuzhiyun case RGA_FORMAT_Y4:
404*4882a593Smuzhiyun case RGA_FORMAT_BPP4:
405*4882a593Smuzhiyun bits = 4;
406*4882a593Smuzhiyun break;
407*4882a593Smuzhiyun case RGA_FORMAT_BPP2:
408*4882a593Smuzhiyun bits = 2;
409*4882a593Smuzhiyun break;
410*4882a593Smuzhiyun case RGA_FORMAT_BPP1:
411*4882a593Smuzhiyun bits = 1;
412*4882a593Smuzhiyun break;
413*4882a593Smuzhiyun default:
414*4882a593Smuzhiyun pr_err("unknown format [0x%x]\n", format);
415*4882a593Smuzhiyun return -1;
416*4882a593Smuzhiyun }
417*4882a593Smuzhiyun
418*4882a593Smuzhiyun return bits;
419*4882a593Smuzhiyun }
420*4882a593Smuzhiyun
rga_get_pixel_stride_from_format(uint32_t format)421*4882a593Smuzhiyun int rga_get_pixel_stride_from_format(uint32_t format)
422*4882a593Smuzhiyun {
423*4882a593Smuzhiyun int pixel_stride = 0;
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun switch (format) {
426*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
427*4882a593Smuzhiyun case RGA_FORMAT_RGBX_8888:
428*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
429*4882a593Smuzhiyun case RGA_FORMAT_BGRX_8888:
430*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
431*4882a593Smuzhiyun case RGA_FORMAT_XRGB_8888:
432*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
433*4882a593Smuzhiyun case RGA_FORMAT_XBGR_8888:
434*4882a593Smuzhiyun pixel_stride = 32;
435*4882a593Smuzhiyun break;
436*4882a593Smuzhiyun case RGA_FORMAT_RGB_888:
437*4882a593Smuzhiyun case RGA_FORMAT_BGR_888:
438*4882a593Smuzhiyun pixel_stride = 24;
439*4882a593Smuzhiyun break;
440*4882a593Smuzhiyun case RGA_FORMAT_RGB_565:
441*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
442*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
443*4882a593Smuzhiyun case RGA_FORMAT_BGR_565:
444*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
445*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
446*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
447*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
448*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
449*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
450*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
451*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
452*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
453*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
454*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
455*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
456*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
457*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
458*4882a593Smuzhiyun pixel_stride = 16;
459*4882a593Smuzhiyun break;
460*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
461*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
462*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
463*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
464*4882a593Smuzhiyun pixel_stride = 10;
465*4882a593Smuzhiyun break;
466*4882a593Smuzhiyun case RGA_FORMAT_BPP1:
467*4882a593Smuzhiyun case RGA_FORMAT_BPP2:
468*4882a593Smuzhiyun case RGA_FORMAT_BPP4:
469*4882a593Smuzhiyun case RGA_FORMAT_BPP8:
470*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
471*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
472*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
473*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
474*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
475*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
476*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
477*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
478*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
479*4882a593Smuzhiyun pixel_stride = 8;
480*4882a593Smuzhiyun break;
481*4882a593Smuzhiyun case RGA_FORMAT_Y4:
482*4882a593Smuzhiyun pixel_stride = 4;
483*4882a593Smuzhiyun break;
484*4882a593Smuzhiyun default:
485*4882a593Smuzhiyun pr_err("unknown format [0x%x]\n", format);
486*4882a593Smuzhiyun return -1;
487*4882a593Smuzhiyun }
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun return pixel_stride;
490*4882a593Smuzhiyun }
491*4882a593Smuzhiyun
rga_get_render_mode_str(uint8_t mode)492*4882a593Smuzhiyun const char *rga_get_render_mode_str(uint8_t mode)
493*4882a593Smuzhiyun {
494*4882a593Smuzhiyun switch (mode) {
495*4882a593Smuzhiyun case 0x0:
496*4882a593Smuzhiyun return "bitblt";
497*4882a593Smuzhiyun case 0x1:
498*4882a593Smuzhiyun return "RGA_COLOR_PALETTE";
499*4882a593Smuzhiyun case 0x2:
500*4882a593Smuzhiyun return "RGA_COLOR_FILL";
501*4882a593Smuzhiyun case 0x3:
502*4882a593Smuzhiyun return "update_palette_table";
503*4882a593Smuzhiyun case 0x4:
504*4882a593Smuzhiyun return "update_patten_buff";
505*4882a593Smuzhiyun default:
506*4882a593Smuzhiyun return "UNF";
507*4882a593Smuzhiyun }
508*4882a593Smuzhiyun }
509*4882a593Smuzhiyun
rga_get_rotate_mode_str(uint8_t mode)510*4882a593Smuzhiyun const char *rga_get_rotate_mode_str(uint8_t mode)
511*4882a593Smuzhiyun {
512*4882a593Smuzhiyun switch (mode) {
513*4882a593Smuzhiyun case 0x0:
514*4882a593Smuzhiyun return "0";
515*4882a593Smuzhiyun case 0x1:
516*4882a593Smuzhiyun return "90 degree";
517*4882a593Smuzhiyun case 0x2:
518*4882a593Smuzhiyun return "180 degree";
519*4882a593Smuzhiyun case 0x3:
520*4882a593Smuzhiyun return "270 degree";
521*4882a593Smuzhiyun case 0x10:
522*4882a593Smuzhiyun return "xmirror";
523*4882a593Smuzhiyun case 0x20:
524*4882a593Smuzhiyun return "ymirror";
525*4882a593Smuzhiyun case 0x30:
526*4882a593Smuzhiyun return "xymirror";
527*4882a593Smuzhiyun default:
528*4882a593Smuzhiyun return "UNF";
529*4882a593Smuzhiyun }
530*4882a593Smuzhiyun }
531*4882a593Smuzhiyun
rga_get_blend_mode_str(enum rga_alpha_blend_mode mode)532*4882a593Smuzhiyun const char *rga_get_blend_mode_str(enum rga_alpha_blend_mode mode)
533*4882a593Smuzhiyun {
534*4882a593Smuzhiyun switch (mode) {
535*4882a593Smuzhiyun case RGA_ALPHA_NONE:
536*4882a593Smuzhiyun return "no blend";
537*4882a593Smuzhiyun
538*4882a593Smuzhiyun case RGA_ALPHA_BLEND_SRC:
539*4882a593Smuzhiyun return "src";
540*4882a593Smuzhiyun
541*4882a593Smuzhiyun case RGA_ALPHA_BLEND_DST:
542*4882a593Smuzhiyun return "dst";
543*4882a593Smuzhiyun
544*4882a593Smuzhiyun case RGA_ALPHA_BLEND_SRC_OVER:
545*4882a593Smuzhiyun return "src-over";
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun case RGA_ALPHA_BLEND_DST_OVER:
548*4882a593Smuzhiyun return "dst-over";
549*4882a593Smuzhiyun
550*4882a593Smuzhiyun case RGA_ALPHA_BLEND_SRC_IN:
551*4882a593Smuzhiyun return "src-in";
552*4882a593Smuzhiyun
553*4882a593Smuzhiyun case RGA_ALPHA_BLEND_DST_IN:
554*4882a593Smuzhiyun return "dst-in";
555*4882a593Smuzhiyun
556*4882a593Smuzhiyun case RGA_ALPHA_BLEND_SRC_OUT:
557*4882a593Smuzhiyun return "src-out";
558*4882a593Smuzhiyun
559*4882a593Smuzhiyun case RGA_ALPHA_BLEND_DST_OUT:
560*4882a593Smuzhiyun return "dst-out";
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun case RGA_ALPHA_BLEND_SRC_ATOP:
563*4882a593Smuzhiyun return "src-atop";
564*4882a593Smuzhiyun
565*4882a593Smuzhiyun case RGA_ALPHA_BLEND_DST_ATOP:
566*4882a593Smuzhiyun return "dst-atop";
567*4882a593Smuzhiyun
568*4882a593Smuzhiyun case RGA_ALPHA_BLEND_XOR:
569*4882a593Smuzhiyun return "xor";
570*4882a593Smuzhiyun
571*4882a593Smuzhiyun case RGA_ALPHA_BLEND_CLEAR:
572*4882a593Smuzhiyun return "clear";
573*4882a593Smuzhiyun
574*4882a593Smuzhiyun default:
575*4882a593Smuzhiyun return "check reg for more imformation";
576*4882a593Smuzhiyun }
577*4882a593Smuzhiyun }
578*4882a593Smuzhiyun
rga_get_memory_type_str(uint8_t type)579*4882a593Smuzhiyun const char *rga_get_memory_type_str(uint8_t type)
580*4882a593Smuzhiyun {
581*4882a593Smuzhiyun switch (type) {
582*4882a593Smuzhiyun case RGA_DMA_BUFFER:
583*4882a593Smuzhiyun return "dma_fd";
584*4882a593Smuzhiyun case RGA_VIRTUAL_ADDRESS:
585*4882a593Smuzhiyun return "virt_addr";
586*4882a593Smuzhiyun case RGA_PHYSICAL_ADDRESS:
587*4882a593Smuzhiyun return "phys_addr";
588*4882a593Smuzhiyun case RGA_DMA_BUFFER_PTR:
589*4882a593Smuzhiyun return "dma_buf_ptr";
590*4882a593Smuzhiyun default:
591*4882a593Smuzhiyun return "UNF";
592*4882a593Smuzhiyun }
593*4882a593Smuzhiyun }
594*4882a593Smuzhiyun
rga_get_mmu_type_str(enum rga_mmu mmu_type)595*4882a593Smuzhiyun const char *rga_get_mmu_type_str(enum rga_mmu mmu_type)
596*4882a593Smuzhiyun {
597*4882a593Smuzhiyun switch (mmu_type) {
598*4882a593Smuzhiyun case RGA_MMU:
599*4882a593Smuzhiyun return "RGA_MMU";
600*4882a593Smuzhiyun case RGA_IOMMU:
601*4882a593Smuzhiyun return "RK_IOMMU";
602*4882a593Smuzhiyun default:
603*4882a593Smuzhiyun return "NONE_MMU";
604*4882a593Smuzhiyun }
605*4882a593Smuzhiyun }
606*4882a593Smuzhiyun
rga_convert_addr(struct rga_img_info_t * img,bool before_vir_get_channel)607*4882a593Smuzhiyun void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel)
608*4882a593Smuzhiyun {
609*4882a593Smuzhiyun /*
610*4882a593Smuzhiyun * If it is not using dma fd, the virtual/phyical address is assigned
611*4882a593Smuzhiyun * to the address of the corresponding channel.
612*4882a593Smuzhiyun */
613*4882a593Smuzhiyun
614*4882a593Smuzhiyun //img->yrgb_addr = img->uv_addr;
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun /*
617*4882a593Smuzhiyun * if before_vir_get_channel is true, then convert addr by default
618*4882a593Smuzhiyun * when has iova (before_vir_get_channel is false),
619*4882a593Smuzhiyun * need to consider whether fbc case
620*4882a593Smuzhiyun */
621*4882a593Smuzhiyun if (img->rd_mode != RGA_FBC_MODE || before_vir_get_channel) {
622*4882a593Smuzhiyun img->uv_addr = img->yrgb_addr + (img->vir_w * img->vir_h);
623*4882a593Smuzhiyun
624*4882a593Smuzhiyun //warning: rga3 may need /2 for all
625*4882a593Smuzhiyun if (rga_is_yuv422p_format(img->format))
626*4882a593Smuzhiyun img->v_addr =
627*4882a593Smuzhiyun img->uv_addr + (img->vir_w * img->vir_h) / 2;
628*4882a593Smuzhiyun else
629*4882a593Smuzhiyun img->v_addr =
630*4882a593Smuzhiyun img->uv_addr + (img->vir_w * img->vir_h) / 4;
631*4882a593Smuzhiyun } else {
632*4882a593Smuzhiyun img->uv_addr = img->yrgb_addr;
633*4882a593Smuzhiyun img->v_addr = 0;
634*4882a593Smuzhiyun }
635*4882a593Smuzhiyun }
636*4882a593Smuzhiyun
rga_swap_pd_mode(struct rga_req * req_rga)637*4882a593Smuzhiyun void rga_swap_pd_mode(struct rga_req *req_rga)
638*4882a593Smuzhiyun {
639*4882a593Smuzhiyun if (((req_rga->alpha_rop_flag) & 1)) {
640*4882a593Smuzhiyun if ((req_rga->alpha_rop_flag >> 3) & 1) {
641*4882a593Smuzhiyun if (req_rga->PD_mode == 1)
642*4882a593Smuzhiyun req_rga->PD_mode = 2;
643*4882a593Smuzhiyun else if (req_rga->PD_mode == 2)
644*4882a593Smuzhiyun req_rga->PD_mode = 1;
645*4882a593Smuzhiyun else if (req_rga->PD_mode == 3)
646*4882a593Smuzhiyun req_rga->PD_mode = 4;
647*4882a593Smuzhiyun else if (req_rga->PD_mode == 4)
648*4882a593Smuzhiyun req_rga->PD_mode = 3;
649*4882a593Smuzhiyun }
650*4882a593Smuzhiyun }
651*4882a593Smuzhiyun }
652*4882a593Smuzhiyun
rga_image_size_cal(int w,int h,int format,int * yrgb_size,int * uv_size,int * v_size)653*4882a593Smuzhiyun int rga_image_size_cal(int w, int h, int format,
654*4882a593Smuzhiyun int *yrgb_size, int *uv_size, int *v_size)
655*4882a593Smuzhiyun {
656*4882a593Smuzhiyun int yrgb = 0;
657*4882a593Smuzhiyun int uv = 0;
658*4882a593Smuzhiyun int v = 0;
659*4882a593Smuzhiyun
660*4882a593Smuzhiyun switch (format) {
661*4882a593Smuzhiyun case RGA_FORMAT_RGBA_8888:
662*4882a593Smuzhiyun case RGA_FORMAT_RGBX_8888:
663*4882a593Smuzhiyun case RGA_FORMAT_BGRA_8888:
664*4882a593Smuzhiyun case RGA_FORMAT_BGRX_8888:
665*4882a593Smuzhiyun case RGA_FORMAT_ARGB_8888:
666*4882a593Smuzhiyun case RGA_FORMAT_XRGB_8888:
667*4882a593Smuzhiyun case RGA_FORMAT_ABGR_8888:
668*4882a593Smuzhiyun case RGA_FORMAT_XBGR_8888:
669*4882a593Smuzhiyun yrgb = w * h * 4;
670*4882a593Smuzhiyun break;
671*4882a593Smuzhiyun case RGA_FORMAT_RGB_888:
672*4882a593Smuzhiyun case RGA_FORMAT_BGR_888:
673*4882a593Smuzhiyun yrgb = w * h * 3;
674*4882a593Smuzhiyun break;
675*4882a593Smuzhiyun case RGA_FORMAT_RGB_565:
676*4882a593Smuzhiyun case RGA_FORMAT_RGBA_5551:
677*4882a593Smuzhiyun case RGA_FORMAT_RGBA_4444:
678*4882a593Smuzhiyun case RGA_FORMAT_BGR_565:
679*4882a593Smuzhiyun case RGA_FORMAT_BGRA_5551:
680*4882a593Smuzhiyun case RGA_FORMAT_BGRA_4444:
681*4882a593Smuzhiyun case RGA_FORMAT_ARGB_5551:
682*4882a593Smuzhiyun case RGA_FORMAT_ARGB_4444:
683*4882a593Smuzhiyun case RGA_FORMAT_ABGR_5551:
684*4882a593Smuzhiyun case RGA_FORMAT_ABGR_4444:
685*4882a593Smuzhiyun case RGA_FORMAT_YVYU_422:
686*4882a593Smuzhiyun case RGA_FORMAT_VYUY_422:
687*4882a593Smuzhiyun case RGA_FORMAT_YUYV_422:
688*4882a593Smuzhiyun case RGA_FORMAT_UYVY_422:
689*4882a593Smuzhiyun /* YUV 420 packed according to the arrangement of YUV422 packed. */
690*4882a593Smuzhiyun case RGA_FORMAT_YVYU_420:
691*4882a593Smuzhiyun case RGA_FORMAT_VYUY_420:
692*4882a593Smuzhiyun case RGA_FORMAT_YUYV_420:
693*4882a593Smuzhiyun case RGA_FORMAT_UYVY_420:
694*4882a593Smuzhiyun yrgb = w * h * 2;
695*4882a593Smuzhiyun break;
696*4882a593Smuzhiyun /* YUV FORMAT */
697*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP:
698*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP:
699*4882a593Smuzhiyun /* 10bit format stride is externally configured. */
700*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_SP_10B:
701*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_SP_10B:
702*4882a593Smuzhiyun yrgb = w * h;
703*4882a593Smuzhiyun uv = w * h;
704*4882a593Smuzhiyun break;
705*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_422_P:
706*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_422_P:
707*4882a593Smuzhiyun yrgb = w * h;
708*4882a593Smuzhiyun uv = (w * h) >> 1;
709*4882a593Smuzhiyun v = uv;
710*4882a593Smuzhiyun break;
711*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP:
712*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP:
713*4882a593Smuzhiyun /* 10bit format stride is externally configured. */
714*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_SP_10B:
715*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_SP_10B:
716*4882a593Smuzhiyun yrgb = w * h;
717*4882a593Smuzhiyun uv = (w * h) >> 1;
718*4882a593Smuzhiyun break;
719*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_420_P:
720*4882a593Smuzhiyun case RGA_FORMAT_YCrCb_420_P:
721*4882a593Smuzhiyun yrgb = w * h;
722*4882a593Smuzhiyun uv = (w * h) >> 2;
723*4882a593Smuzhiyun v = uv;
724*4882a593Smuzhiyun break;
725*4882a593Smuzhiyun case RGA_FORMAT_YCbCr_400:
726*4882a593Smuzhiyun yrgb = w * h;
727*4882a593Smuzhiyun break;
728*4882a593Smuzhiyun case RGA_FORMAT_Y4:
729*4882a593Smuzhiyun yrgb = (w * h) >> 1;
730*4882a593Smuzhiyun break;
731*4882a593Smuzhiyun default:
732*4882a593Smuzhiyun pr_err("Unsuport format [0x%x]\n", format);
733*4882a593Smuzhiyun return -EFAULT;
734*4882a593Smuzhiyun }
735*4882a593Smuzhiyun
736*4882a593Smuzhiyun if (yrgb_size != NULL)
737*4882a593Smuzhiyun *yrgb_size = yrgb;
738*4882a593Smuzhiyun if (uv_size != NULL)
739*4882a593Smuzhiyun *uv_size = uv;
740*4882a593Smuzhiyun if (v_size != NULL)
741*4882a593Smuzhiyun *v_size = v;
742*4882a593Smuzhiyun
743*4882a593Smuzhiyun return (yrgb + uv + v);
744*4882a593Smuzhiyun }
745*4882a593Smuzhiyun
rga_dump_memory_parm(struct rga_memory_parm * parm)746*4882a593Smuzhiyun void rga_dump_memory_parm(struct rga_memory_parm *parm)
747*4882a593Smuzhiyun {
748*4882a593Smuzhiyun pr_info("memory param: w = %d, h = %d, f = %s(0x%x), size = %d\n",
749*4882a593Smuzhiyun parm->width, parm->height, rga_get_format_name(parm->format),
750*4882a593Smuzhiyun parm->format, parm->size);
751*4882a593Smuzhiyun }
752*4882a593Smuzhiyun
rga_dump_external_buffer(struct rga_external_buffer * buffer)753*4882a593Smuzhiyun void rga_dump_external_buffer(struct rga_external_buffer *buffer)
754*4882a593Smuzhiyun {
755*4882a593Smuzhiyun pr_info("external: memory = 0x%lx, type = %s\n",
756*4882a593Smuzhiyun (unsigned long)buffer->memory, rga_get_memory_type_str(buffer->type));
757*4882a593Smuzhiyun rga_dump_memory_parm(&buffer->memory_parm);
758*4882a593Smuzhiyun }
759