Since V4L2_MBUS_FMT_* codes have become large and sparse, they cannot
be used as array indices anymore.

Signed-off-by: Guennadi Liakhovetski <[email protected]>
---
 drivers/media/video/omap1_camera.c |   41 ++++++++++++++++++++++++++---------
 1 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/drivers/media/video/omap1_camera.c 
b/drivers/media/video/omap1_camera.c
index 5954b93..fe577a9 100644
--- a/drivers/media/video/omap1_camera.c
+++ b/drivers/media/video/omap1_camera.c
@@ -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)
-- 
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to