224,7 → 224,6 |
|
static int vesafb_set_par(struct fb_info *info) |
{ |
|
ModeInfoBlock ModeInfo; |
int wx,wy,bpp,mode; |
int video_cmap_len; |
237,33 → 236,33 |
if (mode == -1) return -1; |
|
screen_info.lfb_base = vbe_getmodeinfo(&ModeInfo,mode); |
|
screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB; |
|
if (screen_info.orig_video_isVGA != VIDEO_TYPE_VLFB) |
return -ENXIO; |
|
screen_info.lfb_depth = ModeInfo.BitsPerPixel; |
screen_info.lfb_width = ModeInfo.XResolution; |
screen_info.lfb_height = ModeInfo.YResolution; |
screen_info.lfb_linelength = ModeInfo.BytesPerScanLine; |
screen_info.lfb_size = VbeInfo.TotalMemory; |
screen_info.pages = ModeInfo.NumberOfImagePages; |
|
screen_info.vesapm_seg = 0; |
screen_info.vesapm_off = 0; |
|
screen_info.red_pos = ModeInfo.RedFieldPosition; |
screen_info.red_size = ModeInfo.RedMaskSize; |
screen_info.green_pos = ModeInfo.GreenFieldPosition; |
screen_info.green_size = ModeInfo.GreenMaskSize; |
screen_info.blue_pos = ModeInfo.BlueFieldPosition; |
screen_info.blue_size = ModeInfo.BlueMaskSize; |
screen_info.rsvd_pos = ModeInfo.RsvdFieldPosition; |
screen_info.rsvd_size = ModeInfo.RsvdMaskSize; |
|
vbe_setmode(mode); |
|
screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB; |
|
if (screen_info.orig_video_isVGA != VIDEO_TYPE_VLFB) |
return -ENXIO; |
|
screen_info.lfb_depth = ModeInfo.BitsPerPixel; |
screen_info.lfb_width = ModeInfo.XResolution; |
screen_info.lfb_height = ModeInfo.YResolution; |
screen_info.lfb_linelength = ModeInfo.BytesPerScanLine; |
screen_info.lfb_size = VbeInfo.TotalMemory; |
screen_info.pages = ModeInfo.NumberOfImagePages; |
|
screen_info.vesapm_seg = 0; |
screen_info.vesapm_off = 0; |
|
screen_info.red_pos = ModeInfo.RedFieldPosition; |
screen_info.red_size = ModeInfo.RedMaskSize; |
screen_info.green_pos = ModeInfo.GreenFieldPosition; |
screen_info.green_size = ModeInfo.GreenMaskSize; |
screen_info.blue_pos = ModeInfo.BlueFieldPosition; |
screen_info.blue_size = ModeInfo.BlueMaskSize; |
screen_info.rsvd_pos = ModeInfo.RsvdFieldPosition; |
screen_info.rsvd_size = ModeInfo.RsvdMaskSize; |
|
vbe_setmode(mode); |
|
info->fix.smem_start = screen_info.lfb_base; |
info->var.bits_per_pixel = screen_info.lfb_depth; |
if (15 == info->var.bits_per_pixel) |
505,7 → 504,7 |
/* Find the largest power-of-two */ |
while (temp_size & (temp_size - 1)) |
temp_size &= (temp_size - 1); |
|
|
/* Try and find a power of two to add */ |
while (temp_size && mtrr_add(vesafb_fix.smem_start, temp_size, MTRR_TYPE_WRCOMB, 1)==-EINVAL) { |
temp_size >>= 1; |