|
@@ -335,6 +335,34 @@ static struct mx2_fmt_cfg mx27_emma_prp_table[] = {
|
|
|
.csicr1 = 0,
|
|
|
}
|
|
|
},
|
|
|
+ {
|
|
|
+ .in_fmt = V4L2_MBUS_FMT_UYVY8_2X8,
|
|
|
+ .out_fmt = V4L2_PIX_FMT_YUYV,
|
|
|
+ .cfg = {
|
|
|
+ .channel = 1,
|
|
|
+ .in_fmt = PRP_CNTL_DATA_IN_YUV422,
|
|
|
+ .out_fmt = PRP_CNTL_CH1_OUT_YUV422,
|
|
|
+ .src_pixel = 0x22000888, /* YUV422 (YUYV) */
|
|
|
+ .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */
|
|
|
+ .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR |
|
|
|
+ PRP_INTR_CH1FC | PRP_INTR_LBOVF,
|
|
|
+ .csicr1 = CSICR1_SWAP16_EN,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .in_fmt = V4L2_MBUS_FMT_YUYV8_2X8,
|
|
|
+ .out_fmt = V4L2_PIX_FMT_YUYV,
|
|
|
+ .cfg = {
|
|
|
+ .channel = 1,
|
|
|
+ .in_fmt = PRP_CNTL_DATA_IN_YUV422,
|
|
|
+ .out_fmt = PRP_CNTL_CH1_OUT_YUV422,
|
|
|
+ .src_pixel = 0x22000888, /* YUV422 (YUYV) */
|
|
|
+ .ch1_pixel = 0x62000888, /* YUV422 (YUYV) */
|
|
|
+ .irq_flags = PRP_INTR_RDERR | PRP_INTR_CH1WERR |
|
|
|
+ PRP_INTR_CH1FC | PRP_INTR_LBOVF,
|
|
|
+ .csicr1 = CSICR1_PACK_DIR,
|
|
|
+ }
|
|
|
+ },
|
|
|
{
|
|
|
.in_fmt = V4L2_MBUS_FMT_YUYV8_2X8,
|
|
|
.out_fmt = V4L2_PIX_FMT_YUV420,
|
|
@@ -1142,6 +1170,18 @@ static int mx2_camera_get_formats(struct soc_camera_device *icd,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (code == V4L2_MBUS_FMT_UYVY8_2X8) {
|
|
|
+ formats++;
|
|
|
+ if (xlate) {
|
|
|
+ xlate->host_fmt =
|
|
|
+ soc_mbus_get_fmtdesc(V4L2_MBUS_FMT_YUYV8_2X8);
|
|
|
+ xlate->code = code;
|
|
|
+ dev_dbg(dev, "Providing host format %s for sensor code %d\n",
|
|
|
+ xlate->host_fmt->name, code);
|
|
|
+ xlate++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/* Generic pass-trough */
|
|
|
formats++;
|
|
|
if (xlate) {
|