Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal...
[pandora-kernel.git] / drivers / video / omap2 / omapfb / omapfb-main.c
index 4fdab8e..505ec66 100644 (file)
@@ -2090,7 +2090,7 @@ static int omapfb_set_def_mode(struct omapfb2_device *fbdev,
 {
        int r;
        u8 bpp;
-       struct omap_video_timings timings;
+       struct omap_video_timings timings, temp_timings;
 
        r = omapfb_mode_to_timings(mode_str, &timings, &bpp);
        if (r)
@@ -2100,14 +2100,23 @@ static int omapfb_set_def_mode(struct omapfb2_device *fbdev,
        fbdev->bpp_overrides[fbdev->num_bpp_overrides].bpp = bpp;
        ++fbdev->num_bpp_overrides;
 
-       if (!display->driver->check_timings || !display->driver->set_timings)
-               return -EINVAL;
+       if (display->driver->check_timings) {
+               r = display->driver->check_timings(display, &timings);
+               if (r)
+                       return r;
+       } else {
+               /* If check_timings is not present compare xres and yres */
+               if (display->driver->get_timings) {
+                       display->driver->get_timings(display, &temp_timings);
 
-       r = display->driver->check_timings(display, &timings);
-       if (r)
-               return r;
+                       if (temp_timings.x_res != timings.x_res ||
+                               temp_timings.y_res != timings.y_res)
+                               return -EINVAL;
+               }
+       }
 
-       display->driver->set_timings(display, &timings);
+       if (display->driver->set_timings)
+                       display->driver->set_timings(display, &timings);
 
        return 0;
 }