summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/omapdrm/dss/venc.c
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-09-21 17:00:29 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2019-03-18 11:42:13 +0200
commit41322aa691950431ccef115e85b2d6bba654bd70 (patch)
tree93dd103cda65ab7f3bdbec984991cd5371b82871 /drivers/gpu/drm/omapdrm/dss/venc.c
parentd68164fe29642270ffba64ed64b0178ef7d916bf (diff)
drm/omap: Pass drm_display_mode to .check_timings() and .set_timings()
The omap_dss_device .check_timings() and .set_timings() operations operate on struct videomode, while the DRM API operates on struct drm_display_mode. This forces conversion from to videomode in the callers. While that's not a problem per se, it creates a difference with the drm_bridge API. Replace the videomode parameter to the .check_timings() and .set_timings() operations with a drm_display_mode. This pushed the conversion to videomode down to the DSS devices in some cases. If needed they will be converted to operate on drm_display_mode natively. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/dss/venc.c')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/venc.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
index 6cb708e1944e..7bce5898654a 100644
--- a/drivers/gpu/drm/omapdrm/dss/venc.c
+++ b/drivers/gpu/drm/omapdrm/dss/venc.c
@@ -544,29 +544,29 @@ static int venc_get_modes(struct omap_dss_device *dssdev,
return ARRAY_SIZE(modes);
}
-static enum venc_videomode venc_get_videomode(const struct videomode *vm)
+static enum venc_videomode venc_get_videomode(const struct drm_display_mode *mode)
{
- if (!(vm->flags & DISPLAY_FLAGS_INTERLACED))
+ if (!(mode->flags & DRM_MODE_FLAG_INTERLACE))
return VENC_MODE_UNKNOWN;
- if (vm->pixelclock == omap_dss_pal_vm.pixelclock &&
- vm->hactive == omap_dss_pal_vm.hactive &&
- vm->vactive == omap_dss_pal_vm.vactive)
+ if (mode->clock == omap_dss_pal_vm.pixelclock / 1000 &&
+ mode->hdisplay == omap_dss_pal_vm.hactive &&
+ mode->vdisplay == omap_dss_pal_vm.vactive)
return VENC_MODE_PAL;
- if (vm->pixelclock == omap_dss_ntsc_vm.pixelclock &&
- vm->hactive == omap_dss_ntsc_vm.hactive &&
- vm->vactive == omap_dss_ntsc_vm.vactive)
+ if (mode->clock == omap_dss_ntsc_vm.pixelclock / 1000 &&
+ mode->hdisplay == omap_dss_ntsc_vm.hactive &&
+ mode->vdisplay == omap_dss_ntsc_vm.vactive)
return VENC_MODE_NTSC;
return VENC_MODE_UNKNOWN;
}
static void venc_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
+ const struct drm_display_mode *mode)
{
struct venc_device *venc = dssdev_to_venc(dssdev);
- enum venc_videomode venc_mode = venc_get_videomode(vm);
+ enum venc_videomode venc_mode = venc_get_videomode(mode);
DSSDBG("venc_set_timings\n");
@@ -591,17 +591,17 @@ static void venc_set_timings(struct omap_dss_device *dssdev,
}
static int venc_check_timings(struct omap_dss_device *dssdev,
- struct videomode *vm)
+ struct drm_display_mode *mode)
{
DSSDBG("venc_check_timings\n");
- switch (venc_get_videomode(vm)) {
+ switch (venc_get_videomode(mode)) {
case VENC_MODE_PAL:
- *vm = omap_dss_pal_vm;
+ drm_display_mode_from_videomode(&omap_dss_pal_vm, mode);
return 0;
case VENC_MODE_NTSC:
- *vm = omap_dss_ntsc_vm;
+ drm_display_mode_from_videomode(&omap_dss_ntsc_vm, mode);
return 0;
default: