diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2018-09-21 17:00:29 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2019-03-18 11:42:13 +0200 |
commit | 41322aa691950431ccef115e85b2d6bba654bd70 (patch) | |
tree | 93dd103cda65ab7f3bdbec984991cd5371b82871 /drivers/gpu/drm/omapdrm/dss/venc.c | |
parent | d68164fe29642270ffba64ed64b0178ef7d916bf (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.c | 28 |
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: |