aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/soc_mediabus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/soc_mediabus.c')
-rw-r--r--drivers/media/video/soc_mediabus.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/drivers/media/video/soc_mediabus.c b/drivers/media/video/soc_mediabus.c
index cf7f2194ded4..89dce097a827 100644
--- a/drivers/media/video/soc_mediabus.c
+++ b/drivers/media/video/soc_mediabus.c
@@ -24,6 +24,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
24 .bits_per_sample = 8, 24 .bits_per_sample = 8,
25 .packing = SOC_MBUS_PACKING_2X8_PADHI, 25 .packing = SOC_MBUS_PACKING_2X8_PADHI,
26 .order = SOC_MBUS_ORDER_LE, 26 .order = SOC_MBUS_ORDER_LE,
27 .layout = SOC_MBUS_LAYOUT_PACKED,
27 }, 28 },
28}, { 29}, {
29 .code = V4L2_MBUS_FMT_YVYU8_2X8, 30 .code = V4L2_MBUS_FMT_YVYU8_2X8,
@@ -33,6 +34,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
33 .bits_per_sample = 8, 34 .bits_per_sample = 8,
34 .packing = SOC_MBUS_PACKING_2X8_PADHI, 35 .packing = SOC_MBUS_PACKING_2X8_PADHI,
35 .order = SOC_MBUS_ORDER_LE, 36 .order = SOC_MBUS_ORDER_LE,
37 .layout = SOC_MBUS_LAYOUT_PACKED,
36 }, 38 },
37}, { 39}, {
38 .code = V4L2_MBUS_FMT_UYVY8_2X8, 40 .code = V4L2_MBUS_FMT_UYVY8_2X8,
@@ -42,6 +44,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
42 .bits_per_sample = 8, 44 .bits_per_sample = 8,
43 .packing = SOC_MBUS_PACKING_2X8_PADHI, 45 .packing = SOC_MBUS_PACKING_2X8_PADHI,
44 .order = SOC_MBUS_ORDER_LE, 46 .order = SOC_MBUS_ORDER_LE,
47 .layout = SOC_MBUS_LAYOUT_PACKED,
45 }, 48 },
46}, { 49}, {
47 .code = V4L2_MBUS_FMT_VYUY8_2X8, 50 .code = V4L2_MBUS_FMT_VYUY8_2X8,
@@ -51,6 +54,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
51 .bits_per_sample = 8, 54 .bits_per_sample = 8,
52 .packing = SOC_MBUS_PACKING_2X8_PADHI, 55 .packing = SOC_MBUS_PACKING_2X8_PADHI,
53 .order = SOC_MBUS_ORDER_LE, 56 .order = SOC_MBUS_ORDER_LE,
57 .layout = SOC_MBUS_LAYOUT_PACKED,
54 }, 58 },
55}, { 59}, {
56 .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, 60 .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE,
@@ -60,6 +64,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
60 .bits_per_sample = 8, 64 .bits_per_sample = 8,
61 .packing = SOC_MBUS_PACKING_2X8_PADHI, 65 .packing = SOC_MBUS_PACKING_2X8_PADHI,
62 .order = SOC_MBUS_ORDER_LE, 66 .order = SOC_MBUS_ORDER_LE,
67 .layout = SOC_MBUS_LAYOUT_PACKED,
63 }, 68 },
64}, { 69}, {
65 .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE, 70 .code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE,
@@ -69,6 +74,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
69 .bits_per_sample = 8, 74 .bits_per_sample = 8,
70 .packing = SOC_MBUS_PACKING_2X8_PADHI, 75 .packing = SOC_MBUS_PACKING_2X8_PADHI,
71 .order = SOC_MBUS_ORDER_LE, 76 .order = SOC_MBUS_ORDER_LE,
77 .layout = SOC_MBUS_LAYOUT_PACKED,
72 }, 78 },
73}, { 79}, {
74 .code = V4L2_MBUS_FMT_RGB565_2X8_LE, 80 .code = V4L2_MBUS_FMT_RGB565_2X8_LE,
@@ -78,6 +84,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
78 .bits_per_sample = 8, 84 .bits_per_sample = 8,
79 .packing = SOC_MBUS_PACKING_2X8_PADHI, 85 .packing = SOC_MBUS_PACKING_2X8_PADHI,
80 .order = SOC_MBUS_ORDER_LE, 86 .order = SOC_MBUS_ORDER_LE,
87 .layout = SOC_MBUS_LAYOUT_PACKED,
81 }, 88 },
82}, { 89}, {
83 .code = V4L2_MBUS_FMT_RGB565_2X8_BE, 90 .code = V4L2_MBUS_FMT_RGB565_2X8_BE,
@@ -87,6 +94,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
87 .bits_per_sample = 8, 94 .bits_per_sample = 8,
88 .packing = SOC_MBUS_PACKING_2X8_PADHI, 95 .packing = SOC_MBUS_PACKING_2X8_PADHI,
89 .order = SOC_MBUS_ORDER_LE, 96 .order = SOC_MBUS_ORDER_LE,
97 .layout = SOC_MBUS_LAYOUT_PACKED,
90 }, 98 },
91}, { 99}, {
92 .code = V4L2_MBUS_FMT_SBGGR8_1X8, 100 .code = V4L2_MBUS_FMT_SBGGR8_1X8,
@@ -96,6 +104,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
96 .bits_per_sample = 8, 104 .bits_per_sample = 8,
97 .packing = SOC_MBUS_PACKING_NONE, 105 .packing = SOC_MBUS_PACKING_NONE,
98 .order = SOC_MBUS_ORDER_LE, 106 .order = SOC_MBUS_ORDER_LE,
107 .layout = SOC_MBUS_LAYOUT_PACKED,
99 }, 108 },
100}, { 109}, {
101 .code = V4L2_MBUS_FMT_SBGGR10_1X10, 110 .code = V4L2_MBUS_FMT_SBGGR10_1X10,
@@ -105,6 +114,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
105 .bits_per_sample = 10, 114 .bits_per_sample = 10,
106 .packing = SOC_MBUS_PACKING_EXTEND16, 115 .packing = SOC_MBUS_PACKING_EXTEND16,
107 .order = SOC_MBUS_ORDER_LE, 116 .order = SOC_MBUS_ORDER_LE,
117 .layout = SOC_MBUS_LAYOUT_PACKED,
108 }, 118 },
109}, { 119}, {
110 .code = V4L2_MBUS_FMT_Y8_1X8, 120 .code = V4L2_MBUS_FMT_Y8_1X8,
@@ -114,6 +124,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
114 .bits_per_sample = 8, 124 .bits_per_sample = 8,
115 .packing = SOC_MBUS_PACKING_NONE, 125 .packing = SOC_MBUS_PACKING_NONE,
116 .order = SOC_MBUS_ORDER_LE, 126 .order = SOC_MBUS_ORDER_LE,
127 .layout = SOC_MBUS_LAYOUT_PACKED,
117 }, 128 },
118}, { 129}, {
119 .code = V4L2_MBUS_FMT_Y10_1X10, 130 .code = V4L2_MBUS_FMT_Y10_1X10,
@@ -123,6 +134,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
123 .bits_per_sample = 10, 134 .bits_per_sample = 10,
124 .packing = SOC_MBUS_PACKING_EXTEND16, 135 .packing = SOC_MBUS_PACKING_EXTEND16,
125 .order = SOC_MBUS_ORDER_LE, 136 .order = SOC_MBUS_ORDER_LE,
137 .layout = SOC_MBUS_LAYOUT_PACKED,
126 }, 138 },
127}, { 139}, {
128 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE, 140 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE,
@@ -132,6 +144,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
132 .bits_per_sample = 8, 144 .bits_per_sample = 8,
133 .packing = SOC_MBUS_PACKING_2X8_PADHI, 145 .packing = SOC_MBUS_PACKING_2X8_PADHI,
134 .order = SOC_MBUS_ORDER_LE, 146 .order = SOC_MBUS_ORDER_LE,
147 .layout = SOC_MBUS_LAYOUT_PACKED,
135 }, 148 },
136}, { 149}, {
137 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE, 150 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE,
@@ -141,6 +154,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
141 .bits_per_sample = 8, 154 .bits_per_sample = 8,
142 .packing = SOC_MBUS_PACKING_2X8_PADLO, 155 .packing = SOC_MBUS_PACKING_2X8_PADLO,
143 .order = SOC_MBUS_ORDER_LE, 156 .order = SOC_MBUS_ORDER_LE,
157 .layout = SOC_MBUS_LAYOUT_PACKED,
144 }, 158 },
145}, { 159}, {
146 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE, 160 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE,
@@ -150,6 +164,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
150 .bits_per_sample = 8, 164 .bits_per_sample = 8,
151 .packing = SOC_MBUS_PACKING_2X8_PADHI, 165 .packing = SOC_MBUS_PACKING_2X8_PADHI,
152 .order = SOC_MBUS_ORDER_BE, 166 .order = SOC_MBUS_ORDER_BE,
167 .layout = SOC_MBUS_LAYOUT_PACKED,
153 }, 168 },
154}, { 169}, {
155 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE, 170 .code = V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE,
@@ -159,6 +174,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
159 .bits_per_sample = 8, 174 .bits_per_sample = 8,
160 .packing = SOC_MBUS_PACKING_2X8_PADLO, 175 .packing = SOC_MBUS_PACKING_2X8_PADLO,
161 .order = SOC_MBUS_ORDER_BE, 176 .order = SOC_MBUS_ORDER_BE,
177 .layout = SOC_MBUS_LAYOUT_PACKED,
162 }, 178 },
163}, { 179}, {
164 .code = V4L2_MBUS_FMT_JPEG_1X8, 180 .code = V4L2_MBUS_FMT_JPEG_1X8,
@@ -168,6 +184,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
168 .bits_per_sample = 8, 184 .bits_per_sample = 8,
169 .packing = SOC_MBUS_PACKING_VARIABLE, 185 .packing = SOC_MBUS_PACKING_VARIABLE,
170 .order = SOC_MBUS_ORDER_LE, 186 .order = SOC_MBUS_ORDER_LE,
187 .layout = SOC_MBUS_LAYOUT_PACKED,
171 }, 188 },
172}, { 189}, {
173 .code = V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE, 190 .code = V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE,
@@ -177,6 +194,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
177 .bits_per_sample = 8, 194 .bits_per_sample = 8,
178 .packing = SOC_MBUS_PACKING_2X8_PADHI, 195 .packing = SOC_MBUS_PACKING_2X8_PADHI,
179 .order = SOC_MBUS_ORDER_BE, 196 .order = SOC_MBUS_ORDER_BE,
197 .layout = SOC_MBUS_LAYOUT_PACKED,
180 }, 198 },
181}, { 199}, {
182 .code = V4L2_MBUS_FMT_YUYV8_1_5X8, 200 .code = V4L2_MBUS_FMT_YUYV8_1_5X8,
@@ -186,6 +204,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
186 .bits_per_sample = 8, 204 .bits_per_sample = 8,
187 .packing = SOC_MBUS_PACKING_1_5X8, 205 .packing = SOC_MBUS_PACKING_1_5X8,
188 .order = SOC_MBUS_ORDER_LE, 206 .order = SOC_MBUS_ORDER_LE,
207 .layout = SOC_MBUS_LAYOUT_PACKED,
189 }, 208 },
190}, { 209}, {
191 .code = V4L2_MBUS_FMT_YVYU8_1_5X8, 210 .code = V4L2_MBUS_FMT_YVYU8_1_5X8,
@@ -195,6 +214,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
195 .bits_per_sample = 8, 214 .bits_per_sample = 8,
196 .packing = SOC_MBUS_PACKING_1_5X8, 215 .packing = SOC_MBUS_PACKING_1_5X8,
197 .order = SOC_MBUS_ORDER_LE, 216 .order = SOC_MBUS_ORDER_LE,
217 .layout = SOC_MBUS_LAYOUT_PACKED,
198 }, 218 },
199}, { 219}, {
200 .code = V4L2_MBUS_FMT_UYVY8_1X16, 220 .code = V4L2_MBUS_FMT_UYVY8_1X16,
@@ -204,6 +224,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
204 .bits_per_sample = 16, 224 .bits_per_sample = 16,
205 .packing = SOC_MBUS_PACKING_EXTEND16, 225 .packing = SOC_MBUS_PACKING_EXTEND16,
206 .order = SOC_MBUS_ORDER_LE, 226 .order = SOC_MBUS_ORDER_LE,
227 .layout = SOC_MBUS_LAYOUT_PACKED,
207 }, 228 },
208}, { 229}, {
209 .code = V4L2_MBUS_FMT_VYUY8_1X16, 230 .code = V4L2_MBUS_FMT_VYUY8_1X16,
@@ -213,6 +234,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
213 .bits_per_sample = 16, 234 .bits_per_sample = 16,
214 .packing = SOC_MBUS_PACKING_EXTEND16, 235 .packing = SOC_MBUS_PACKING_EXTEND16,
215 .order = SOC_MBUS_ORDER_LE, 236 .order = SOC_MBUS_ORDER_LE,
237 .layout = SOC_MBUS_LAYOUT_PACKED,
216 }, 238 },
217}, { 239}, {
218 .code = V4L2_MBUS_FMT_YUYV8_1X16, 240 .code = V4L2_MBUS_FMT_YUYV8_1X16,
@@ -222,6 +244,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
222 .bits_per_sample = 16, 244 .bits_per_sample = 16,
223 .packing = SOC_MBUS_PACKING_EXTEND16, 245 .packing = SOC_MBUS_PACKING_EXTEND16,
224 .order = SOC_MBUS_ORDER_LE, 246 .order = SOC_MBUS_ORDER_LE,
247 .layout = SOC_MBUS_LAYOUT_PACKED,
225 }, 248 },
226}, { 249}, {
227 .code = V4L2_MBUS_FMT_YVYU8_1X16, 250 .code = V4L2_MBUS_FMT_YVYU8_1X16,
@@ -231,6 +254,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
231 .bits_per_sample = 16, 254 .bits_per_sample = 16,
232 .packing = SOC_MBUS_PACKING_EXTEND16, 255 .packing = SOC_MBUS_PACKING_EXTEND16,
233 .order = SOC_MBUS_ORDER_LE, 256 .order = SOC_MBUS_ORDER_LE,
257 .layout = SOC_MBUS_LAYOUT_PACKED,
234 }, 258 },
235}, { 259}, {
236 .code = V4L2_MBUS_FMT_SGRBG8_1X8, 260 .code = V4L2_MBUS_FMT_SGRBG8_1X8,
@@ -240,6 +264,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
240 .bits_per_sample = 8, 264 .bits_per_sample = 8,
241 .packing = SOC_MBUS_PACKING_NONE, 265 .packing = SOC_MBUS_PACKING_NONE,
242 .order = SOC_MBUS_ORDER_LE, 266 .order = SOC_MBUS_ORDER_LE,
267 .layout = SOC_MBUS_LAYOUT_PACKED,
243 }, 268 },
244}, { 269}, {
245 .code = V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8, 270 .code = V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8,
@@ -249,6 +274,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
249 .bits_per_sample = 8, 274 .bits_per_sample = 8,
250 .packing = SOC_MBUS_PACKING_NONE, 275 .packing = SOC_MBUS_PACKING_NONE,
251 .order = SOC_MBUS_ORDER_LE, 276 .order = SOC_MBUS_ORDER_LE,
277 .layout = SOC_MBUS_LAYOUT_PACKED,
252 }, 278 },
253}, { 279}, {
254 .code = V4L2_MBUS_FMT_SGBRG10_1X10, 280 .code = V4L2_MBUS_FMT_SGBRG10_1X10,
@@ -258,6 +284,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
258 .bits_per_sample = 10, 284 .bits_per_sample = 10,
259 .packing = SOC_MBUS_PACKING_EXTEND16, 285 .packing = SOC_MBUS_PACKING_EXTEND16,
260 .order = SOC_MBUS_ORDER_LE, 286 .order = SOC_MBUS_ORDER_LE,
287 .layout = SOC_MBUS_LAYOUT_PACKED,
261 }, 288 },
262}, { 289}, {
263 .code = V4L2_MBUS_FMT_SGRBG10_1X10, 290 .code = V4L2_MBUS_FMT_SGRBG10_1X10,
@@ -267,6 +294,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
267 .bits_per_sample = 10, 294 .bits_per_sample = 10,
268 .packing = SOC_MBUS_PACKING_EXTEND16, 295 .packing = SOC_MBUS_PACKING_EXTEND16,
269 .order = SOC_MBUS_ORDER_LE, 296 .order = SOC_MBUS_ORDER_LE,
297 .layout = SOC_MBUS_LAYOUT_PACKED,
270 }, 298 },
271}, { 299}, {
272 .code = V4L2_MBUS_FMT_SRGGB10_1X10, 300 .code = V4L2_MBUS_FMT_SRGGB10_1X10,
@@ -276,6 +304,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
276 .bits_per_sample = 10, 304 .bits_per_sample = 10,
277 .packing = SOC_MBUS_PACKING_EXTEND16, 305 .packing = SOC_MBUS_PACKING_EXTEND16,
278 .order = SOC_MBUS_ORDER_LE, 306 .order = SOC_MBUS_ORDER_LE,
307 .layout = SOC_MBUS_LAYOUT_PACKED,
279 }, 308 },
280}, { 309}, {
281 .code = V4L2_MBUS_FMT_SBGGR12_1X12, 310 .code = V4L2_MBUS_FMT_SBGGR12_1X12,
@@ -285,6 +314,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
285 .bits_per_sample = 12, 314 .bits_per_sample = 12,
286 .packing = SOC_MBUS_PACKING_EXTEND16, 315 .packing = SOC_MBUS_PACKING_EXTEND16,
287 .order = SOC_MBUS_ORDER_LE, 316 .order = SOC_MBUS_ORDER_LE,
317 .layout = SOC_MBUS_LAYOUT_PACKED,
288 }, 318 },
289}, { 319}, {
290 .code = V4L2_MBUS_FMT_SGBRG12_1X12, 320 .code = V4L2_MBUS_FMT_SGBRG12_1X12,
@@ -294,6 +324,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
294 .bits_per_sample = 12, 324 .bits_per_sample = 12,
295 .packing = SOC_MBUS_PACKING_EXTEND16, 325 .packing = SOC_MBUS_PACKING_EXTEND16,
296 .order = SOC_MBUS_ORDER_LE, 326 .order = SOC_MBUS_ORDER_LE,
327 .layout = SOC_MBUS_LAYOUT_PACKED,
297 }, 328 },
298}, { 329}, {
299 .code = V4L2_MBUS_FMT_SGRBG12_1X12, 330 .code = V4L2_MBUS_FMT_SGRBG12_1X12,
@@ -303,6 +334,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
303 .bits_per_sample = 12, 334 .bits_per_sample = 12,
304 .packing = SOC_MBUS_PACKING_EXTEND16, 335 .packing = SOC_MBUS_PACKING_EXTEND16,
305 .order = SOC_MBUS_ORDER_LE, 336 .order = SOC_MBUS_ORDER_LE,
337 .layout = SOC_MBUS_LAYOUT_PACKED,
306 }, 338 },
307}, { 339}, {
308 .code = V4L2_MBUS_FMT_SRGGB12_1X12, 340 .code = V4L2_MBUS_FMT_SRGGB12_1X12,
@@ -312,6 +344,7 @@ static const struct soc_mbus_lookup mbus_fmt[] = {
312 .bits_per_sample = 12, 344 .bits_per_sample = 12,
313 .packing = SOC_MBUS_PACKING_EXTEND16, 345 .packing = SOC_MBUS_PACKING_EXTEND16,
314 .order = SOC_MBUS_ORDER_LE, 346 .order = SOC_MBUS_ORDER_LE,
347 .layout = SOC_MBUS_LAYOUT_PACKED,
315 }, 348 },
316}, 349},
317}; 350};
@@ -345,6 +378,9 @@ EXPORT_SYMBOL(soc_mbus_samples_per_pixel);
345 378
346s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf) 379s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf)
347{ 380{
381 if (mf->layout != SOC_MBUS_LAYOUT_PACKED)
382 return width * mf->bits_per_sample / 8;
383
348 switch (mf->packing) { 384 switch (mf->packing) {
349 case SOC_MBUS_PACKING_NONE: 385 case SOC_MBUS_PACKING_NONE:
350 return width * mf->bits_per_sample / 8; 386 return width * mf->bits_per_sample / 8;
@@ -361,6 +397,24 @@ s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf)
361} 397}
362EXPORT_SYMBOL(soc_mbus_bytes_per_line); 398EXPORT_SYMBOL(soc_mbus_bytes_per_line);
363 399
400s32 soc_mbus_image_size(const struct soc_mbus_pixelfmt *mf,
401 u32 bytes_per_line, u32 height)
402{
403 if (mf->layout == SOC_MBUS_LAYOUT_PACKED)
404 return bytes_per_line * height;
405
406 switch (mf->packing) {
407 case SOC_MBUS_PACKING_2X8_PADHI:
408 case SOC_MBUS_PACKING_2X8_PADLO:
409 return bytes_per_line * height * 2;
410 case SOC_MBUS_PACKING_1_5X8:
411 return bytes_per_line * height * 3 / 2;
412 default:
413 return -EINVAL;
414 }
415}
416EXPORT_SYMBOL(soc_mbus_image_size);
417
364const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc( 418const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc(
365 enum v4l2_mbus_pixelcode code, 419 enum v4l2_mbus_pixelcode code,
366 const struct soc_mbus_lookup *lookup, 420 const struct soc_mbus_lookup *lookup,