Lines Matching refs:info
302 static int nvidia_calc_regs(struct fb_info *info) in nvidia_calc_regs() argument
304 struct nvidia_par *par = info->par; in nvidia_calc_regs()
306 int i, depth = fb_get_color_depth(&info->var, &info->fix); in nvidia_calc_regs()
307 int h_display = info->var.xres / 8 - 1; in nvidia_calc_regs()
308 int h_start = (info->var.xres + info->var.right_margin) / 8 - 1; in nvidia_calc_regs()
309 int h_end = (info->var.xres + info->var.right_margin + in nvidia_calc_regs()
310 info->var.hsync_len) / 8 - 1; in nvidia_calc_regs()
311 int h_total = (info->var.xres + info->var.right_margin + in nvidia_calc_regs()
312 info->var.hsync_len + info->var.left_margin) / 8 - 5; in nvidia_calc_regs()
315 int v_display = info->var.yres - 1; in nvidia_calc_regs()
316 int v_start = info->var.yres + info->var.lower_margin - 1; in nvidia_calc_regs()
317 int v_end = (info->var.yres + info->var.lower_margin + in nvidia_calc_regs()
318 info->var.vsync_len) - 1; in nvidia_calc_regs()
319 int v_total = (info->var.yres + info->var.lower_margin + in nvidia_calc_regs()
320 info->var.vsync_len + info->var.upper_margin) - 2; in nvidia_calc_regs()
328 if (info->var.vmode & FB_VMODE_INTERLACED) in nvidia_calc_regs()
359 | ((info->var.vmode & FB_VMODE_DOUBLE) ? 0x80 : 0x00); in nvidia_calc_regs()
363 state->crtc[0x13] = ((info->var.xres_virtual / 8) * in nvidia_calc_regs()
364 (info->var.bits_per_pixel / 8)); in nvidia_calc_regs()
389 if (info->var.vmode & FB_VMODE_INTERLACED) { in nvidia_calc_regs()
407 par->CURSOR = (volatile u32 __iomem *)(info->screen_base + in nvidia_calc_regs()
410 if (info->var.sync & FB_SYNC_HOR_HIGH_ACT) in nvidia_calc_regs()
414 if (info->var.sync & FB_SYNC_VERT_HIGH_ACT) in nvidia_calc_regs()
419 NVCalcStateExt(par, state, i, info->var.xres_virtual, in nvidia_calc_regs()
420 info->var.xres, info->var.yres_virtual, in nvidia_calc_regs()
421 1000000000 / info->var.pixclock, info->var.vmode); in nvidia_calc_regs()
427 if (!par->fpScaler || (par->fpWidth <= info->var.xres) in nvidia_calc_regs()
428 || (par->fpHeight <= info->var.yres)) { in nvidia_calc_regs()
467 if (info->var.vmode & FB_VMODE_DOUBLE) in nvidia_calc_regs()
494 state->displayV = info->var.xres; in nvidia_calc_regs()
499 static void nvidia_init_vga(struct fb_info *info) in nvidia_init_vga() argument
501 struct nvidia_par *par = info->par; in nvidia_init_vga()
534 static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor) in nvidiafb_cursor() argument
536 struct nvidia_par *par = info->par; in nvidiafb_cursor()
557 yy = cursor->image.dy - info->var.yoffset; in nvidiafb_cursor()
558 xx = cursor->image.dx - info->var.xoffset; in nvidiafb_cursor()
592 bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | in nvidiafb_cursor()
593 ((info->cmap.green[bg_idx] & 0xf8) << 2) | in nvidiafb_cursor()
594 ((info->cmap.blue[bg_idx] & 0xf8) >> 3) | 1 << 15; in nvidiafb_cursor()
596 fg = ((info->cmap.red[fg_idx] & 0xf8) << 7) | in nvidiafb_cursor()
597 ((info->cmap.green[fg_idx] & 0xf8) << 2) | in nvidiafb_cursor()
598 ((info->cmap.blue[fg_idx] & 0xf8) >> 3) | 1 << 15; in nvidiafb_cursor()
615 static int nvidiafb_set_par(struct fb_info *info) in nvidiafb_set_par() argument
617 struct nvidia_par *par = info->par; in nvidiafb_set_par()
635 info->fix.visual = (info->var.bits_per_pixel == 8) ? in nvidiafb_set_par()
638 nvidia_init_vga(info); in nvidiafb_set_par()
639 nvidia_calc_regs(info); in nvidiafb_set_par()
665 info->fix.line_length = (info->var.xres_virtual * in nvidiafb_set_par()
666 info->var.bits_per_pixel) >> 3; in nvidiafb_set_par()
667 if (info->var.accel_flags) { in nvidiafb_set_par()
668 info->fbops->fb_imageblit = nvidiafb_imageblit; in nvidiafb_set_par()
669 info->fbops->fb_fillrect = nvidiafb_fillrect; in nvidiafb_set_par()
670 info->fbops->fb_copyarea = nvidiafb_copyarea; in nvidiafb_set_par()
671 info->fbops->fb_sync = nvidiafb_sync; in nvidiafb_set_par()
672 info->pixmap.scan_align = 4; in nvidiafb_set_par()
673 info->flags &= ~FBINFO_HWACCEL_DISABLED; in nvidiafb_set_par()
674 info->flags |= FBINFO_READS_FAST; in nvidiafb_set_par()
675 NVResetGraphics(info); in nvidiafb_set_par()
677 info->fbops->fb_imageblit = cfb_imageblit; in nvidiafb_set_par()
678 info->fbops->fb_fillrect = cfb_fillrect; in nvidiafb_set_par()
679 info->fbops->fb_copyarea = cfb_copyarea; in nvidiafb_set_par()
680 info->fbops->fb_sync = NULL; in nvidiafb_set_par()
681 info->pixmap.scan_align = 1; in nvidiafb_set_par()
682 info->flags |= FBINFO_HWACCEL_DISABLED; in nvidiafb_set_par()
683 info->flags &= ~FBINFO_READS_FAST; in nvidiafb_set_par()
692 btext_update_display(info->fix.smem_start, in nvidiafb_set_par()
693 info->var.xres, info->var.yres, in nvidiafb_set_par()
694 info->var.bits_per_pixel, info->fix.line_length); in nvidiafb_set_par()
704 struct fb_info *info) in nvidiafb_setcolreg() argument
706 struct nvidia_par *par = info->par; in nvidiafb_setcolreg()
710 if (regno >= (1 << info->var.green.length)) in nvidiafb_setcolreg()
713 if (info->var.grayscale) { in nvidiafb_setcolreg()
718 if (regno < 16 && info->fix.visual == FB_VISUAL_DIRECTCOLOR) { in nvidiafb_setcolreg()
719 ((u32 *) info->pseudo_palette)[regno] = in nvidiafb_setcolreg()
720 (regno << info->var.red.offset) | in nvidiafb_setcolreg()
721 (regno << info->var.green.offset) | in nvidiafb_setcolreg()
722 (regno << info->var.blue.offset); in nvidiafb_setcolreg()
725 switch (info->var.bits_per_pixel) { in nvidiafb_setcolreg()
731 if (info->var.green.length == 5) { in nvidiafb_setcolreg()
767 struct fb_info *info) in nvidiafb_check_var() argument
769 struct nvidia_par *par = info->par; in nvidiafb_check_var()
825 if (!info->monspecs.hfmax || !info->monspecs.vfmax || in nvidiafb_check_var()
826 !info->monspecs.dclkmax || !fb_validate_mode(var, info)) in nvidiafb_check_var()
830 if (!mode_valid && info->monspecs.gtf) { in nvidiafb_check_var()
831 if (!fb_get_mode(FB_MAXTIMINGS, 0, var, info)) in nvidiafb_check_var()
838 mode = fb_find_best_mode(var, &info->modelist); in nvidiafb_check_var()
845 if (!mode_valid && info->monspecs.modedb_len) in nvidiafb_check_var()
860 mode = fb_find_best_mode(var, &info->modelist); in nvidiafb_check_var()
878 vramlen = info->screen_size; in nvidiafb_check_var()
920 struct fb_info *info) in nvidiafb_pan_display() argument
922 struct nvidia_par *par = info->par; in nvidiafb_pan_display()
925 total = var->yoffset * info->fix.line_length + var->xoffset; in nvidiafb_pan_display()
932 static int nvidiafb_blank(int blank, struct fb_info *info) in nvidiafb_blank() argument
934 struct nvidia_par *par = info->par; in nvidiafb_blank()
999 static int nvidiafb_open(struct fb_info *info, int user) in nvidiafb_open() argument
1001 struct nvidia_par *par = info->par; in nvidiafb_open()
1012 static int nvidiafb_release(struct fb_info *info, int user) in nvidiafb_release() argument
1014 struct nvidia_par *par = info->par; in nvidiafb_release()
1051 struct fb_info *info = pci_get_drvdata(dev); in nvidiafb_suspend() local
1052 struct nvidia_par *par = info->par; in nvidiafb_suspend()
1060 fb_set_suspend(info, 1); in nvidiafb_suspend()
1061 nvidiafb_blank(FB_BLANK_POWERDOWN, info); in nvidiafb_suspend()
1075 struct fb_info *info = pci_get_drvdata(dev); in nvidiafb_resume() local
1076 struct nvidia_par *par = info->par; in nvidiafb_resume()
1091 nvidiafb_set_par(info); in nvidiafb_resume()
1092 fb_set_suspend (info, 0); in nvidiafb_resume()
1093 nvidiafb_blank(FB_BLANK_UNBLANK, info); in nvidiafb_resume()
1104 static int nvidia_set_fbinfo(struct fb_info *info) in nvidia_set_fbinfo() argument
1106 struct fb_monspecs *specs = &info->monspecs; in nvidia_set_fbinfo()
1108 struct nvidia_par *par = info->par; in nvidia_set_fbinfo()
1112 info->flags = FBINFO_DEFAULT in nvidia_set_fbinfo()
1118 fb_videomode_to_modelist(info->monspecs.modedb, in nvidia_set_fbinfo()
1119 info->monspecs.modedb_len, &info->modelist); in nvidia_set_fbinfo()
1137 mode = fb_find_best_display(specs, &info->modelist); in nvidia_set_fbinfo()
1145 fb_find_mode(&nvidiafb_default_var, info, buf, specs->modedb, in nvidia_set_fbinfo()
1150 fb_find_mode(&nvidiafb_default_var, info, mode_option, in nvidia_set_fbinfo()
1153 info->var = nvidiafb_default_var; in nvidia_set_fbinfo()
1154 info->fix.visual = (info->var.bits_per_pixel == 8) ? in nvidia_set_fbinfo()
1156 info->pseudo_palette = par->pseudo_palette; in nvidia_set_fbinfo()
1157 fb_alloc_cmap(&info->cmap, 256, 0); in nvidia_set_fbinfo()
1158 fb_destroy_modedb(info->monspecs.modedb); in nvidia_set_fbinfo()
1159 info->monspecs.modedb = NULL; in nvidia_set_fbinfo()
1162 lpitch = info->var.xres_virtual * in nvidia_set_fbinfo()
1163 ((info->var.bits_per_pixel + 7) >> 3); in nvidia_set_fbinfo()
1164 info->var.yres_virtual = info->screen_size / lpitch; in nvidia_set_fbinfo()
1166 info->pixmap.scan_align = 4; in nvidia_set_fbinfo()
1167 info->pixmap.buf_align = 4; in nvidia_set_fbinfo()
1168 info->pixmap.access_align = 32; in nvidia_set_fbinfo()
1169 info->pixmap.size = 8 * 1024; in nvidia_set_fbinfo()
1170 info->pixmap.flags = FB_PIXMAP_SYSTEM; in nvidia_set_fbinfo()
1173 info->fbops->fb_cursor = NULL; in nvidia_set_fbinfo()
1175 info->var.accel_flags = (!noaccel); in nvidia_set_fbinfo()
1179 info->fix.accel = FB_ACCEL_NV4; in nvidia_set_fbinfo()
1182 info->fix.accel = FB_ACCEL_NV_10; in nvidia_set_fbinfo()
1185 info->fix.accel = FB_ACCEL_NV_20; in nvidia_set_fbinfo()
1188 info->fix.accel = FB_ACCEL_NV_30; in nvidia_set_fbinfo()
1191 info->fix.accel = FB_ACCEL_NV_40; in nvidia_set_fbinfo()
1197 return nvidiafb_check_var(&info->var, info); in nvidia_set_fbinfo()
1200 static u32 nvidia_get_chipset(struct fb_info *info) in nvidia_get_chipset() argument
1202 struct nvidia_par *par = info->par; in nvidia_get_chipset()
1223 static u32 nvidia_get_arch(struct fb_info *info) in nvidia_get_arch() argument
1225 struct nvidia_par *par = info->par; in nvidia_get_arch()
1278 struct fb_info *info; in nvidiafb_probe() local
1285 info = framebuffer_alloc(sizeof(struct nvidia_par), &pd->dev); in nvidiafb_probe()
1287 if (!info) in nvidiafb_probe()
1290 par = info->par; in nvidiafb_probe()
1292 info->pixmap.addr = kzalloc(8 * 1024, GFP_KERNEL); in nvidiafb_probe()
1294 if (info->pixmap.addr == NULL) in nvidiafb_probe()
1333 par->Chipset = nvidia_get_chipset(info); in nvidiafb_probe()
1334 par->Architecture = nvidia_get_arch(info); in nvidiafb_probe()
1343 if (NVCommonSetup(info)) in nvidiafb_probe()
1364 info->screen_base = ioremap(nvidiafb_fix.smem_start, par->FbMapSize); in nvidiafb_probe()
1365 info->screen_size = par->FbUsableSize; in nvidiafb_probe()
1368 if (!info->screen_base) { in nvidiafb_probe()
1373 par->FbStart = info->screen_base; in nvidiafb_probe()
1390 info->fbops = &nvidia_fb_ops; in nvidiafb_probe()
1391 info->fix = nvidiafb_fix; in nvidiafb_probe()
1393 if (nvidia_set_fbinfo(info) < 0) { in nvidiafb_probe()
1400 pci_set_drvdata(pd, info); in nvidiafb_probe()
1405 if (register_framebuffer(info) < 0) { in nvidiafb_probe()
1413 info->fix.id, in nvidiafb_probe()
1414 par->FbMapSize / (1024 * 1024), info->fix.smem_start); in nvidiafb_probe()
1420 iounmap(info->screen_base); in nvidiafb_probe()
1422 fb_destroy_modedb(info->monspecs.modedb); in nvidiafb_probe()
1429 kfree(info->pixmap.addr); in nvidiafb_probe()
1431 framebuffer_release(info); in nvidiafb_probe()
1438 struct fb_info *info = pci_get_drvdata(pd); in nvidiafb_remove() local
1439 struct nvidia_par *par = info->par; in nvidiafb_remove()
1443 unregister_framebuffer(info); in nvidiafb_remove()
1449 mtrr_del(par->mtrr.vram, info->fix.smem_start, in nvidiafb_remove()
1450 info->fix.smem_len); in nvidiafb_remove()
1453 iounmap(info->screen_base); in nvidiafb_remove()
1454 fb_destroy_modedb(info->monspecs.modedb); in nvidiafb_remove()
1458 kfree(info->pixmap.addr); in nvidiafb_remove()
1459 framebuffer_release(info); in nvidiafb_remove()