From e4886b1e1b098af06720724770622caaa9721dc9 Mon Sep 17 00:00:00 2001 From: Erik Gilling Date: Tue, 26 Oct 2010 15:29:11 -0700 Subject: [PATCH] video: tegra: transmute HDMI modes into supported ones Change-Id: I37222e9d1617a0ace062e05740365cfe5c0c2af8 Signed-off-by: Erik Gilling --- drivers/video/tegra/dc/hdmi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c index 58ad135b90cc..acc3b36ea046 100644 --- a/drivers/video/tegra/dc/hdmi.c +++ b/drivers/video/tegra/dc/hdmi.c @@ -391,23 +391,26 @@ static void hdmi_dumpregs(struct tegra_dc_hdmi_data *hdmi) static bool tegra_dc_hdmi_mode_equal(const struct fb_videomode *mode1, const struct fb_videomode *mode2) { - int diff = (s64)mode1->pixclock - (s64)mode2->pixclock; - return mode1->xres == mode2->xres && mode1->yres == mode2->yres && - diff < PIXCLOCK_TOLERANCE && - diff > -PIXCLOCK_TOLERANCE && mode1->vmode == mode2->vmode; } static bool tegra_dc_hdmi_mode_filter(struct fb_videomode *mode) { int i; + int clocks; for (i = 0; i < ARRAY_SIZE(tegra_dc_hdmi_supported_modes); i++) { if (tegra_dc_hdmi_mode_equal(&tegra_dc_hdmi_supported_modes[i], - mode)) + mode)) { + memcpy(mode, &tegra_dc_hdmi_supported_modes[i], sizeof(*mode)); + mode->flag = FB_MODE_IS_DETAILED; + clocks = (mode->left_margin + mode->xres + mode->right_margin + mode->hsync_len) * + (mode->upper_margin + mode->yres + mode->lower_margin + mode->vsync_len); + mode->refresh = (PICOS2KHZ(mode->pixclock) * 1000) / clocks; return true; + } } return false; -- 2.34.1