mirror of https://gitee.com/openkylin/linux.git
[media] V4L: omap1-camera: fix huge lookup array
Since V4L2_MBUS_FMT_* codes have become large and sparse, they cannot be used as array indices anymore. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
93f116d595
commit
e9ceeced6f
|
@ -990,63 +990,80 @@ static void omap1_cam_remove_device(struct soc_camera_device *icd)
|
|||
}
|
||||
|
||||
/* Duplicate standard formats based on host capability of byte swapping */
|
||||
static const struct soc_mbus_pixelfmt omap1_cam_formats[] = {
|
||||
[V4L2_MBUS_FMT_UYVY8_2X8] = {
|
||||
static const struct soc_mbus_lookup omap1_cam_formats[] = {
|
||||
{
|
||||
.code = V4L2_MBUS_FMT_UYVY8_2X8,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_YUYV,
|
||||
.name = "YUYV",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_VYUY8_2X8] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_VYUY8_2X8,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_YVYU,
|
||||
.name = "YVYU",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_YUYV8_2X8] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_YUYV8_2X8,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_UYVY,
|
||||
.name = "UYVY",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_YVYU8_2X8] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_YVYU8_2X8,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_VYUY,
|
||||
.name = "VYUY",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_RGB555,
|
||||
.name = "RGB555",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_RGB555X,
|
||||
.name = "RGB555X",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_RGB565_2X8_BE] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_RGB565_2X8_BE,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_RGB565,
|
||||
.name = "RGB565",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
[V4L2_MBUS_FMT_RGB565_2X8_LE] = {
|
||||
}, {
|
||||
.code = V4L2_MBUS_FMT_RGB565_2X8_LE,
|
||||
.fmt = {
|
||||
.fourcc = V4L2_PIX_FMT_RGB565X,
|
||||
.name = "RGB565X",
|
||||
.bits_per_sample = 8,
|
||||
.packing = SOC_MBUS_PACKING_2X8_PADHI,
|
||||
.order = SOC_MBUS_ORDER_BE,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static int omap1_cam_get_formats(struct soc_camera_device *icd,
|
||||
|
@ -1085,12 +1102,14 @@ static int omap1_cam_get_formats(struct soc_camera_device *icd,
|
|||
case V4L2_MBUS_FMT_RGB565_2X8_LE:
|
||||
formats++;
|
||||
if (xlate) {
|
||||
xlate->host_fmt = &omap1_cam_formats[code];
|
||||
xlate->host_fmt = soc_mbus_find_fmtdesc(code,
|
||||
omap1_cam_formats,
|
||||
ARRAY_SIZE(omap1_cam_formats));
|
||||
xlate->code = code;
|
||||
xlate++;
|
||||
dev_dbg(dev,
|
||||
"%s: providing format %s as byte swapped code #%d\n",
|
||||
__func__, omap1_cam_formats[code].name, code);
|
||||
__func__, xlate->host_fmt->name, code);
|
||||
}
|
||||
default:
|
||||
if (xlate)
|
||||
|
|
Loading…
Reference in New Issue