gpu: ipu-v3: ipu-dc: don't bug out on invalid bus_format
authorPhilipp Zabel <p.zabel@pengutronix.de>
Wed, 6 Jul 2016 09:06:18 +0000 (11:06 +0200)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Tue, 12 Jul 2016 16:26:05 +0000 (18:26 +0200)
If imx-drm is combined with a bridge or panel that requests an
unsupported format, warn and use a default mapping instead of
hanging the machine. The worst that can happen here are wrong
colors.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/ipu-v3/ipu-dc.c

index cd72dadb0fd7447a2469e1258260aa9d09b8a03c..659475c1e44abea70ad9834d09c26e3c51d8e14f 100644 (file)
@@ -150,6 +150,9 @@ static void dc_write_tmpl(struct ipu_dc *dc, int word, u32 opcode, u32 operand,
 static int ipu_bus_format_to_map(u32 fmt)
 {
        switch (fmt) {
+       default:
+               WARN_ON(1);
+               /* fall-through */
        case MEDIA_BUS_FMT_RGB888_1X24:
                return IPU_DC_MAP_RGB24;
        case MEDIA_BUS_FMT_RGB565_1X16:
@@ -162,8 +165,6 @@ static int ipu_bus_format_to_map(u32 fmt)
                return IPU_DC_MAP_LVDS666;
        case MEDIA_BUS_FMT_BGR888_1X24:
                return IPU_DC_MAP_BGR24;
-       default:
-               return -EINVAL;
        }
 }
 
@@ -178,7 +179,6 @@ int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced,
        dc->di = ipu_di_get_num(di);
 
        map = ipu_bus_format_to_map(bus_format);
-       BUG_ON(map < 0);
 
        /*
         * In interlaced mode we need more counters to create the asymmetric