Lines Matching refs:info

271 		struct fb_info *info, struct vbe_mode_ib *mode)  in uvesafb_setup_var()  argument
273 struct uvesafb_par *par = info->par; in uvesafb_setup_var()
282 info->fix.smem_len / mode->bytes_per_scan_line : in uvesafb_setup_var()
602 struct fb_info *info) in uvesafb_is_valid_mode() argument
604 if (info->monspecs.gtf) { in uvesafb_is_valid_mode()
605 fb_videomode_to_var(&info->var, mode); in uvesafb_is_valid_mode()
606 if (fb_validate_mode(&info->var, info)) in uvesafb_is_valid_mode()
610 if (uvesafb_vbe_find_mode(info->par, mode->xres, mode->yres, 8, in uvesafb_is_valid_mode()
617 static int uvesafb_vbe_getedid(struct uvesafb_ktask *task, struct fb_info *info) in uvesafb_vbe_getedid() argument
619 struct uvesafb_par *par = info->par; in uvesafb_vbe_getedid()
663 fb_edid_to_monspecs(task->buf, &info->monspecs); in uvesafb_vbe_getedid()
665 if (info->monspecs.vfmax && info->monspecs.hfmax) { in uvesafb_vbe_getedid()
670 if (info->monspecs.dclkmax == 0) in uvesafb_vbe_getedid()
671 info->monspecs.dclkmax = 300 * 1000000; in uvesafb_vbe_getedid()
672 info->monspecs.gtf = 1; in uvesafb_vbe_getedid()
683 struct fb_info *info) in uvesafb_vbe_getmonspecs() argument
685 struct uvesafb_par *par = info->par; in uvesafb_vbe_getmonspecs()
688 memset(&info->monspecs, 0, sizeof(info->monspecs)); in uvesafb_vbe_getmonspecs()
695 if (uvesafb_vbe_getedid(task, info)) { in uvesafb_vbe_getmonspecs()
696 info->monspecs.gtf = 0; in uvesafb_vbe_getmonspecs()
702 info->monspecs.dclkmax = maxclk * 1000000; in uvesafb_vbe_getmonspecs()
704 info->monspecs.vfmax = maxvf; in uvesafb_vbe_getmonspecs()
706 info->monspecs.hfmax = maxhf * 1000; in uvesafb_vbe_getmonspecs()
712 if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) { in uvesafb_vbe_getmonspecs()
713 info->monspecs.dclkmin = 0; in uvesafb_vbe_getmonspecs()
714 info->monspecs.vfmin = 60; in uvesafb_vbe_getmonspecs()
715 info->monspecs.hfmin = 29000; in uvesafb_vbe_getmonspecs()
716 info->monspecs.gtf = 1; in uvesafb_vbe_getmonspecs()
720 if (info->monspecs.gtf) in uvesafb_vbe_getmonspecs()
723 "clk = %d MHz\n", info->monspecs.vfmax, in uvesafb_vbe_getmonspecs()
724 (int)(info->monspecs.hfmax / 1000), in uvesafb_vbe_getmonspecs()
725 (int)(info->monspecs.dclkmax / 1000000)); in uvesafb_vbe_getmonspecs()
742 fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, &var, info); in uvesafb_vbe_getmonspecs()
744 fb_add_videomode(&vmode, &info->modelist); in uvesafb_vbe_getmonspecs()
750 &vesa_modes[i], info)) in uvesafb_vbe_getmonspecs()
751 fb_add_videomode(&vesa_modes[i], &info->modelist); in uvesafb_vbe_getmonspecs()
754 for (i = 0; i < info->monspecs.modedb_len; i++) { in uvesafb_vbe_getmonspecs()
755 if (uvesafb_is_valid_mode(&info->monspecs.modedb[i], info)) in uvesafb_vbe_getmonspecs()
756 fb_add_videomode(&info->monspecs.modedb[i], in uvesafb_vbe_getmonspecs()
757 &info->modelist); in uvesafb_vbe_getmonspecs()
792 static int uvesafb_vbe_init(struct fb_info *info) in uvesafb_vbe_init() argument
795 struct uvesafb_par *par = info->par; in uvesafb_vbe_init()
829 INIT_LIST_HEAD(&info->modelist); in uvesafb_vbe_init()
830 uvesafb_vbe_getmonspecs(task, info); in uvesafb_vbe_init()
837 static int uvesafb_vbe_init_mode(struct fb_info *info) in uvesafb_vbe_init_mode() argument
842 struct uvesafb_par *par = info->par; in uvesafb_vbe_init_mode()
850 uvesafb_setup_var(&info->var, info, in uvesafb_vbe_init_mode()
853 &info->var, info); in uvesafb_vbe_init_mode()
858 info->var.pixclock = 0; in uvesafb_vbe_init_mode()
869 list_for_each(pos, &info->modelist) in uvesafb_vbe_init_mode()
879 list_for_each(pos, &info->modelist) { in uvesafb_vbe_init_mode()
888 i = fb_find_mode(&info->var, info, mode_option, mode, i, in uvesafb_vbe_init_mode()
896 info->var.xres = 640; in uvesafb_vbe_init_mode()
897 info->var.yres = 480; in uvesafb_vbe_init_mode()
899 fb_find_best_mode(&info->var, &info->modelist); in uvesafb_vbe_init_mode()
902 fb_videomode_to_var(&info->var, mode); in uvesafb_vbe_init_mode()
905 uvesafb_setup_var(&info->var, info, in uvesafb_vbe_init_mode()
908 &info->var, info); in uvesafb_vbe_init_mode()
915 modeid = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres, in uvesafb_vbe_init_mode()
916 info->var.bits_per_pixel, UVESAFB_EXACT_RES); in uvesafb_vbe_init_mode()
921 uvesafb_setup_var(&info->var, info, &par->vbe_modes[modeid]); in uvesafb_vbe_init_mode()
930 &info->var, info); in uvesafb_vbe_init_mode()
936 int start, struct fb_info *info) in uvesafb_setpalette() argument
940 struct uvesafb_par *par = info->par; in uvesafb_setpalette()
1002 struct fb_info *info) in uvesafb_setcolreg() argument
1008 if (regno >= info->cmap.len) in uvesafb_setcolreg()
1011 if (info->var.bits_per_pixel == 8) { in uvesafb_setcolreg()
1017 err = uvesafb_setpalette(&entry, 1, regno, info); in uvesafb_setcolreg()
1019 switch (info->var.bits_per_pixel) { in uvesafb_setcolreg()
1021 if (info->var.red.offset == 10) { in uvesafb_setcolreg()
1023 ((u32 *) (info->pseudo_palette))[regno] = in uvesafb_setcolreg()
1029 ((u32 *) (info->pseudo_palette))[regno] = in uvesafb_setcolreg()
1041 ((u32 *)(info->pseudo_palette))[regno] = in uvesafb_setcolreg()
1042 (red << info->var.red.offset) | in uvesafb_setcolreg()
1043 (green << info->var.green.offset) | in uvesafb_setcolreg()
1044 (blue << info->var.blue.offset); in uvesafb_setcolreg()
1051 static int uvesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info) in uvesafb_setcmap() argument
1057 if (info->var.bits_per_pixel == 8) { in uvesafb_setcmap()
1058 if (cmap->start + cmap->len > info->cmap.start + in uvesafb_setcmap()
1059 info->cmap.len || cmap->start < info->cmap.start) in uvesafb_setcmap()
1072 err = uvesafb_setpalette(entries, cmap->len, cmap->start, info); in uvesafb_setcmap()
1083 0, info); in uvesafb_setcmap()
1090 struct fb_info *info) in uvesafb_pan_display() argument
1094 struct uvesafb_par *par = info->par; in uvesafb_pan_display()
1096 offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4; in uvesafb_pan_display()
1116 static int uvesafb_blank(int blank, struct fb_info *info) in uvesafb_blank() argument
1121 struct uvesafb_par *par = info->par; in uvesafb_blank()
1175 static int uvesafb_open(struct fb_info *info, int user) in uvesafb_open() argument
1177 struct uvesafb_par *par = info->par; in uvesafb_open()
1195 static int uvesafb_release(struct fb_info *info, int user) in uvesafb_release() argument
1198 struct uvesafb_par *par = info->par; in uvesafb_release()
1226 static int uvesafb_set_par(struct fb_info *info) in uvesafb_set_par() argument
1228 struct uvesafb_par *par = info->par; in uvesafb_set_par()
1232 int i, err = 0, depth = info->var.bits_per_pixel; in uvesafb_set_par()
1235 depth = info->var.red.length + info->var.green.length + in uvesafb_set_par()
1236 info->var.blue.length; in uvesafb_set_par()
1238 i = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres, depth, in uvesafb_set_par()
1253 info->var.pixclock != 0) { in uvesafb_set_par()
1261 crtc->horiz_start = info->var.xres + info->var.right_margin; in uvesafb_set_par()
1262 crtc->horiz_end = crtc->horiz_start + info->var.hsync_len; in uvesafb_set_par()
1263 crtc->horiz_total = crtc->horiz_end + info->var.left_margin; in uvesafb_set_par()
1265 crtc->vert_start = info->var.yres + info->var.lower_margin; in uvesafb_set_par()
1266 crtc->vert_end = crtc->vert_start + info->var.vsync_len; in uvesafb_set_par()
1267 crtc->vert_total = crtc->vert_end + info->var.upper_margin; in uvesafb_set_par()
1269 crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000; in uvesafb_set_par()
1273 if (info->var.vmode & FB_VMODE_DOUBLE) in uvesafb_set_par()
1275 if (info->var.vmode & FB_VMODE_INTERLACED) in uvesafb_set_par()
1277 if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) in uvesafb_set_par()
1279 if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT)) in uvesafb_set_par()
1302 info->var.pixclock = 0; in uvesafb_set_par()
1329 info->fix.visual = (info->var.bits_per_pixel == 8) ? in uvesafb_set_par()
1331 info->fix.line_length = mode->bytes_per_scan_line; in uvesafb_set_par()
1341 struct fb_info *info) in uvesafb_check_limits() argument
1344 struct uvesafb_par *par = info->par; in uvesafb_check_limits()
1354 fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info); in uvesafb_check_limits()
1358 if (!fb_validate_mode(var, info)) in uvesafb_check_limits()
1361 mode = fb_find_best_mode(var, &info->modelist); in uvesafb_check_limits()
1370 if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info)) in uvesafb_check_limits()
1377 struct fb_info *info) in uvesafb_check_var() argument
1379 struct uvesafb_par *par = info->par; in uvesafb_check_var()
1398 uvesafb_setup_var(var, info, mode); in uvesafb_check_var()
1405 if (var->yres * mode->bytes_per_scan_line > info->fix.smem_len in uvesafb_check_var()
1406 && info->fix.smem_len) in uvesafb_check_var()
1417 uvesafb_check_limits(var, info); in uvesafb_check_var()
1421 info->fix.smem_len / mode->bytes_per_scan_line : in uvesafb_check_var()
1441 static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode) in uvesafb_init_info() argument
1446 struct uvesafb_par *par = info->par; in uvesafb_init_info()
1449 info->pseudo_palette = ((u8 *)info->par + sizeof(struct uvesafb_par)); in uvesafb_init_info()
1450 info->fix = uvesafb_fix; in uvesafb_init_info()
1451 info->fix.ypanstep = par->ypan ? 1 : 0; in uvesafb_init_info()
1452 info->fix.ywrapstep = (par->ypan > 1) ? 1 : 0; in uvesafb_init_info()
1456 info->fbops->fb_blank = NULL; in uvesafb_init_info()
1476 size_vmode = info->var.yres * mode->bytes_per_scan_line; in uvesafb_init_info()
1502 info->fix.smem_len = size_remap; in uvesafb_init_info()
1503 info->fix.smem_start = mode->phys_base_ptr; in uvesafb_init_info()
1509 info->var.yres_virtual = info->fix.smem_len / in uvesafb_init_info()
1512 if (par->ypan && info->var.yres_virtual > info->var.yres) { in uvesafb_init_info()
1517 info->var.yres_virtual); in uvesafb_init_info()
1520 info->var.yres_virtual = info->var.yres; in uvesafb_init_info()
1524 info->flags = FBINFO_FLAG_DEFAULT | in uvesafb_init_info()
1528 info->fbops->fb_pan_display = NULL; in uvesafb_init_info()
1531 static void uvesafb_init_mtrr(struct fb_info *info) in uvesafb_init_mtrr() argument
1533 struct uvesafb_par *par = info->par; in uvesafb_init_mtrr()
1535 if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) { in uvesafb_init_mtrr()
1536 int temp_size = info->fix.smem_len; in uvesafb_init_mtrr()
1545 rc = arch_phys_wc_add(info->fix.smem_start, temp_size); in uvesafb_init_mtrr()
1554 static void uvesafb_ioremap(struct fb_info *info) in uvesafb_ioremap() argument
1556 info->screen_base = ioremap_wc(info->fix.smem_start, info->fix.smem_len); in uvesafb_ioremap()
1562 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_vbe_ver() local
1563 struct uvesafb_par *par = info->par; in uvesafb_show_vbe_ver()
1573 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_vbe_modes() local
1574 struct uvesafb_par *par = info->par; in uvesafb_show_vbe_modes()
1592 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_vendor() local
1593 struct uvesafb_par *par = info->par; in uvesafb_show_vendor()
1607 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_product_name() local
1608 struct uvesafb_par *par = info->par; in uvesafb_show_product_name()
1622 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_product_rev() local
1623 struct uvesafb_par *par = info->par; in uvesafb_show_product_rev()
1637 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_oem_string() local
1638 struct uvesafb_par *par = info->par; in uvesafb_show_oem_string()
1652 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_show_nocrtc() local
1653 struct uvesafb_par *par = info->par; in uvesafb_show_nocrtc()
1661 struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); in uvesafb_store_nocrtc() local
1662 struct uvesafb_par *par = info->par; in uvesafb_store_nocrtc()
1694 struct fb_info *info; in uvesafb_probe() local
1699 info = framebuffer_alloc(sizeof(*par) + sizeof(u32) * 256, &dev->dev); in uvesafb_probe()
1700 if (!info) in uvesafb_probe()
1703 par = info->par; in uvesafb_probe()
1705 err = uvesafb_vbe_init(info); in uvesafb_probe()
1711 info->fbops = &uvesafb_ops; in uvesafb_probe()
1713 i = uvesafb_vbe_init_mode(info); in uvesafb_probe()
1721 if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) { in uvesafb_probe()
1726 uvesafb_init_info(info, mode); in uvesafb_probe()
1734 if (!request_mem_region(info->fix.smem_start, info->fix.smem_len, in uvesafb_probe()
1737 "0x%lx\n", info->fix.smem_start); in uvesafb_probe()
1742 uvesafb_init_mtrr(info); in uvesafb_probe()
1743 uvesafb_ioremap(info); in uvesafb_probe()
1745 if (!info->screen_base) { in uvesafb_probe()
1749 info->fix.smem_len, info->fix.smem_start); in uvesafb_probe()
1754 platform_set_drvdata(dev, info); in uvesafb_probe()
1756 if (register_framebuffer(info) < 0) { in uvesafb_probe()
1764 "using %dk, total %dk\n", info->fix.smem_start, in uvesafb_probe()
1765 info->screen_base, info->fix.smem_len/1024, in uvesafb_probe()
1767 fb_info(info, "%s frame buffer device\n", info->fix.id); in uvesafb_probe()
1771 fb_warn(info, "failed to register attributes\n"); in uvesafb_probe()
1776 iounmap(info->screen_base); in uvesafb_probe()
1778 release_mem_region(info->fix.smem_start, info->fix.smem_len); in uvesafb_probe()
1782 if (!list_empty(&info->modelist)) in uvesafb_probe()
1783 fb_destroy_modelist(&info->modelist); in uvesafb_probe()
1784 fb_destroy_modedb(info->monspecs.modedb); in uvesafb_probe()
1785 fb_dealloc_cmap(&info->cmap); in uvesafb_probe()
1789 framebuffer_release(info); in uvesafb_probe()
1795 struct fb_info *info = platform_get_drvdata(dev); in uvesafb_remove() local
1797 if (info) { in uvesafb_remove()
1798 struct uvesafb_par *par = info->par; in uvesafb_remove()
1801 unregister_framebuffer(info); in uvesafb_remove()
1803 iounmap(info->screen_base); in uvesafb_remove()
1805 release_mem_region(info->fix.smem_start, info->fix.smem_len); in uvesafb_remove()
1806 fb_destroy_modedb(info->monspecs.modedb); in uvesafb_remove()
1807 fb_dealloc_cmap(&info->cmap); in uvesafb_remove()
1813 framebuffer_release(info); in uvesafb_remove()