[PATCH v1.1 26/29] drm/omap: venc: Use drm_display_mode natively
Sebastian Reichel
sebastian.reichel at collabora.com
Sun Dec 9 22:27:02 UTC 2018
Hi,
On Thu, Dec 06, 2018 at 06:23:46PM +0200, Laurent Pinchart wrote:
> Replace internal usage of struct videomode with struct drm_display_mode
> in order to avoid converting needlessly between the data structures.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> Changes since v1:
>
> - Set mode.crtc_* fields and mode name in venc_check_timings()
> ---
Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.com>
-- Sebastian
> drivers/gpu/drm/omapdrm/dss/venc.c | 90 +++++++++++++++---------------
> 1 file changed, 44 insertions(+), 46 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
> index 7bce5898654a..f2cbecfd05b5 100644
> --- a/drivers/gpu/drm/omapdrm/dss/venc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/venc.c
> @@ -267,38 +267,34 @@ enum venc_videomode {
> VENC_MODE_NTSC,
> };
>
> -static const struct videomode omap_dss_pal_vm = {
> - .hactive = 720,
> - .vactive = 574,
> - .pixelclock = 13500000,
> - .hsync_len = 64,
> - .hfront_porch = 12,
> - .hback_porch = 68,
> - .vsync_len = 5,
> - .vfront_porch = 5,
> - .vback_porch = 41,
> -
> - .flags = DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW |
> - DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH |
> - DISPLAY_FLAGS_PIXDATA_POSEDGE |
> - DISPLAY_FLAGS_SYNC_NEGEDGE,
> +static const struct drm_display_mode omap_dss_pal_mode = {
> + .hdisplay = 720,
> + .hsync_start = 732,
> + .hsync_end = 796,
> + .htotal = 864,
> + .vdisplay = 574,
> + .vsync_start = 579,
> + .vsync_end = 584,
> + .vtotal = 625,
> + .clock = 13500,
> +
> + .flags = DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_NHSYNC |
> + DRM_MODE_FLAG_NVSYNC,
> };
>
> -static const struct videomode omap_dss_ntsc_vm = {
> - .hactive = 720,
> - .vactive = 482,
> - .pixelclock = 13500000,
> - .hsync_len = 64,
> - .hfront_porch = 16,
> - .hback_porch = 58,
> - .vsync_len = 6,
> - .vfront_porch = 6,
> - .vback_porch = 31,
> -
> - .flags = DISPLAY_FLAGS_INTERLACED | DISPLAY_FLAGS_HSYNC_LOW |
> - DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_HIGH |
> - DISPLAY_FLAGS_PIXDATA_POSEDGE |
> - DISPLAY_FLAGS_SYNC_NEGEDGE,
> +static const struct drm_display_mode omap_dss_ntsc_mode = {
> + .hdisplay = 720,
> + .hsync_start = 736,
> + .hsync_end = 800,
> + .htotal = 858,
> + .vdisplay = 482,
> + .vsync_start = 488,
> + .vsync_end = 494,
> + .vtotal = 525,
> + .clock = 13500,
> +
> + .flags = DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_NHSYNC |
> + DRM_MODE_FLAG_NVSYNC,
> };
>
> struct venc_device {
> @@ -521,21 +517,19 @@ static void venc_display_disable(struct omap_dss_device *dssdev)
> static int venc_get_modes(struct omap_dss_device *dssdev,
> struct drm_connector *connector)
> {
> - static const struct videomode *modes[] = {
> - &omap_dss_pal_vm,
> - &omap_dss_ntsc_vm,
> + static const struct drm_display_mode *modes[] = {
> + &omap_dss_pal_mode,
> + &omap_dss_ntsc_mode,
> };
> unsigned int i;
>
> for (i = 0; i < ARRAY_SIZE(modes); ++i) {
> struct drm_display_mode *mode;
>
> - mode = drm_mode_create(connector->dev);
> + mode = drm_mode_duplicate(connector->dev, modes[i]);
> 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);
> @@ -549,14 +543,14 @@ static enum venc_videomode venc_get_videomode(const struct drm_display_mode *mod
> if (!(mode->flags & DRM_MODE_FLAG_INTERLACE))
> return VENC_MODE_UNKNOWN;
>
> - if (mode->clock == omap_dss_pal_vm.pixelclock / 1000 &&
> - mode->hdisplay == omap_dss_pal_vm.hactive &&
> - mode->vdisplay == omap_dss_pal_vm.vactive)
> + if (mode->clock == omap_dss_pal_mode.clock &&
> + mode->hdisplay == omap_dss_pal_mode.hdisplay &&
> + mode->vdisplay == omap_dss_pal_mode.vdisplay)
> return VENC_MODE_PAL;
>
> - if (mode->clock == omap_dss_ntsc_vm.pixelclock / 1000 &&
> - mode->hdisplay == omap_dss_ntsc_vm.hactive &&
> - mode->vdisplay == omap_dss_ntsc_vm.vactive)
> + if (mode->clock == omap_dss_ntsc_mode.clock &&
> + mode->hdisplay == omap_dss_ntsc_mode.hdisplay &&
> + mode->vdisplay == omap_dss_ntsc_mode.vdisplay)
> return VENC_MODE_NTSC;
>
> return VENC_MODE_UNKNOWN;
> @@ -597,16 +591,20 @@ static int venc_check_timings(struct omap_dss_device *dssdev,
>
> switch (venc_get_videomode(mode)) {
> case VENC_MODE_PAL:
> - drm_display_mode_from_videomode(&omap_dss_pal_vm, mode);
> - return 0;
> + drm_mode_copy(mode, &omap_dss_pal_mode);
> + break;
>
> case VENC_MODE_NTSC:
> - drm_display_mode_from_videomode(&omap_dss_ntsc_vm, mode);
> - return 0;
> + drm_mode_copy(mode, &omap_dss_ntsc_mode);
> + break;
>
> default:
> 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)
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20181209/ddc5cd6b/attachment-0001.sig>
More information about the dri-devel
mailing list