diff options
author | Youngjin Kim <nkim@nvidia.com> | 2012-03-09 16:30:09 +0900 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2012-03-15 10:14:01 -0700 |
commit | a1490ac1a719e2e10a02e0d4b55ff3a2b362e78e (patch) | |
tree | 4ae61905800c7c449fd8ddb723d0a8233a8d4004 /drivers/video/tegra/dc/hdmi.c | |
parent | 4fa51e5bb36cfadde3e6677e032c43951321d382 (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.c | 15 |
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, |