mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 23:14:31 +08:00
drm/exynos/mixer: replace direct cross-driver call with drm mode validation
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>
This commit is contained in:
parent
5625b3418a
commit
3ae24362e0
@ -44,7 +44,6 @@
|
|||||||
|
|
||||||
#include "exynos_drm_drv.h"
|
#include "exynos_drm_drv.h"
|
||||||
#include "exynos_drm_crtc.h"
|
#include "exynos_drm_crtc.h"
|
||||||
#include "exynos_mixer.h"
|
|
||||||
|
|
||||||
#define HOTPLUG_DEBOUNCE_MS 1100
|
#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 :
|
(mode->flags & DRM_MODE_FLAG_INTERLACE) ? true :
|
||||||
false, mode->clock * 1000);
|
false, mode->clock * 1000);
|
||||||
|
|
||||||
ret = mixer_check_mode(mode);
|
|
||||||
if (ret)
|
|
||||||
return MODE_BAD;
|
|
||||||
|
|
||||||
ret = hdmi_find_phy_conf(hdata, mode->clock * 1000);
|
ret = hdmi_find_phy_conf(hdata, mode->clock * 1000);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return MODE_BAD;
|
return MODE_BAD;
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
#include "exynos_drm_crtc.h"
|
#include "exynos_drm_crtc.h"
|
||||||
#include "exynos_drm_plane.h"
|
#include "exynos_drm_plane.h"
|
||||||
#include "exynos_drm_iommu.h"
|
#include "exynos_drm_iommu.h"
|
||||||
#include "exynos_mixer.h"
|
|
||||||
|
|
||||||
#define MIXER_WIN_NR 3
|
#define MIXER_WIN_NR 3
|
||||||
#define VP_DEFAULT_WIN 2
|
#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 */
|
/* 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;
|
u32 w, h;
|
||||||
|
|
||||||
w = mode->hdisplay;
|
w = mode->hdisplay;
|
||||||
@ -1123,6 +1124,7 @@ static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
|
|||||||
.wait_for_vblank = mixer_wait_for_vblank,
|
.wait_for_vblank = mixer_wait_for_vblank,
|
||||||
.update_plane = mixer_update_plane,
|
.update_plane = mixer_update_plane,
|
||||||
.disable_plane = mixer_disable_plane,
|
.disable_plane = mixer_disable_plane,
|
||||||
|
.atomic_check = mixer_atomic_check,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct mixer_drv_data exynos5420_mxr_drv_data = {
|
static struct mixer_drv_data exynos5420_mxr_drv_data = {
|
||||||
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user