Skip to content

Commit

Permalink
drm/fb: fix FBIOGET/PUT_VSCREENINFO pixel clock handling
Browse files Browse the repository at this point in the history
When the framebuffer driver does not publish detailed timing information
for the current video mode, the correct value for the pixclock field is
zero, not -1.

Since pixclock is actually unsigned, the value -1 would be interpreted
as 4294967295 picoseconds (i.e., about 4 milliseconds) by
register_framebuffer() and userspace programs.

This patch allows X.org's fbdev driver to work.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Tested-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
Clemens Ladisch authored and Dave Airlie committed Nov 24, 2009
1 parent 79cc304 commit 5349ef3
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/gpu/drm/drm_fb_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
struct drm_framebuffer *fb = fb_helper->fb;
int depth;

if (var->pixclock == -1 || !var->pixclock)
if (var->pixclock != 0)
return -EINVAL;

/* Need to resize the fb object !!! */
Expand Down Expand Up @@ -691,7 +691,7 @@ int drm_fb_helper_set_par(struct fb_info *info)
int ret;
int i;

if (var->pixclock != -1) {
if (var->pixclock != 0) {
DRM_ERROR("PIXEL CLCOK SET\n");
return -EINVAL;
}
Expand Down Expand Up @@ -904,7 +904,7 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev,
fb_helper->fb = fb;

if (new_fb) {
info->var.pixclock = -1;
info->var.pixclock = 0;
if (register_framebuffer(info) < 0)
return -EINVAL;
} else {
Expand Down

0 comments on commit 5349ef3

Please sign in to comment.