summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/omapdrm/dss/venc.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
index f1abb4195a76..638cfd69ccf6 100644
--- a/drivers/gpu/drm/omapdrm/dss/venc.c
+++ b/drivers/gpu/drm/omapdrm/dss/venc.c
@@ -551,14 +551,27 @@ static void venc_display_disable(struct omap_dss_device *dssdev)
static int venc_get_modes(struct omap_dss_device *dssdev,
struct drm_connector *connector)
{
- struct venc_device *venc = dssdev_to_venc(dssdev);
- int r;
+ static const struct videomode *modes[] = {
+ &omap_dss_pal_vm,
+ &omap_dss_ntsc_vm,
+ };
+ unsigned int i;
- mutex_lock(&venc->venc_lock);
- r = omapdss_display_get_modes(connector, &venc->vm);
- mutex_unlock(&venc->venc_lock);
+ for (i = 0; i < ARRAY_SIZE(modes); ++i) {
+ struct drm_display_mode *mode;
- return r;
+ mode = drm_mode_create(connector->dev);
+ if (!mode)
+ return i;
+
+ drm_display_mode_from_videomode(modes[i], mode);
+
+ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
+ drm_mode_set_name(mode);
+ drm_mode_probed_add(connector, mode);
+ }
+
+ return ARRAY_SIZE(modes);
}
static void venc_set_timings(struct omap_dss_device *dssdev,