Lines Matching refs:info

297 static int nvidia_calc_regs(struct fb_info *info)  in nvidia_calc_regs()  argument
299 struct nvidia_par *par = info->par; in nvidia_calc_regs()
301 int i, depth = fb_get_color_depth(&info->var, &info->fix); in nvidia_calc_regs()
302 int h_display = info->var.xres / 8 - 1; in nvidia_calc_regs()
303 int h_start = (info->var.xres + info->var.right_margin) / 8 - 1; in nvidia_calc_regs()
304 int h_end = (info->var.xres + info->var.right_margin + in nvidia_calc_regs()
305 info->var.hsync_len) / 8 - 1; in nvidia_calc_regs()
306 int h_total = (info->var.xres + info->var.right_margin + in nvidia_calc_regs()
307 info->var.hsync_len + info->var.left_margin) / 8 - 5; in nvidia_calc_regs()
310 int v_display = info->var.yres - 1; in nvidia_calc_regs()
311 int v_start = info->var.yres + info->var.lower_margin - 1; in nvidia_calc_regs()
312 int v_end = (info->var.yres + info->var.lower_margin + in nvidia_calc_regs()
313 info->var.vsync_len) - 1; in nvidia_calc_regs()
314 int v_total = (info->var.yres + info->var.lower_margin + in nvidia_calc_regs()
315 info->var.vsync_len + info->var.upper_margin) - 2; in nvidia_calc_regs()
323 if (info->var.vmode & FB_VMODE_INTERLACED) in nvidia_calc_regs()
354 | ((info->var.vmode & FB_VMODE_DOUBLE) ? 0x80 : 0x00); in nvidia_calc_regs()
358 state->crtc[0x13] = ((info->var.xres_virtual / 8) * in nvidia_calc_regs()
359 (info->var.bits_per_pixel / 8)); in nvidia_calc_regs()
384 if (info->var.vmode & FB_VMODE_INTERLACED) { in nvidia_calc_regs()
402 par->CURSOR = (volatile u32 __iomem *)(info->screen_base + in nvidia_calc_regs()
405 if (info->var.sync & FB_SYNC_HOR_HIGH_ACT) in nvidia_calc_regs()
409 if (info->var.sync & FB_SYNC_VERT_HIGH_ACT) in nvidia_calc_regs()
414 NVCalcStateExt(par, state, i, info->var.xres_virtual, in nvidia_calc_regs()
415 info->var.xres, info->var.yres_virtual, in nvidia_calc_regs()
416 1000000000 / info->var.pixclock, info->var.vmode); in nvidia_calc_regs()
422 if (!par->fpScaler || (par->fpWidth <= info->var.xres) in nvidia_calc_regs()
423 || (par->fpHeight <= info->var.yres)) { in nvidia_calc_regs()
462 if (info->var.vmode & FB_VMODE_DOUBLE) in nvidia_calc_regs()
489 state->displayV = info->var.xres; in nvidia_calc_regs()
494 static void nvidia_init_vga(struct fb_info *info) in nvidia_init_vga() argument
496 struct nvidia_par *par = info->par; in nvidia_init_vga()
529 static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor) in nvidiafb_cursor() argument
531 struct nvidia_par *par = info->par; in nvidiafb_cursor()
552 yy = cursor->image.dy - info->var.yoffset; in nvidiafb_cursor()
553 xx = cursor->image.dx - info->var.xoffset; in nvidiafb_cursor()
587 bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | in nvidiafb_cursor()
588 ((info->cmap.green[bg_idx] & 0xf8) << 2) | in nvidiafb_cursor()
589 ((info->cmap.blue[bg_idx] & 0xf8) >> 3) | 1 << 15; in nvidiafb_cursor()
591 fg = ((info->cmap.red[fg_idx] & 0xf8) << 7) | in nvidiafb_cursor()
592 ((info->cmap.green[fg_idx] & 0xf8) << 2) | in nvidiafb_cursor()
593 ((info->cmap.blue[fg_idx] & 0xf8) >> 3) | 1 << 15; in nvidiafb_cursor()
610 static int nvidiafb_set_par(struct fb_info *info) in nvidiafb_set_par() argument
612 struct nvidia_par *par = info->par; in nvidiafb_set_par()
630 info->fix.visual = (info->var.bits_per_pixel == 8) ? in nvidiafb_set_par()
633 nvidia_init_vga(info); in nvidiafb_set_par()
634 nvidia_calc_regs(info); in nvidiafb_set_par()
660 info->fix.line_length = (info->var.xres_virtual * in nvidiafb_set_par()
661 info->var.bits_per_pixel) >> 3; in nvidiafb_set_par()
662 if (info->var.accel_flags) { in nvidiafb_set_par()
663 info->fbops->fb_imageblit = nvidiafb_imageblit; in nvidiafb_set_par()
664 info->fbops->fb_fillrect = nvidiafb_fillrect; in nvidiafb_set_par()
665 info->fbops->fb_copyarea = nvidiafb_copyarea; in nvidiafb_set_par()
666 info->fbops->fb_sync = nvidiafb_sync; in nvidiafb_set_par()
667 info->pixmap.scan_align = 4; in nvidiafb_set_par()
668 info->flags &= ~FBINFO_HWACCEL_DISABLED; in nvidiafb_set_par()
669 info->flags |= FBINFO_READS_FAST; in nvidiafb_set_par()
670 NVResetGraphics(info); in nvidiafb_set_par()
672 info->fbops->fb_imageblit = cfb_imageblit; in nvidiafb_set_par()
673 info->fbops->fb_fillrect = cfb_fillrect; in nvidiafb_set_par()
674 info->fbops->fb_copyarea = cfb_copyarea; in nvidiafb_set_par()
675 info->fbops->fb_sync = NULL; in nvidiafb_set_par()
676 info->pixmap.scan_align = 1; in nvidiafb_set_par()
677 info->flags |= FBINFO_HWACCEL_DISABLED; in nvidiafb_set_par()
678 info->flags &= ~FBINFO_READS_FAST; in nvidiafb_set_par()
687 btext_update_display(info->fix.smem_start, in nvidiafb_set_par()
688 info->var.xres, info->var.yres, in nvidiafb_set_par()
689 info->var.bits_per_pixel, info->fix.line_length); in nvidiafb_set_par()
699 struct fb_info *info) in nvidiafb_setcolreg() argument
701 struct nvidia_par *par = info->par; in nvidiafb_setcolreg()
705 if (regno >= (1 << info->var.green.length)) in nvidiafb_setcolreg()
708 if (info->var.grayscale) { in nvidiafb_setcolreg()
713 if (regno < 16 && info->fix.visual == FB_VISUAL_DIRECTCOLOR) { in nvidiafb_setcolreg()
714 ((u32 *) info->pseudo_palette)[regno] = in nvidiafb_setcolreg()
715 (regno << info->var.red.offset) | in nvidiafb_setcolreg()
716 (regno << info->var.green.offset) | in nvidiafb_setcolreg()
717 (regno << info->var.blue.offset); in nvidiafb_setcolreg()
720 switch (info->var.bits_per_pixel) { in nvidiafb_setcolreg()
726 if (info->var.green.length == 5) { in nvidiafb_setcolreg()
762 struct fb_info *info) in nvidiafb_check_var() argument
764 struct nvidia_par *par = info->par; in nvidiafb_check_var()
820 if (!info->monspecs.hfmax || !info->monspecs.vfmax || in nvidiafb_check_var()
821 !info->monspecs.dclkmax || !fb_validate_mode(var, info)) in nvidiafb_check_var()
825 if (!mode_valid && info->monspecs.gtf) { in nvidiafb_check_var()
826 if (!fb_get_mode(FB_MAXTIMINGS, 0, var, info)) in nvidiafb_check_var()
833 mode = fb_find_best_mode(var, &info->modelist); in nvidiafb_check_var()
840 if (!mode_valid && info->monspecs.modedb_len) in nvidiafb_check_var()
855 mode = fb_find_best_mode(var, &info->modelist); in nvidiafb_check_var()
873 vramlen = info->screen_size; in nvidiafb_check_var()
915 struct fb_info *info) in nvidiafb_pan_display() argument
917 struct nvidia_par *par = info->par; in nvidiafb_pan_display()
920 total = var->yoffset * info->fix.line_length + var->xoffset; in nvidiafb_pan_display()
927 static int nvidiafb_blank(int blank, struct fb_info *info) in nvidiafb_blank() argument
929 struct nvidia_par *par = info->par; in nvidiafb_blank()
994 static int nvidiafb_open(struct fb_info *info, int user) in nvidiafb_open() argument
996 struct nvidia_par *par = info->par; in nvidiafb_open()
1007 static int nvidiafb_release(struct fb_info *info, int user) in nvidiafb_release() argument
1009 struct nvidia_par *par = info->par; in nvidiafb_release()
1046 struct fb_info *info = pci_get_drvdata(dev); in nvidiafb_suspend() local
1047 struct nvidia_par *par = info->par; in nvidiafb_suspend()
1055 fb_set_suspend(info, 1); in nvidiafb_suspend()
1056 nvidiafb_blank(FB_BLANK_POWERDOWN, info); in nvidiafb_suspend()
1070 struct fb_info *info = pci_get_drvdata(dev); in nvidiafb_resume() local
1071 struct nvidia_par *par = info->par; in nvidiafb_resume()
1086 nvidiafb_set_par(info); in nvidiafb_resume()
1087 fb_set_suspend (info, 0); in nvidiafb_resume()
1088 nvidiafb_blank(FB_BLANK_UNBLANK, info); in nvidiafb_resume()
1099 static int nvidia_set_fbinfo(struct fb_info *info) in nvidia_set_fbinfo() argument
1101 struct fb_monspecs *specs = &info->monspecs; in nvidia_set_fbinfo()
1103 struct nvidia_par *par = info->par; in nvidia_set_fbinfo()
1107 info->flags = FBINFO_DEFAULT in nvidia_set_fbinfo()
1113 fb_videomode_to_modelist(info->monspecs.modedb, in nvidia_set_fbinfo()
1114 info->monspecs.modedb_len, &info->modelist); in nvidia_set_fbinfo()
1132 mode = fb_find_best_display(specs, &info->modelist); in nvidia_set_fbinfo()
1140 fb_find_mode(&nvidiafb_default_var, info, buf, specs->modedb, in nvidia_set_fbinfo()
1145 fb_find_mode(&nvidiafb_default_var, info, mode_option, in nvidia_set_fbinfo()
1148 info->var = nvidiafb_default_var; in nvidia_set_fbinfo()
1149 info->fix.visual = (info->var.bits_per_pixel == 8) ? in nvidia_set_fbinfo()
1151 info->pseudo_palette = par->pseudo_palette; in nvidia_set_fbinfo()
1152 fb_alloc_cmap(&info->cmap, 256, 0); in nvidia_set_fbinfo()
1153 fb_destroy_modedb(info->monspecs.modedb); in nvidia_set_fbinfo()
1154 info->monspecs.modedb = NULL; in nvidia_set_fbinfo()
1157 lpitch = info->var.xres_virtual * in nvidia_set_fbinfo()
1158 ((info->var.bits_per_pixel + 7) >> 3); in nvidia_set_fbinfo()
1159 info->var.yres_virtual = info->screen_size / lpitch; in nvidia_set_fbinfo()
1161 info->pixmap.scan_align = 4; in nvidia_set_fbinfo()
1162 info->pixmap.buf_align = 4; in nvidia_set_fbinfo()
1163 info->pixmap.access_align = 32; in nvidia_set_fbinfo()
1164 info->pixmap.size = 8 * 1024; in nvidia_set_fbinfo()
1165 info->pixmap.flags = FB_PIXMAP_SYSTEM; in nvidia_set_fbinfo()
1168 info->fbops->fb_cursor = NULL; in nvidia_set_fbinfo()
1170 info->var.accel_flags = (!noaccel); in nvidia_set_fbinfo()
1174 info->fix.accel = FB_ACCEL_NV4; in nvidia_set_fbinfo()
1177 info->fix.accel = FB_ACCEL_NV_10; in nvidia_set_fbinfo()
1180 info->fix.accel = FB_ACCEL_NV_20; in nvidia_set_fbinfo()
1183 info->fix.accel = FB_ACCEL_NV_30; in nvidia_set_fbinfo()
1186 info->fix.accel = FB_ACCEL_NV_40; in nvidia_set_fbinfo()
1192 return nvidiafb_check_var(&info->var, info); in nvidia_set_fbinfo()
1195 static u32 nvidia_get_chipset(struct fb_info *info) in nvidia_get_chipset() argument
1197 struct nvidia_par *par = info->par; in nvidia_get_chipset()
1218 static u32 nvidia_get_arch(struct fb_info *info) in nvidia_get_arch() argument
1220 struct nvidia_par *par = info->par; in nvidia_get_arch()
1273 struct fb_info *info; in nvidiafb_probe() local
1280 info = framebuffer_alloc(sizeof(struct nvidia_par), &pd->dev); in nvidiafb_probe()
1282 if (!info) in nvidiafb_probe()
1285 par = info->par; in nvidiafb_probe()
1287 info->pixmap.addr = kzalloc(8 * 1024, GFP_KERNEL); in nvidiafb_probe()
1289 if (info->pixmap.addr == NULL) in nvidiafb_probe()
1328 par->Chipset = nvidia_get_chipset(info); in nvidiafb_probe()
1329 par->Architecture = nvidia_get_arch(info); in nvidiafb_probe()
1338 if (NVCommonSetup(info)) in nvidiafb_probe()
1359 info->screen_base = ioremap_wc(nvidiafb_fix.smem_start, in nvidiafb_probe()
1361 info->screen_size = par->FbUsableSize; in nvidiafb_probe()
1364 if (!info->screen_base) { in nvidiafb_probe()
1369 par->FbStart = info->screen_base; in nvidiafb_probe()
1375 info->fbops = &nvidia_fb_ops; in nvidiafb_probe()
1376 info->fix = nvidiafb_fix; in nvidiafb_probe()
1378 if (nvidia_set_fbinfo(info) < 0) { in nvidiafb_probe()
1385 pci_set_drvdata(pd, info); in nvidiafb_probe()
1390 if (register_framebuffer(info) < 0) { in nvidiafb_probe()
1398 info->fix.id, in nvidiafb_probe()
1399 par->FbMapSize / (1024 * 1024), info->fix.smem_start); in nvidiafb_probe()
1405 iounmap(info->screen_base); in nvidiafb_probe()
1407 fb_destroy_modedb(info->monspecs.modedb); in nvidiafb_probe()
1414 kfree(info->pixmap.addr); in nvidiafb_probe()
1416 framebuffer_release(info); in nvidiafb_probe()
1423 struct fb_info *info = pci_get_drvdata(pd); in nvidiafb_remove() local
1424 struct nvidia_par *par = info->par; in nvidiafb_remove()
1428 unregister_framebuffer(info); in nvidiafb_remove()
1432 iounmap(info->screen_base); in nvidiafb_remove()
1433 fb_destroy_modedb(info->monspecs.modedb); in nvidiafb_remove()
1437 kfree(info->pixmap.addr); in nvidiafb_remove()
1438 framebuffer_release(info); in nvidiafb_remove()