diff options
author | Javier Martin <javier.martin@vista-silicon.com> | 2012-07-12 04:56:13 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-15 16:18:28 -0400 |
commit | 1cb7cf28c0690852cfe5800e037fa0db9fba2432 (patch) | |
tree | fa35ca75649052c2bfa9c9360c6bdde87df56410 /drivers/media/platform | |
parent | 561d5d78cb03fe08519a166594820c5a70f3931c (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.c | 40 |
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) { |