[PATCH] fbdev: Rearrange mode database entries
Rearrange mode database entries such that preferred timings are entered first, and less preferred timings are entered last. (Detailed, VESA, established/standard). Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
998e6d5116
commit
14c8102ffc
|
@ -538,25 +538,12 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize)
|
||||||
|
|
||||||
*dbsize = 0;
|
*dbsize = 0;
|
||||||
|
|
||||||
DPRINTK(" Supported VESA Modes\n");
|
|
||||||
block = edid + ESTABLISHED_TIMING_1;
|
|
||||||
num += get_est_timing(block, &mode[num]);
|
|
||||||
|
|
||||||
DPRINTK(" Standard Timings\n");
|
|
||||||
block = edid + STD_TIMING_DESCRIPTIONS_START;
|
|
||||||
for (i = 0; i < STD_TIMING; i++, block += STD_TIMING_DESCRIPTION_SIZE)
|
|
||||||
num += get_std_timing(block, &mode[num]);
|
|
||||||
|
|
||||||
DPRINTK(" Detailed Timings\n");
|
DPRINTK(" Detailed Timings\n");
|
||||||
block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
|
block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
|
||||||
for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) {
|
for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) {
|
||||||
int first = 1;
|
int first = 1;
|
||||||
|
|
||||||
if (block[0] == 0x00 && block[1] == 0x00) {
|
if (!(block[0] == 0x00 && block[1] == 0x00)) {
|
||||||
if (block[3] == 0xfa) {
|
|
||||||
num += get_dst_timing(block + 5, &mode[num]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
get_detailed_timing(block, &mode[num]);
|
get_detailed_timing(block, &mode[num]);
|
||||||
if (first) {
|
if (first) {
|
||||||
mode[num].flag |= FB_MODE_IS_FIRST;
|
mode[num].flag |= FB_MODE_IS_FIRST;
|
||||||
|
@ -565,6 +552,21 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize)
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DPRINTK(" Supported VESA Modes\n");
|
||||||
|
block = edid + ESTABLISHED_TIMING_1;
|
||||||
|
num += get_est_timing(block, &mode[num]);
|
||||||
|
|
||||||
|
DPRINTK(" Standard Timings\n");
|
||||||
|
block = edid + STD_TIMING_DESCRIPTIONS_START;
|
||||||
|
for (i = 0; i < STD_TIMING; i++, block += STD_TIMING_DESCRIPTION_SIZE)
|
||||||
|
num += get_std_timing(block, &mode[num]);
|
||||||
|
|
||||||
|
block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
|
||||||
|
for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) {
|
||||||
|
if (block[0] == 0x00 && block[1] == 0x00 && block[3] == 0xfa)
|
||||||
|
num += get_dst_timing(block + 5, &mode[num]);
|
||||||
|
}
|
||||||
|
|
||||||
/* Yikes, EDID data is totally useless */
|
/* Yikes, EDID data is totally useless */
|
||||||
if (!num) {
|
if (!num) {
|
||||||
|
|
Loading…
Reference in New Issue