u16 width, u16 height, u16 out_width, u16 out_height,
                bool mem_to_mem);
        u8 num_fifos;
+       const u32 **supported_color_modes;
        unsigned int buffer_size_unit;
        unsigned int burst_size_unit;
 
        return dispc.feat->burst_size_unit * 8;
 }
 
+static bool dispc_ovl_color_mode_supported(enum omap_plane_id plane, u32 fourcc)
+{
+       const u32 *modes;
+       unsigned int i;
+
+       modes = dispc.feat->supported_color_modes[plane];
+
+       for (i = 0; modes[i]; ++i) {
+               if (modes[i] == fourcc)
+                       return true;
+       }
+
+       return false;
+}
+
 static const u32 *dispc_ovl_get_color_modes(enum omap_plane_id plane)
 {
-       return dss_feat_get_supported_color_modes(plane);
+       return dispc.feat->supported_color_modes[plane];
 }
 
 static int dispc_get_num_ovls(void)
                REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane),
                        row_repeat ? 1 : 0, 18, 18);
 
-       if (dss_feat_color_mode_supported(plane, DRM_FORMAT_NV12)) {
+       if (dispc_ovl_color_mode_supported(plane, DRM_FORMAT_NV12)) {
                bool doublestride =
                        fourcc == DRM_FORMAT_NV12 &&
                        rotation_type == OMAP_DSS_ROT_TILER &&
                        out_height);
        }
 
-       if (!dss_feat_color_mode_supported(plane, fourcc))
+       if (!dispc_ovl_color_mode_supported(plane, fourcc))
                return -EINVAL;
 
        r = dispc_ovl_calc_scaling(pclk, lclk, caps, vm, in_width,
                dispc_init_mflag();
 }
 
+#define COLOR_ARRAY(arr...) (const u32[]) { arr, 0 }
+
+static const u32 *omap2_dispc_supported_color_modes[] = {
+
+       /* OMAP_DSS_GFX */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGBX4444, DRM_FORMAT_RGB565,
+       DRM_FORMAT_XRGB8888, DRM_FORMAT_RGB888),
+
+       /* OMAP_DSS_VIDEO1 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
+       DRM_FORMAT_UYVY),
+
+       /* OMAP_DSS_VIDEO2 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
+       DRM_FORMAT_UYVY),
+};
+
+static const u32 *omap3_dispc_supported_color_modes[] = {
+       /* OMAP_DSS_GFX */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
+       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888),
+
+       /* OMAP_DSS_VIDEO1 */
+       COLOR_ARRAY(
+       DRM_FORMAT_XRGB8888, DRM_FORMAT_RGB888,
+       DRM_FORMAT_RGBX4444, DRM_FORMAT_RGB565,
+       DRM_FORMAT_YUYV, DRM_FORMAT_UYVY),
+
+       /* OMAP_DSS_VIDEO2 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
+       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
+       DRM_FORMAT_UYVY, DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888),
+};
+
+static const u32 *omap4_dispc_supported_color_modes[] = {
+       /* OMAP_DSS_GFX */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
+       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888,
+       DRM_FORMAT_ARGB1555, DRM_FORMAT_XRGB4444,
+       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB1555),
+
+       /* OMAP_DSS_VIDEO1 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
+       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
+       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
+       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
+       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
+       DRM_FORMAT_RGBX8888),
+
+       /* OMAP_DSS_VIDEO2 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
+       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
+       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
+       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
+       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
+       DRM_FORMAT_RGBX8888),
+
+       /* OMAP_DSS_VIDEO3 */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
+       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
+       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
+       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
+       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
+       DRM_FORMAT_RGBX8888),
+
+       /* OMAP_DSS_WB */
+       COLOR_ARRAY(
+       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
+       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
+       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
+       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
+       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
+       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
+       DRM_FORMAT_RGBX8888),
+};
+
 static const struct dispc_features omap24xx_dispc_feats = {
        .sw_start               =       5,
        .fp_start               =       15,
        .calc_scaling           =       dispc_ovl_calc_scaling_24xx,
        .calc_core_clk          =       calc_core_clk_24xx,
        .num_fifos              =       3,
+       .supported_color_modes  =       omap2_dispc_supported_color_modes,
        .buffer_size_unit       =       1,
        .burst_size_unit        =       8,
        .no_framedone_tv        =       true,
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
+       .supported_color_modes  =       omap3_dispc_supported_color_modes,
        .buffer_size_unit       =       1,
        .burst_size_unit        =       8,
        .no_framedone_tv        =       true,
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
+       .supported_color_modes  =       omap3_dispc_supported_color_modes,
        .buffer_size_unit       =       1,
        .burst_size_unit        =       8,
        .no_framedone_tv        =       true,
        .calc_scaling           =       dispc_ovl_calc_scaling_44xx,
        .calc_core_clk          =       calc_core_clk_44xx,
        .num_fifos              =       5,
+       .supported_color_modes  =       omap4_dispc_supported_color_modes,
        .buffer_size_unit       =       16,
        .burst_size_unit        =       16,
        .gfx_fifo_workaround    =       true,
        .calc_scaling           =       dispc_ovl_calc_scaling_44xx,
        .calc_core_clk          =       calc_core_clk_44xx,
        .num_fifos              =       5,
+       .supported_color_modes  =       omap4_dispc_supported_color_modes,
        .buffer_size_unit       =       16,
        .burst_size_unit        =       16,
        .gfx_fifo_workaround    =       true,
 
        const int num_mgrs;
        const int num_ovls;
        const enum omap_dss_output_id *supported_outputs;
-       const u32 **supported_color_modes;
        const enum omap_overlay_caps *overlay_caps;
        const struct dss_param_range *dss_params;
 };
        OMAP_DSS_OUTPUT_DSI2,
 };
 
