mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
[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_BPSM (1 << 4)
|
||||
#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 */
|
||||
#define VNDMR2_VPS (1 << 30)
|
||||
@ -643,21 +643,26 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
|
||||
output_is_yuv = true;
|
||||
break;
|
||||
case V4L2_PIX_FMT_RGB555X:
|
||||
dmr = VNDMR_DTMD_ARGB1555;
|
||||
dmr = VNDMR_DTMD_ARGB;
|
||||
break;
|
||||
case V4L2_PIX_FMT_RGB565:
|
||||
dmr = 0;
|
||||
break;
|
||||
case V4L2_PIX_FMT_RGB32:
|
||||
if (priv->chip == RCAR_GEN2 || priv->chip == RCAR_H1 ||
|
||||
priv->chip == RCAR_E1) {
|
||||
dmr = VNDMR_EXRGB;
|
||||
break;
|
||||
}
|
||||
if (priv->chip != RCAR_GEN2 && priv->chip != RCAR_H1 &&
|
||||
priv->chip != RCAR_E1)
|
||||
goto e_format;
|
||||
|
||||
dmr = VNDMR_EXRGB;
|
||||
break;
|
||||
case V4L2_PIX_FMT_ARGB32:
|
||||
if (priv->chip != RCAR_GEN3)
|
||||
goto e_format;
|
||||
|
||||
dmr = VNDMR_EXRGB | VNDMR_DTMD_ARGB;
|
||||
break;
|
||||
default:
|
||||
dev_warn(icd->parent, "Invalid fourcc format (0x%x)\n",
|
||||
icd->current_fmt->host_fmt->fourcc);
|
||||
return -EINVAL;
|
||||
goto e_format;
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
||||
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)
|
||||
@ -1304,6 +1314,14 @@ static const struct soc_mbus_pixelfmt rcar_vin_formats[] = {
|
||||
.order = SOC_MBUS_ORDER_LE,
|
||||
.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,
|
||||
@ -1611,6 +1629,7 @@ static int rcar_vin_set_fmt(struct soc_camera_device *icd,
|
||||
case V4L2_PIX_FMT_RGB32:
|
||||
can_scale = priv->chip != RCAR_E1;
|
||||
break;
|
||||
case V4L2_PIX_FMT_ARGB32:
|
||||
case V4L2_PIX_FMT_UYVY:
|
||||
case V4L2_PIX_FMT_YUYV:
|
||||
case V4L2_PIX_FMT_RGB565:
|
||||
|
Loading…
Reference in New Issue
Block a user