aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform
diff options
context:
space:
mode:
authorJavier Martin <javier.martin@vista-silicon.com>2012-07-12 04:56:13 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-15 16:18:28 -0400
commit1cb7cf28c0690852cfe5800e037fa0db9fba2432 (patch)
treefa35ca75649052c2bfa9c9360c6bdde87df56410 /drivers/media/platform
parent561d5d78cb03fe08519a166594820c5a70f3931c (diff)
[media] media: mx2_camera: Add YUYV output format
Add explicit conversions from UYVY and YUYV to YUYV so that csicr1 configuration can be set properly for each format. Signed-off-by: Javier Martin <javier.martin@vista-silicon.com> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r--drivers/media/platform/mx2_camera.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/media/platform/mx2_camera.c b/drivers/media/platform/mx2_camera.c
index 2c3ec94769a5..83eeaa69d8f7 100644
--- a/drivers/media/platform/mx2_camera.c
+++ b/drivers/media/platform/mx2_camera.c
@@ -336,6 +336,34 @@ static struct mx2_fmt_cfg mx27_emma_prp_table[] = {
336 } 336 }
337 }, 337 },
338 { 338 {
339 .in_fmt = V4L2_MBUS_FMT_UYVY8_2X8,
340 .out_fmt = V4L2_PIX_FMT_YUYV,
341 .cfg = {
342 .channel = 1,
343 .in_fmt = PRP_CNTL_DATA_IN_YUV422,
344 .out_fmt = PRP_CNTL_CH1_OUT_YUV422,
345 .src_pixel = 0x22000888, /* YUV422 (YUYV) */
346 .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */
347 .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR |
348 PRP_INTR_CH1FC | PRP_INTR_LBOVF,
349 .csicr1 = CSICR1_SWAP16_EN,
350 }
351 },
352 {
353 .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8,
354 .out_fmt = V4L2_PIX_FMT_YUYV,
355 .cfg = {
356 .channel = 1,
357 .in_fmt = PRP_CNTL_DATA_IN_YUV422,
358 .out_fmt = PRP_CNTL_CH1_OUT_YUV422,
359 .src_pixel = 0x22000888, /* YUV422 (YUYV) */
360 .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */
361 .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR |
362 PRP_INTR_CH1FC | PRP_INTR_LBOVF,
363 .csicr1 = CSICR1_PACK_DIR,
364 }
365 },
366 {
339 .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8, 367 .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8,
340 .out_fmt = V4L2_PIX_FMT_YUV420, 368 .out_fmt = V4L2_PIX_FMT_YUV420,
341 .cfg = { 369 .cfg = {
@@ -1142,6 +1170,18 @@ static int mx2_camera_get_formats(struct soc_camera_device *icd,
1142 } 1170 }
1143 } 1171 }
1144 1172
1173 if (code == V4L2_MBUS_FMT_UYVY8_2X8) {
1174 formats++;
1175 if (xlate) {
1176 xlate->host_fmt =
1177 soc_mbus_get_fmtdesc(V4L2_MBUS_FMT_YUYV8_2X8);
1178 xlate->code = code;
1179 dev_dbg(dev, "Providing host format %s for sensor code %d\n",
1180 xlate->host_fmt->name, code);
1181 xlate++;
1182 }
1183 }
1184
1145 /* Generic pass-trough */ 1185 /* Generic pass-trough */
1146 formats++; 1186 formats++;
1147 if (xlate) { 1187 if (xlate) {