[media] soc_camera: rcar_vin: Add ARGB8888 caputre format support
This patch adds ARGB8888 capture format support for R-Car Gen3. Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com> Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
5d8d8db851
commit
c54ae8fea6
|
@ -124,7 +124,7 @@
|
||||||
#define VNDMR_EXRGB (1 << 8)
|
#define VNDMR_EXRGB (1 << 8)
|
||||||
#define VNDMR_BPSM (1 << 4)
|
#define VNDMR_BPSM (1 << 4)
|
||||||
#define VNDMR_DTMD_YCSEP (1 << 1)
|
#define VNDMR_DTMD_YCSEP (1 << 1)
|
||||||
#define VNDMR_DTMD_ARGB1555 (1 << 0)
|
#define VNDMR_DTMD_ARGB (1 << 0)
|
||||||
|
|
||||||
/* Video n Data Mode Register 2 bits */
|
/* Video n Data Mode Register 2 bits */
|
||||||
#define VNDMR2_VPS (1 << 30)
|
#define VNDMR2_VPS (1 << 30)
|
||||||
|
@ -643,21 +643,26 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
|
||||||
output_is_yuv = true;
|
output_is_yuv = true;
|
||||||
break;
|
break;
|
||||||
case V4L2_PIX_FMT_RGB555X:
|
case V4L2_PIX_FMT_RGB555X:
|
||||||
dmr = VNDMR_DTMD_ARGB1555;
|
dmr = VNDMR_DTMD_ARGB;
|
||||||
break;
|
break;
|
||||||
case V4L2_PIX_FMT_RGB565:
|
case V4L2_PIX_FMT_RGB565:
|
||||||
dmr = 0;
|
dmr = 0;
|
||||||
break;
|
break;
|
||||||
case V4L2_PIX_FMT_RGB32:
|
case V4L2_PIX_FMT_RGB32:
|
||||||
if (priv->chip == RCAR_GEN2 || priv->chip == RCAR_H1 ||
|
if (priv->chip != RCAR_GEN2 && priv->chip != RCAR_H1 &&
|
||||||
priv->chip == RCAR_E1) {
|
priv->chip != RCAR_E1)
|
||||||
|
goto e_format;
|
||||||
|
|
||||||
dmr = VNDMR_EXRGB;
|
dmr = VNDMR_EXRGB;
|
||||||
break;
|
break;
|
||||||
}
|
case V4L2_PIX_FMT_ARGB32:
|
||||||
|
if (priv->chip != RCAR_GEN3)
|
||||||
|
goto e_format;
|
||||||
|
|
||||||
|
dmr = VNDMR_EXRGB | VNDMR_DTMD_ARGB;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dev_warn(icd->parent, "Invalid fourcc format (0x%x)\n",
|
goto e_format;
|
||||||
icd->current_fmt->host_fmt->fourcc);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Always update on field change */
|
/* Always update on field change */
|
||||||
|
@ -679,6 +684,11 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
|
||||||
iowrite32(vnmc | VNMC_ME, priv->base + VNMC_REG);
|
iowrite32(vnmc | VNMC_ME, priv->base + VNMC_REG);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
e_format:
|
||||||
|
dev_warn(icd->parent, "Invalid fourcc format (0x%x)\n",
|
||||||
|
icd->current_fmt->host_fmt->fourcc);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rcar_vin_capture(struct rcar_vin_priv *priv)
|
static void rcar_vin_capture(struct rcar_vin_priv *priv)
|
||||||
|
@ -1304,6 +1314,14 @@ static const struct soc_mbus_pixelfmt rcar_vin_formats[] = {
|
||||||
.order = SOC_MBUS_ORDER_LE,
|
.order = SOC_MBUS_ORDER_LE,
|
||||||
.layout = SOC_MBUS_LAYOUT_PACKED,
|
.layout = SOC_MBUS_LAYOUT_PACKED,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.fourcc = V4L2_PIX_FMT_ARGB32,
|
||||||
|
.name = "ARGB8888",
|
||||||
|
.bits_per_sample = 32,
|
||||||
|
.packing = SOC_MBUS_PACKING_NONE,
|
||||||
|
.order = SOC_MBUS_ORDER_LE,
|
||||||
|
.layout = SOC_MBUS_LAYOUT_PACKED,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int rcar_vin_get_formats(struct soc_camera_device *icd, unsigned int idx,
|
static int rcar_vin_get_formats(struct soc_camera_device *icd, unsigned int idx,
|
||||||
|
@ -1611,6 +1629,7 @@ static int rcar_vin_set_fmt(struct soc_camera_device *icd,
|
||||||
case V4L2_PIX_FMT_RGB32:
|
case V4L2_PIX_FMT_RGB32:
|
||||||
can_scale = priv->chip != RCAR_E1;
|
can_scale = priv->chip != RCAR_E1;
|
||||||
break;
|
break;
|
||||||
|
case V4L2_PIX_FMT_ARGB32:
|
||||||
case V4L2_PIX_FMT_UYVY:
|
case V4L2_PIX_FMT_UYVY:
|
||||||
case V4L2_PIX_FMT_YUYV:
|
case V4L2_PIX_FMT_YUYV:
|
||||||
case V4L2_PIX_FMT_RGB565:
|
case V4L2_PIX_FMT_RGB565:
|
||||||
|
|
Loading…
Reference in New Issue