В /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes и /sys/class/graphics/fb0/modes нет нужного (1920x1200) разрешения, при video=uvesafb:1920x1200-32,mtrr:3,ywrap выставляется максимально возможное 1600x1200. nVidia Framebuffer выставляет 1920x1200 без проблем, но он не работает вместе с проприетарными дровами. Есть ли способы насильно выставить не поддерживаемое разрешение?
Есть мысль поправить исходники kernel/drivers/video/uvesafb.c
вроде бы эта функция отвечает за расчет поддерживаемых разрешений:
static int uvesafb_vbe_find_mode(struct uvesafb_par *par,
int xres, int yres, int depth, unsigned char flags)
{
int i, match = -1, h = 0, d = 0x7fffffff;
for (i = 0; i < par->vbe_modes_cnt; i++) {
h = abs(par->vbe_modes[i].x_res - xres) +
abs(par->vbe_modes[i].y_res - yres) +
abs(depth - par->vbe_modes[i].depth);
/*
* We have an exact match in terms of resolution
* and depth.
*/
if (h == 0)
return i;
if (h < d || (h == d && par->vbe_modes[i].depth > depth)) {
d = h;
match = i;
}
}
i = 1;
if (flags & UVESAFB_EXACT_DEPTH &&
par->vbe_modes[match].depth != depth)
i = 0;
if (flags & UVESAFB_EXACT_RES && d > 24)
i = 0;
if (i != 0)
return match;
else
return -1;
}
Как сюда вписать 1920x1200?