-#define COLOR_ARRAY(arr...) (const u32[]) { arr, 0 }
-
-static const u32 *omap2_dss_supported_color_modes[] = {
-
-       /* OMAP_DSS_GFX */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGBX4444, DRM_FORMAT_RGB565,
-       DRM_FORMAT_XRGB8888, DRM_FORMAT_RGB888),
-
-       /* OMAP_DSS_VIDEO1 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
-       DRM_FORMAT_UYVY),
-
-       /* OMAP_DSS_VIDEO2 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
-       DRM_FORMAT_UYVY),
-};
-
-static const u32 *omap3_dss_supported_color_modes[] = {
-       /* OMAP_DSS_GFX */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
-       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_ARGB8888,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888),
-
-       /* OMAP_DSS_VIDEO1 */
-       COLOR_ARRAY(
-       DRM_FORMAT_XRGB8888, DRM_FORMAT_RGB888,
-       DRM_FORMAT_RGBX4444, DRM_FORMAT_RGB565,
-       DRM_FORMAT_YUYV, DRM_FORMAT_UYVY),
-
-       /* OMAP_DSS_VIDEO2 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
-       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_YUYV,
-       DRM_FORMAT_UYVY, DRM_FORMAT_ARGB8888,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888),
-};
-
-static const u32 *omap4_dss_supported_color_modes[] = {
-       /* OMAP_DSS_GFX */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGBX4444, DRM_FORMAT_ARGB4444,
-       DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_ARGB8888,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888,
-       DRM_FORMAT_ARGB1555, DRM_FORMAT_XRGB4444,
-       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB1555),
-
-       /* OMAP_DSS_VIDEO1 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
-       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
-       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
-       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
-       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
-       DRM_FORMAT_RGBX8888),
-
-       /* OMAP_DSS_VIDEO2 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
-       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
-       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
-       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
-       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
-       DRM_FORMAT_RGBX8888),
-
-       /* OMAP_DSS_VIDEO3 */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
-       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
-       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
-       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
-       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
-       DRM_FORMAT_RGBX8888),
-
-       /* OMAP_DSS_WB */
-       COLOR_ARRAY(
-       DRM_FORMAT_RGB565, DRM_FORMAT_RGBX4444,
-       DRM_FORMAT_YUYV, DRM_FORMAT_ARGB1555,
-       DRM_FORMAT_RGBA8888, DRM_FORMAT_NV12,
-       DRM_FORMAT_RGBA4444, DRM_FORMAT_XRGB8888,
-       DRM_FORMAT_RGB888, DRM_FORMAT_UYVY,
-       DRM_FORMAT_ARGB4444, DRM_FORMAT_XRGB1555,
-       DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB4444,
-       DRM_FORMAT_RGBX8888),
-};
-
 static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
        /* OMAP_DSS_GFX */
        OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
        .num_mgrs = 2,
        .num_ovls = 3,
        .supported_outputs = omap2_dss_supported_outputs,
