1 // SPDX-License-Identifier: GPL-2.0
4 #include "sun8i-formats.h"
5 #include "sun8i-rotate.h"
8 * Formats not included in array:
13 static const struct rotate_format rotate_formats[] = {
15 .fourcc = V4L2_PIX_FMT_ARGB32,
16 .hw_format = ROTATE_FORMAT_ARGB32,
21 .flags = ROTATE_FLAG_OUTPUT
23 .fourcc = V4L2_PIX_FMT_ABGR32,
24 .hw_format = ROTATE_FORMAT_ABGR32,
29 .flags = ROTATE_FLAG_OUTPUT
31 .fourcc = V4L2_PIX_FMT_RGBA32,
32 .hw_format = ROTATE_FORMAT_RGBA32,
37 .flags = ROTATE_FLAG_OUTPUT
39 .fourcc = V4L2_PIX_FMT_BGRA32,
40 .hw_format = ROTATE_FORMAT_BGRA32,
45 .flags = ROTATE_FLAG_OUTPUT
47 .fourcc = V4L2_PIX_FMT_XRGB32,
48 .hw_format = ROTATE_FORMAT_XRGB32,
53 .flags = ROTATE_FLAG_OUTPUT
55 .fourcc = V4L2_PIX_FMT_XBGR32,
56 .hw_format = ROTATE_FORMAT_XBGR32,
61 .flags = ROTATE_FLAG_OUTPUT
63 .fourcc = V4L2_PIX_FMT_RGB32,
64 .hw_format = ROTATE_FORMAT_RGBX32,
69 .flags = ROTATE_FLAG_OUTPUT
71 .fourcc = V4L2_PIX_FMT_BGR32,
72 .hw_format = ROTATE_FORMAT_BGRX32,
77 .flags = ROTATE_FLAG_OUTPUT
79 .fourcc = V4L2_PIX_FMT_RGB24,
80 .hw_format = ROTATE_FORMAT_RGB24,
85 .flags = ROTATE_FLAG_OUTPUT
87 .fourcc = V4L2_PIX_FMT_BGR24,
88 .hw_format = ROTATE_FORMAT_BGR24,
93 .flags = ROTATE_FLAG_OUTPUT
95 .fourcc = V4L2_PIX_FMT_RGB565,
96 .hw_format = ROTATE_FORMAT_RGB565,
101 .flags = ROTATE_FLAG_OUTPUT
103 .fourcc = V4L2_PIX_FMT_ARGB444,
104 .hw_format = ROTATE_FORMAT_ARGB4444,
109 .flags = ROTATE_FLAG_OUTPUT
111 .fourcc = V4L2_PIX_FMT_ABGR444,
112 .hw_format = ROTATE_FORMAT_ABGR4444,
117 .flags = ROTATE_FLAG_OUTPUT
119 .fourcc = V4L2_PIX_FMT_RGBA444,
120 .hw_format = ROTATE_FORMAT_RGBA4444,
125 .flags = ROTATE_FLAG_OUTPUT
127 .fourcc = V4L2_PIX_FMT_BGRA444,
128 .hw_format = ROTATE_FORMAT_BGRA4444,
133 .flags = ROTATE_FLAG_OUTPUT
135 .fourcc = V4L2_PIX_FMT_ARGB555,
136 .hw_format = ROTATE_FORMAT_ARGB1555,
141 .flags = ROTATE_FLAG_OUTPUT
143 .fourcc = V4L2_PIX_FMT_ABGR555,
144 .hw_format = ROTATE_FORMAT_ABGR1555,
149 .flags = ROTATE_FLAG_OUTPUT
151 .fourcc = V4L2_PIX_FMT_RGBA555,
152 .hw_format = ROTATE_FORMAT_RGBA5551,
157 .flags = ROTATE_FLAG_OUTPUT
159 .fourcc = V4L2_PIX_FMT_BGRA555,
160 .hw_format = ROTATE_FORMAT_BGRA5551,
165 .flags = ROTATE_FLAG_OUTPUT
167 .fourcc = V4L2_PIX_FMT_YVYU,
168 .hw_format = ROTATE_FORMAT_YVYU,
173 .flags = ROTATE_FLAG_YUV
175 .fourcc = V4L2_PIX_FMT_UYVY,
176 .hw_format = ROTATE_FORMAT_UYVY,
181 .flags = ROTATE_FLAG_YUV
183 .fourcc = V4L2_PIX_FMT_YUYV,
184 .hw_format = ROTATE_FORMAT_YUYV,
189 .flags = ROTATE_FLAG_YUV
191 .fourcc = V4L2_PIX_FMT_NV61,
192 .hw_format = ROTATE_FORMAT_NV61,
197 .flags = ROTATE_FLAG_YUV
199 .fourcc = V4L2_PIX_FMT_NV16,
200 .hw_format = ROTATE_FORMAT_NV16,
205 .flags = ROTATE_FLAG_YUV
207 .fourcc = V4L2_PIX_FMT_YUV422P,
208 .hw_format = ROTATE_FORMAT_YUV422P,
213 .flags = ROTATE_FLAG_YUV
215 .fourcc = V4L2_PIX_FMT_NV21,
216 .hw_format = ROTATE_FORMAT_NV21,
221 .flags = ROTATE_FLAG_YUV
223 .fourcc = V4L2_PIX_FMT_NV12,
224 .hw_format = ROTATE_FORMAT_NV12,
229 .flags = ROTATE_FLAG_YUV
231 .fourcc = V4L2_PIX_FMT_YUV420,
232 .hw_format = ROTATE_FORMAT_YUV420P,
237 .flags = ROTATE_FLAG_YUV | ROTATE_FLAG_OUTPUT
241 const struct rotate_format *rotate_find_format(u32 pixelformat)
245 for (i = 0; i < ARRAY_SIZE(rotate_formats); i++)
246 if (rotate_formats[i].fourcc == pixelformat)
247 return &rotate_formats[i];
252 int rotate_enum_fmt(struct v4l2_fmtdesc *f, bool dst)
258 for (i = 0; i < ARRAY_SIZE(rotate_formats); i++) {
259 /* not all formats can be used for capture buffers */
260 if (dst && !(rotate_formats[i].flags & ROTATE_FLAG_OUTPUT))
263 if (index == f->index) {
264 f->pixelformat = rotate_formats[i].fourcc;