Lines Matching refs:info

273 		struct fb_info *info, struct vbe_mode_ib *mode)
275 struct uvesafb_par *par = info->par;
284 info->fix.smem_len / mode->bytes_per_scan_line :
430 pr_err("Getting VBE info block failed (eax=0x%x, err=%d)\n",
496 /* Get info about all available modes. */
510 pr_warn("Getting mode info block for mode 0x%x failed (eax=0x%x, err=%d)\n",
573 pr_info("protected mode interface info at %04x:%04x\n",
600 struct fb_info *info)
602 if (info->monspecs.gtf) {
603 fb_videomode_to_var(&info->var, mode);
604 if (fb_validate_mode(&info->var, info))
608 if (uvesafb_vbe_find_mode(info->par, mode->xres, mode->yres, 8,
615 static int uvesafb_vbe_getedid(struct uvesafb_ktask *task, struct fb_info *info)
617 struct uvesafb_par *par = info->par;
657 fb_edid_to_monspecs(task->buf, &info->monspecs);
659 if (info->monspecs.vfmax && info->monspecs.hfmax) {
664 if (info->monspecs.dclkmax == 0)
665 info->monspecs.dclkmax = 300 * 1000000;
666 info->monspecs.gtf = 1;
677 struct fb_info *info)
679 struct uvesafb_par *par = info->par;
682 memset(&info->monspecs, 0, sizeof(info->monspecs));
689 if (uvesafb_vbe_getedid(task, info)) {
690 info->monspecs.gtf = 0;
696 info->monspecs.dclkmax = maxclk * 1000000;
698 info->monspecs.vfmax = maxvf;
700 info->monspecs.hfmax = maxhf * 1000;
706 if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) {
707 info->monspecs.dclkmin = 0;
708 info->monspecs.vfmin = 60;
709 info->monspecs.hfmin = 29000;
710 info->monspecs.gtf = 1;
714 if (info->monspecs.gtf)
716 info->monspecs.vfmax,
717 (int)(info->monspecs.hfmax / 1000),
718 (int)(info->monspecs.dclkmax / 1000000));
734 fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, &var, info);
736 fb_add_videomode(&vmode, &info->modelist);
742 &vesa_modes[i], info))
743 fb_add_videomode(&vesa_modes[i], &info->modelist);
746 for (i = 0; i < info->monspecs.modedb_len; i++) {
747 if (uvesafb_is_valid_mode(&info->monspecs.modedb[i], info))
748 fb_add_videomode(&info->monspecs.modedb[i],
749 &info->modelist);
783 static int uvesafb_vbe_init(struct fb_info *info)
786 struct uvesafb_par *par = info->par;
819 INIT_LIST_HEAD(&info->modelist);
820 uvesafb_vbe_getmonspecs(task, info);
827 static int uvesafb_vbe_init_mode(struct fb_info *info)
832 struct uvesafb_par *par = info->par;
840 uvesafb_setup_var(&info->var, info,
843 &info->var, info);
848 info->var.pixclock = 0;
858 list_for_each(pos, &info->modelist)
868 list_for_each(pos, &info->modelist) {
877 i = fb_find_mode(&info->var, info, mode_option, mode, i,
885 info->var.xres = 640;
886 info->var.yres = 480;
888 fb_find_best_mode(&info->var, &info->modelist);
891 fb_videomode_to_var(&info->var, mode);
894 uvesafb_setup_var(&info->var, info,
897 &info->var, info);
904 modeid = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres,
905 info->var.bits_per_pixel, UVESAFB_EXACT_RES);
910 uvesafb_setup_var(&info->var, info, &par->vbe_modes[modeid]);
919 &info->var, info);
925 int start, struct fb_info *info)
929 struct uvesafb_par *par = info->par;
991 struct fb_info *info)
997 if (regno >= info->cmap.len)
1000 if (info->var.bits_per_pixel == 8) {
1006 err = uvesafb_setpalette(&entry, 1, regno, info);
1008 switch (info->var.bits_per_pixel) {
1010 if (info->var.red.offset == 10) {
1012 ((u32 *) (info->pseudo_palette))[regno] =
1018 ((u32 *) (info->pseudo_palette))[regno] =
1030 ((u32 *)(info->pseudo_palette))[regno] =
1031 (red << info->var.red.offset) |
1032 (green << info->var.green.offset) |
1033 (blue << info->var.blue.offset);
1040 static int uvesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
1046 if (info->var.bits_per_pixel == 8) {
1047 if (cmap->start + cmap->len > info->cmap.start +
1048 info->cmap.len || cmap->start < info->cmap.start)
1062 err = uvesafb_setpalette(entries, cmap->len, cmap->start, info);
1073 0, info);
1080 struct fb_info *info)
1084 struct uvesafb_par *par = info->par;
1086 offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4;
1106 static int uvesafb_blank(int blank, struct fb_info *info)
1111 struct uvesafb_par *par = info->par;
1165 static int uvesafb_open(struct fb_info *info, int user)
1167 struct uvesafb_par *par = info->par;
1185 static int uvesafb_release(struct fb_info *info, int user)
1188 struct uvesafb_par *par = info->par;
1216 static int uvesafb_set_par(struct fb_info *info)
1218 struct uvesafb_par *par = info->par;
1222 int i, err = 0, depth = info->var.bits_per_pixel;
1225 depth = info->var.red.length + info->var.green.length +
1226 info->var.blue.length;
1228 i = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres, depth,
1243 info->var.pixclock != 0) {
1251 crtc->horiz_start = info->var.xres + info->var.right_margin;
1252 crtc->horiz_end = crtc->horiz_start + info->var.hsync_len;
1253 crtc->horiz_total = crtc->horiz_end + info->var.left_margin;
1255 crtc->vert_start = info->var.yres + info->var.lower_margin;
1256 crtc->vert_end = crtc->vert_start + info->var.vsync_len;
1257 crtc->vert_total = crtc->vert_end + info->var.upper_margin;
1259 crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000;
1263 if (info->var.vmode & FB_VMODE_DOUBLE)
1265 if (info->var.vmode & FB_VMODE_INTERLACED)
1267 if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
1269 if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
1291 info->var.pixclock = 0;
1318 info->fix.visual = (info->var.bits_per_pixel == 8) ?
1320 info->fix.line_length = mode->bytes_per_scan_line;
1330 struct fb_info *info)
1333 struct uvesafb_par *par = info->par;
1343 fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info);
1347 if (!fb_validate_mode(var, info))
1350 mode = fb_find_best_mode(var, &info->modelist);
1359 if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info))
1366 struct fb_info *info)
1368 struct uvesafb_par *par = info->par;
1387 uvesafb_setup_var(var, info, mode);
1394 if (var->yres * mode->bytes_per_scan_line > info->fix.smem_len
1395 && info->fix.smem_len)
1406 uvesafb_check_limits(var, info);
1410 info->fix.smem_len / mode->bytes_per_scan_line :
1428 static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode)
1433 struct uvesafb_par *par = info->par;
1436 info->pseudo_palette = ((u8 *)info->par + sizeof(struct uvesafb_par));
1437 info->fix = uvesafb_fix;
1438 info->fix.ypanstep = par->ypan ? 1 : 0;
1439 info->fix.ywrapstep = (par->ypan > 1) ? 1 : 0;
1463 size_vmode = info->var.yres * mode->bytes_per_scan_line;
1489 info->fix.smem_len = size_remap;
1490 info->fix.smem_start = mode->phys_base_ptr;
1496 info->var.yres_virtual = info->fix.smem_len /
1499 if (par->ypan && info->var.yres_virtual > info->var.yres) {
1502 info->var.yres_virtual);
1505 info->var.yres_virtual = info->var.yres;
1509 info->flags = (par->ypan ? FBINFO_HWACCEL_YPAN : 0);
1515 static void uvesafb_init_mtrr(struct fb_info *info)
1517 struct uvesafb_par *par = info->par;
1519 if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) {
1520 int temp_size = info->fix.smem_len;
1529 rc = arch_phys_wc_add(info->fix.smem_start, temp_size);
1538 static void uvesafb_ioremap(struct fb_info *info)
1540 info->screen_base = ioremap_wc(info->fix.smem_start, info->fix.smem_len);
1546 struct fb_info *info = dev_get_drvdata(dev);
1547 struct uvesafb_par *par = info->par;
1557 struct fb_info *info = dev_get_drvdata(dev);
1558 struct uvesafb_par *par = info->par;
1576 struct fb_info *info = dev_get_drvdata(dev);
1577 struct uvesafb_par *par = info->par;
1591 struct fb_info *info = dev_get_drvdata(dev);
1592 struct uvesafb_par *par = info->par;
1606 struct fb_info *info = dev_get_drvdata(dev);
1607 struct uvesafb_par *par = info->par;
1621 struct fb_info *info = dev_get_drvdata(dev);
1622 struct uvesafb_par *par = info->par;
1636 struct fb_info *info = dev_get_drvdata(dev);
1637 struct uvesafb_par *par = info->par;
1645 struct fb_info *info = dev_get_drvdata(dev);
1646 struct uvesafb_par *par = info->par;
1678 struct fb_info *info;
1683 info = framebuffer_alloc(sizeof(*par) + sizeof(u32) * 256, &dev->dev);
1684 if (!info)
1687 par = info->par;
1689 err = uvesafb_vbe_init(info);
1695 info->fbops = &uvesafb_ops;
1697 i = uvesafb_vbe_init_mode(info);
1705 if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
1710 uvesafb_init_info(info, mode);
1718 if (!request_mem_region(info->fix.smem_start, info->fix.smem_len,
1721 info->fix.smem_start);
1726 uvesafb_init_mtrr(info);
1727 uvesafb_ioremap(info);
1729 if (!info->screen_base) {
1731 info->fix.smem_len, info->fix.smem_start);
1736 platform_set_drvdata(dev, info);
1738 if (register_framebuffer(info) < 0) {
1745 info->fix.smem_start, info->screen_base,
1746 info->fix.smem_len / 1024, par->vbe_ib.total_memory * 64);
1747 fb_info(info, "%s frame buffer device\n", info->fix.id);
1751 fb_warn(info, "failed to register attributes\n");
1756 iounmap(info->screen_base);
1759 release_mem_region(info->fix.smem_start, info->fix.smem_len);
1763 if (!list_empty(&info->modelist))
1764 fb_destroy_modelist(&info->modelist);
1765 fb_destroy_modedb(info->monspecs.modedb);
1766 fb_dealloc_cmap(&info->cmap);
1770 framebuffer_release(info);
1776 struct fb_info *info = platform_get_drvdata(dev);
1777 struct uvesafb_par *par = info->par;
1780 unregister_framebuffer(info);
1782 iounmap(info->screen_base);
1784 release_mem_region(info->fix.smem_start, info->fix.smem_len);
1785 fb_destroy_modedb(info->monspecs.modedb);
1786 fb_dealloc_cmap(&info->cmap);
1792 framebuffer_release(info);