-       .supported_color_modes = omap2_dss_supported_color_modes,
        .overlay_caps = omap2_dss_overlay_caps,
        .dss_params = omap2_dss_param_range,
 };
        .num_mgrs = 2,
        .num_ovls = 3,
        .supported_outputs = omap3430_dss_supported_outputs,
-       .supported_color_modes = omap3_dss_supported_color_modes,
        .overlay_caps = omap3430_dss_overlay_caps,
        .dss_params = omap3_dss_param_range,
 };
        .num_mgrs = 2,
        .num_ovls = 3,
        .supported_outputs = omap3430_dss_supported_outputs,
-       .supported_color_modes = omap3_dss_supported_color_modes,
        .overlay_caps = omap3430_dss_overlay_caps,
        .dss_params = omap3_dss_param_range,
 };
        .num_mgrs = 1,
        .num_ovls = 3,
        .supported_outputs = am43xx_dss_supported_outputs,
-       .supported_color_modes = omap3_dss_supported_color_modes,
        .overlay_caps = omap3430_dss_overlay_caps,
        .dss_params = am43xx_dss_param_range,
 };
        .num_mgrs = 2,
        .num_ovls = 3,
        .supported_outputs = omap3630_dss_supported_outputs,
-       .supported_color_modes = omap3_dss_supported_color_modes,
        .overlay_caps = omap3630_dss_overlay_caps,
        .dss_params = omap3_dss_param_range,
 };
        .num_mgrs = 3,
        .num_ovls = 4,
        .supported_outputs = omap4_dss_supported_outputs,
-       .supported_color_modes = omap4_dss_supported_color_modes,
        .overlay_caps = omap4_dss_overlay_caps,
        .dss_params = omap4_dss_param_range,
 };
        .num_mgrs = 3,
        .num_ovls = 4,
        .supported_outputs = omap4_dss_supported_outputs,
-       .supported_color_modes = omap4_dss_supported_color_modes,
        .overlay_caps = omap4_dss_overlay_caps,
        .dss_params = omap4_dss_param_range,
 };
        .num_mgrs = 3,
        .num_ovls = 4,
        .supported_outputs = omap4_dss_supported_outputs,
-       .supported_color_modes = omap4_dss_supported_color_modes,
        .overlay_caps = omap4_dss_overlay_caps,
        .dss_params = omap4_dss_param_range,
 };
        .num_mgrs = 4,
        .num_ovls = 4,
        .supported_outputs = omap5_dss_supported_outputs,
-       .supported_color_modes = omap4_dss_supported_color_modes,
        .overlay_caps = omap4_dss_overlay_caps,
        .dss_params = omap5_dss_param_range,
 };
        return omap_current_dss_features->supported_outputs[channel];
 }
 
-const u32 *dss_feat_get_supported_color_modes(enum omap_plane_id plane)
-{
-       return omap_current_dss_features->supported_color_modes[plane];
-}
-
 enum omap_overlay_caps dss_feat_get_overlay_caps(enum omap_plane_id plane)
 {
        return omap_current_dss_features->overlay_caps[plane];
 }
 
-bool dss_feat_color_mode_supported(enum omap_plane_id plane, u32 fourcc)
-{
-       const u32 *modes;
-       unsigned int i;
-
-       modes = omap_current_dss_features->supported_color_modes[plane];
-
-       for (i = 0; modes[i]; ++i) {
-               if (modes[i] == fourcc)
-                       return true;
-       }
-
-       return false;
-}
-
 /* DSS has_feature check */
 bool dss_has_feature(enum dss_feat_id id)
 {