aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.h2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_fb.c22
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c15
3 files changed, 7 insertions, 32 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
index d78b3ff94a07..ca087a993909 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.h
+++ b/drivers/gpu/drm/omapdrm/omap_drv.h
@@ -150,8 +150,6 @@ struct drm_encoder *omap_connector_attached_encoder(
150 struct drm_connector *connector); 150 struct drm_connector *connector);
151bool omap_connector_get_hdmi_mode(struct drm_connector *connector); 151bool omap_connector_get_hdmi_mode(struct drm_connector *connector);
152 152
153uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats,
154 uint32_t max_formats, const u32 *supported_modes);
155struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, 153struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
156 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd); 154 struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd);
157struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, 155struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c
index 9d5f6ad2059e..489d17ce8f11 100644
--- a/drivers/gpu/drm/omapdrm/omap_fb.c
+++ b/drivers/gpu/drm/omapdrm/omap_fb.c
@@ -55,28 +55,6 @@ static const struct {
55 { DRM_FORMAT_UYVY, DRM_FORMAT_UYVY }, 55 { DRM_FORMAT_UYVY, DRM_FORMAT_UYVY },
56}; 56};
57 57
58/* convert from overlay's pixel formats bitmask to an array of fourcc's */
59uint32_t omap_framebuffer_get_formats(uint32_t *pixel_formats,
60 uint32_t max_formats, const u32 *supported_modes)
61{
62 uint32_t nformats = 0;
63 int i = 0;
64
65 for (i = 0; i < ARRAY_SIZE(formats) && nformats < max_formats; i++) {
66 unsigned int t;
67
68 for (t = 0; supported_modes[t]; ++t) {
69 if (supported_modes[t] != formats[i].dss_format)
70 continue;
71
72 pixel_formats[nformats++] = formats[i].pixel_format;
73 break;
74 }
75 }
76
77 return nformats;
78}
79
80/* per-plane info for the fb: */ 58/* per-plane info for the fb: */
81struct plane { 59struct plane {
82 struct drm_gem_object *bo; 60 struct drm_gem_object *bo;
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 40747a625374..96c15e6d7397 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -34,9 +34,6 @@ struct omap_plane {
34 struct drm_plane base; 34 struct drm_plane base;
35 enum omap_plane_id id; 35 enum omap_plane_id id;
36 const char *name; 36 const char *name;
37
38 uint32_t nformats;
39 uint32_t formats[32];
40}; 37};
41 38
42static int omap_plane_prepare_fb(struct drm_plane *plane, 39static int omap_plane_prepare_fb(struct drm_plane *plane,
@@ -294,6 +291,8 @@ struct drm_plane *omap_plane_init(struct drm_device *dev,
294 struct omap_plane *omap_plane; 291 struct omap_plane *omap_plane;
295 enum omap_plane_id id; 292 enum omap_plane_id id;
296 int ret; 293 int ret;
294 u32 nformats;
295 const u32 *formats;
297 296
298 if (WARN_ON(idx >= ARRAY_SIZE(plane_idx_to_id))) 297 if (WARN_ON(idx >= ARRAY_SIZE(plane_idx_to_id)))
299 return ERR_PTR(-EINVAL); 298 return ERR_PTR(-EINVAL);
@@ -306,17 +305,17 @@ struct drm_plane *omap_plane_init(struct drm_device *dev,
306 if (!omap_plane) 305 if (!omap_plane)
307 return ERR_PTR(-ENOMEM); 306 return ERR_PTR(-ENOMEM);
308 307
309 omap_plane->nformats = omap_framebuffer_get_formats( 308 formats = priv->dispc_ops->ovl_get_color_modes(id);
310 omap_plane->formats, ARRAY_SIZE(omap_plane->formats), 309 for (nformats = 0; formats[nformats]; ++nformats)
311 priv->dispc_ops->ovl_get_color_modes(id)); 310 ;
312 omap_plane->id = id; 311 omap_plane->id = id;
313 omap_plane->name = plane_id_to_name[id]; 312 omap_plane->name = plane_id_to_name[id];
314 313
315 plane = &omap_plane->base; 314 plane = &omap_plane->base;
316 315
317 ret = drm_universal_plane_init(dev, plane, possible_crtcs, 316 ret = drm_universal_plane_init(dev, plane, possible_crtcs,
318 &omap_plane_funcs, omap_plane->formats, 317 &omap_plane_funcs, formats,
319 omap_plane->nformats, type, NULL); 318 nformats, type, NULL);
320 if (ret < 0) 319 if (ret < 0)
321 goto error; 320 goto error;
322 321