aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
diff options
context:
space:
mode:
authorRahul Sharma <rahul.sharma@samsung.com>2013-01-15 08:11:05 -0500
committerInki Dae <inki.dae@samsung.com>2013-02-21 01:00:27 -0500
commit438c0f85cbbe6e7025e2375f97f5223b6eac5cd7 (patch)
treeea3bec17569b0a299a289ce4798ac10bd0e4cbc2 /drivers/gpu/drm/exynos/exynos_drm_hdmi.c
parent979c0c7eb0fb969f0621c7017a6a87e6a0e36a4c (diff)
drm/exynos: add display-mode-check operation to exynos_mixer_ops struct
This patch adds the display mode check operation to exynos_mixer_ops in drm-common-hdmi. In Exynos SoCs, mixer IP can put certain restrictions on the proposed display modes. These restriction needs to be considered during mode negotiation, which happens immediately after edid parsing. Both, mixer check-mode and hdmi check-timing callbacks are called one after another and ANDed result is returned back. Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com> Reviewed-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_hdmi.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_hdmi.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
index 28644539b305..7c27df03c9ff 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c
@@ -124,9 +124,21 @@ static struct edid *drm_hdmi_get_edid(struct device *dev,
124static int drm_hdmi_check_timing(struct device *dev, void *timing) 124static int drm_hdmi_check_timing(struct device *dev, void *timing)
125{ 125{
126 struct drm_hdmi_context *ctx = to_context(dev); 126 struct drm_hdmi_context *ctx = to_context(dev);
127 int ret = 0;
127 128
128 DRM_DEBUG_KMS("%s\n", __FILE__); 129 DRM_DEBUG_KMS("%s\n", __FILE__);
129 130
131 /*
132 * Both, mixer and hdmi should be able to handle the requested mode.
133 * If any of the two fails, return mode as BAD.
134 */
135
136 if (mixer_ops && mixer_ops->check_timing)
137 ret = mixer_ops->check_timing(ctx->mixer_ctx->ctx, timing);
138
139 if (ret)
140 return ret;
141
130 if (hdmi_ops && hdmi_ops->check_timing) 142 if (hdmi_ops && hdmi_ops->check_timing)
131 return hdmi_ops->check_timing(ctx->hdmi_ctx->ctx, timing); 143 return hdmi_ops->check_timing(ctx->hdmi_ctx->ctx, timing);
132 144