summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanjay Singh Rawat <srawat@nvidia.com>2011-07-13 11:40:31 +0530
committerSimone Willett <swillett@nvidia.com>2011-08-10 12:27:58 -0700
commit94f5c064dd99407a29804034e1abdae766a487e6 (patch)
treefc6f11f3dcd36da75a47995f5ee9626611867fc5
parent650a7456e4f2764e4297969fb93ff3f43401ef4b (diff)
video: tegra: fix divide by zero exception in hdmi module
Bug 851086 Signed-off-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-on: http://git-master/r/40788 (cherry picked from commit 835196496da8c426d1a7d6342faf525c900ea81f) Change-Id: Ic7d1a4fba87ae03fab344039b1de5a6f7c15f3e6 Reviewed-on: http://git-master/r/42382 Reviewed-by: Youngjin Kim <nkim@nvidia.com> Reviewed-by: Donghan Ryu <dryu@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
-rw-r--r--drivers/video/tegra/dc/hdmi.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c
index 871560f95e40..ecf889cb4dd3 100644
--- a/drivers/video/tegra/dc/hdmi.c
+++ b/drivers/video/tegra/dc/hdmi.c
@@ -500,12 +500,21 @@ static bool tegra_dc_hdmi_mode_equal(const struct fb_videomode *mode1,
{
int clock_per_frame = tegra_dc_calc_clock_per_frame(mode1);
+ if (!clock_per_frame)
+ return false;
+
/* allows up to 1Hz of pixclock difference */
- return mode1->xres == mode2->xres &&
- mode1->yres == mode2->yres &&
- (abs(PICOS2KHZ(mode1->pixclock - mode2->pixclock)) *
- 1000 / clock_per_frame <= 1) &&
- mode1->vmode == mode2->vmode;
+ if (mode1->pixclock != mode2->pixclock) {
+ return (mode1->xres == mode2->xres &&
+ mode1->yres == mode2->yres &&
+ (abs(PICOS2KHZ(mode1->pixclock - mode2->pixclock)) * 1000
+ / clock_per_frame <= 1) &&
+ mode1->vmode == mode2->vmode);
+ } else {
+ return (mode1->xres == mode2->xres &&
+ mode1->yres == mode2->yres &&
+ mode1->vmode == mode2->vmode);
+ }
}
static bool tegra_dc_hdmi_valid_pixclock(const struct tegra_dc *dc,