Commit b08644a2 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen

drm/omap: venc: Use drm_display_mode natively

Replace internal usage of struct videomode with struct drm_display_mode
in order to avoid converting needlessly between the data structures.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 41322aa6
...@@ -267,38 +267,34 @@ enum venc_videomode { ...@@ -267,38 +267,34 @@ enum venc_videomode {
VENC_MODE_NTSC, VENC_MODE_NTSC,
}; };
static const struct videomode omap_dss_pal_vm = { static const struct drm_display_mode omap_dss_pal_mode = {
.hactive = 720, .hdisplay = 720,
.vactive = 574, .hsync_start = 732,
.pixelclock = 13500000, .hsync_end = 796,
.hsync_len = 64, .htotal = 864,
.hfront_porch = 12, .vdisplay = 574,
.hback_porch = 68, .vsync_start = 579,
.vsync_len = 5, .vsync_end = 584,
.vfront_porch = 5, .vtotal = 625,
.vback_porch = 41, .clock = 13500,
.flags = DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW | .flags = DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_NHSYNC |
DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH | DRM_MODE_FLAG_NVSYNC,
DISPLAY_FLAGS_PIXDATA_POSEDGE |
DISPLAY_FLAGS_SYNC_NEGEDGE,
}; };
static const struct videomode omap_dss_ntsc_vm = { static const struct drm_display_mode omap_dss_ntsc_mode = {
.hactive = 720, .hdisplay = 720,
.vactive = 482, .hsync_start = 736,
.pixelclock = 13500000, .hsync_end = 800,
.hsync_len = 64, .htotal = 858,
.hfront_porch = 16, .vdisplay = 482,
.hback_porch = 58, .vsync_start = 488,
.vsync_len = 6, .vsync_end = 494,
.vfront_porch = 6, .vtotal = 525,
.vback_porch = 31, .clock = 13500,
.flags = DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW | .flags = DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_NHSYNC |
DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH | DRM_MODE_FLAG_NVSYNC,
DISPLAY_FLAGS_PIXDATA_POSEDGE |
DISPLAY_FLAGS_SYNC_NEGEDGE,
}; };
struct venc_device { struct venc_device {
...@@ -521,21 +517,19 @@ static void venc_display_disable(struct omap_dss_device *dssdev) ...@@ -521,21 +517,19 @@ static void venc_display_disable(struct omap_dss_device *dssdev)
static int venc_get_modes(struct omap_dss_device *dssdev, static int venc_get_modes(struct omap_dss_device *dssdev,
struct drm_connector *connector) struct drm_connector *connector)
{ {
static const struct videomode *modes[] = { static const struct drm_display_mode *modes[] = {
&omap_dss_pal_vm, &omap_dss_pal_mode,
&omap_dss_ntsc_vm, &omap_dss_ntsc_mode,
}; };
unsigned int i; unsigned int i;
for (i = 0; i < ARRAY_SIZE(modes); ++i) { for (i = 0; i < ARRAY_SIZE(modes); ++i) {
struct drm_display_mode *mode; struct drm_display_mode *mode;
mode = drm_mode_create(connector->dev); mode = drm_mode_duplicate(connector->dev, modes[i]);
if (!mode) if (!mode)
return i; return i;
drm_display_mode_from_videomode(modes[i], mode);
mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
drm_mode_set_name(mode); drm_mode_set_name(mode);
drm_mode_probed_add(connector, mode); drm_mode_probed_add(connector, mode);
...@@ -549,14 +543,14 @@ static enum venc_videomode venc_get_videomode(const struct drm_display_mode *mod ...@@ -549,14 +543,14 @@ static enum venc_videomode venc_get_videomode(const struct drm_display_mode *mod
if (!(mode->flags & DRM_MODE_FLAG_INTERLACE)) if (!(mode->flags & DRM_MODE_FLAG_INTERLACE))
return VENC_MODE_UNKNOWN; return VENC_MODE_UNKNOWN;
if (mode->clock == omap_dss_pal_vm.pixelclock / 1000 && if (mode->clock == omap_dss_pal_mode.clock &&
mode->hdisplay == omap_dss_pal_vm.hactive && mode->hdisplay == omap_dss_pal_mode.hdisplay &&
mode->vdisplay == omap_dss_pal_vm.vactive) mode->vdisplay == omap_dss_pal_mode.vdisplay)
return VENC_MODE_PAL; return VENC_MODE_PAL;
if (mode->clock == omap_dss_ntsc_vm.pixelclock / 1000 && if (mode->clock == omap_dss_ntsc_mode.clock &&
mode->hdisplay == omap_dss_ntsc_vm.hactive && mode->hdisplay == omap_dss_ntsc_mode.hdisplay &&
mode->vdisplay == omap_dss_ntsc_vm.vactive) mode->vdisplay == omap_dss_ntsc_mode.vdisplay)
return VENC_MODE_NTSC; return VENC_MODE_NTSC;
return VENC_MODE_UNKNOWN; return VENC_MODE_UNKNOWN;
...@@ -597,16 +591,20 @@ static int venc_check_timings(struct omap_dss_device *dssdev, ...@@ -597,16 +591,20 @@ static int venc_check_timings(struct omap_dss_device *dssdev,
switch (venc_get_videomode(mode)) { switch (venc_get_videomode(mode)) {
case VENC_MODE_PAL: case VENC_MODE_PAL:
drm_display_mode_from_videomode(&omap_dss_pal_vm, mode); drm_mode_copy(mode, &omap_dss_pal_mode);
return 0; break;
case VENC_MODE_NTSC: case VENC_MODE_NTSC:
drm_display_mode_from_videomode(&omap_dss_ntsc_vm, mode); drm_mode_copy(mode, &omap_dss_ntsc_mode);
return 0; break;
default: default:
return -EINVAL; return -EINVAL;
} }
drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
drm_mode_set_name(mode);
return 0;
} }
static int venc_dump_regs(struct seq_file *s, void *p) static int venc_dump_regs(struct seq_file *s, void *p)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment