summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/hdmi.c
diff options
context:
space:
mode:
authorYoungjin Kim <nkim@nvidia.com>2012-03-09 16:30:09 +0900
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-03-15 10:14:01 -0700
commita1490ac1a719e2e10a02e0d4b55ff3a2b362e78e (patch)
tree4ae61905800c7c449fd8ddb723d0a8233a8d4004 /drivers/video/tegra/dc/hdmi.c
parent4fa51e5bb36cfadde3e6677e032c43951321d382 (diff)
video: tegra: hdmi: validate clocks per frame of HDMI mode
There are HDMI modes which have different margin/sync values although resolution and pixel clock are the same. One example is 1080p/24Hz and 1080p/30Hz case. Those modes are not distinguished when we check if given two modes are equal. So clocks per frame also should be validated to decide sameness of the modes. Bug 950935 Signed-off-by: Youngjin Kim <nkim@nvidia.com> Reviewed-on: http://git-master/r/89026 (cherry picked from commit b9e6316850a47445be7545aaec85c6a247c44cb9) Change-Id: I06d3c0f41e63d65f1908614d09df4d16028895f0 Reviewed-on: http://git-master/r/90030 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/hdmi.c')
-rw-r--r--drivers/video/tegra/dc/hdmi.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c
index 4d5bcccb2f67..0644678e7584 100644
--- a/drivers/video/tegra/dc/hdmi.c
+++ b/drivers/video/tegra/dc/hdmi.c
@@ -682,21 +682,18 @@ static int tegra_dc_calc_clock_per_frame(const struct fb_videomode *mode)
static bool tegra_dc_hdmi_mode_equal(const struct fb_videomode *mode1,
const struct fb_videomode *mode2)
{
- int clock_per_frame = tegra_dc_calc_clock_per_frame(mode1);
+ int clock_per_frame1 = tegra_dc_calc_clock_per_frame(mode1);
+ int clock_per_frame2 = tegra_dc_calc_clock_per_frame(mode2);
/* allows up to 1Hz of pixclock difference */
- if (mode1->pixclock != mode2->pixclock) {
- return (mode1->xres == mode2->xres &&
+ return (clock_per_frame1 == clock_per_frame2 &&
+ mode1->xres == mode2->xres &&
mode1->yres == mode2->yres &&
mode1->vmode == mode2->vmode &&
+ (mode1->pixclock == mode2->pixclock ||
(abs(PICOS2KHZ(mode1->pixclock) -
PICOS2KHZ(mode2->pixclock)) *
- 1000 / clock_per_frame <= 1));
- } else {
- return (mode1->xres == mode2->xres &&
- mode1->yres == mode2->yres &&
- mode1->vmode == mode2->vmode);
- }
+ 1000 / clock_per_frame1 <= 1)));
}
static bool tegra_dc_hdmi_valid_pixclock(const struct tegra_dc *dc,