drm/exynos/mixer: replace direct cross-driver call with drm mode validation
authorAndrzej Hajda <a.hajda@samsung.com>
Mon, 26 Oct 2015 12:03:40 +0000 (13:03 +0100)
committerInki Dae <inki.dae@samsung.com>
Tue, 3 Nov 2015 02:46:38 +0000 (11:46 +0900)
HDMI driver called directly function from MIXER driver to invalidate modes
not supported by MIXER. The patch replaces the hack with proper .atomic_check
callback.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_hdmi.c
drivers/gpu/drm/exynos/exynos_mixer.c
drivers/gpu/drm/exynos/exynos_mixer.h [deleted file]

index b0f5ff4e86206d74abc58b982bb7d8a38556fa23..57b675563e943120a5b47a8d05b9b50260c13e02 100644 (file)
@@ -44,7 +44,6 @@
 
 #include "exynos_drm_drv.h"
 #include "exynos_drm_crtc.h"
-#include "exynos_mixer.h"
 
 #define HOTPLUG_DEBOUNCE_MS            1100
 
@@ -1017,10 +1016,6 @@ static int hdmi_mode_valid(struct drm_connector *connector,
                (mode->flags & DRM_MODE_FLAG_INTERLACE) ? true :
                false, mode->clock * 1000);
 
-       ret = mixer_check_mode(mode);
-       if (ret)
-               return MODE_BAD;
-
        ret = hdmi_find_phy_conf(hdata, mode->clock * 1000);
        if (ret < 0)
                return MODE_BAD;
index 3f9f07279a36a946d5acd3a92783ebd043dcacee..d09f8f9a893952e826233286043c59ceaa3ad66b 100644 (file)
@@ -39,7 +39,6 @@
 #include "exynos_drm_crtc.h"
 #include "exynos_drm_plane.h"
 #include "exynos_drm_iommu.h"
-#include "exynos_mixer.h"
 
 #define MIXER_WIN_NR           3
 #define VP_DEFAULT_WIN         2
@@ -1096,8 +1095,10 @@ static void mixer_disable(struct exynos_drm_crtc *crtc)
 }
 
 /* Only valid for Mixer version 16.0.33.0 */
-int mixer_check_mode(struct drm_display_mode *mode)
+static int mixer_atomic_check(struct exynos_drm_crtc *crtc,
+                      struct drm_crtc_state *state)
 {
+       struct drm_display_mode *mode = &state->adjusted_mode;
        u32 w, h;
 
        w = mode->hdisplay;
@@ -1123,6 +1124,7 @@ static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
        .wait_for_vblank        = mixer_wait_for_vblank,
        .update_plane           = mixer_update_plane,
        .disable_plane          = mixer_disable_plane,
+       .atomic_check           = mixer_atomic_check,
 };
 
 static struct mixer_drv_data exynos5420_mxr_drv_data = {
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.h b/drivers/gpu/drm/exynos/exynos_mixer.h
deleted file mode 100644 (file)
index 3811e41..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2013 Google, Inc.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#ifndef _EXYNOS_MIXER_H_
-#define _EXYNOS_MIXER_H_
-
-/* This function returns 0 if the given timing is valid for the mixer */
-int mixer_check_mode(struct drm_display_mode *mode);
-
-#endif