fbdev: mac_var_to_mode() fix
authorFinn Thain <fthain@telegraphics.com.au>
Tue, 3 Nov 2009 13:43:16 +0000 (00:43 +1100)
committerGeert Uytterhoeven <geert@linux-m68k.org>
Sat, 27 Feb 2010 17:31:12 +0000 (18:31 +0100)
commitd876c11a0fd40993136f5cc1e81371ccc6c21a63
treed2f09796146f4d8a61499759191e4cb832b1984c
parenteeb9c182a6ad8bc130377adb0a4cd7b95dd15f49
fbdev: mac_var_to_mode() fix

The valkyriefb driver assumes that this logic holds:

mac_vmode_to_var(X, cmode, &var);
mac_var_to_vmode(&var, &vmode, &cmode);
assert(vmode == X);

But it doesn't hold because mac_var_to_vmode() can return a mode with a
slower pixel clock, even when a match is available. So we end up with this
failure:

using video mode 11 and color mode 0.
valkyriefb: vmode 12 not valid.
valkyriefb: can't set default video mode
valkyriefb: vmode 12 not valid.

Rather than have mac_var_to_mode() return the first reasonable mode it
finds, have it return the mode that is closest to the requested one (or
the mode with the closest longer pixel clock period if there is no exact
match).

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
drivers/video/macmodes.c