Lines Matching refs:par

273 	struct uvesafb_par *par = info->par;  in uvesafb_setup_var()  local
281 var->yres_virtual = (par->ypan) ? in uvesafb_setup_var()
313 static int uvesafb_vbe_find_mode(struct uvesafb_par *par, in uvesafb_vbe_find_mode() argument
318 for (i = 0; i < par->vbe_modes_cnt; i++) { in uvesafb_vbe_find_mode()
319 h = abs(par->vbe_modes[i].x_res - xres) + in uvesafb_vbe_find_mode()
320 abs(par->vbe_modes[i].y_res - yres) + in uvesafb_vbe_find_mode()
321 abs(depth - par->vbe_modes[i].depth); in uvesafb_vbe_find_mode()
330 if (h < d || (h == d && par->vbe_modes[i].depth > depth)) { in uvesafb_vbe_find_mode()
338 par->vbe_modes[match].depth != depth) in uvesafb_vbe_find_mode()
350 static u8 *uvesafb_vbe_state_save(struct uvesafb_par *par) in uvesafb_vbe_state_save() argument
356 if (!par->vbe_state_size) in uvesafb_vbe_state_save()
359 state = kmalloc(par->vbe_state_size, GFP_KERNEL); in uvesafb_vbe_state_save()
373 task->t.buf_len = par->vbe_state_size; in uvesafb_vbe_state_save()
389 static void uvesafb_vbe_state_restore(struct uvesafb_par *par, u8 *state_buf) in uvesafb_vbe_state_restore() argument
404 task->t.buf_len = par->vbe_state_size; in uvesafb_vbe_state_restore()
418 struct uvesafb_par *par) in uvesafb_vbe_getinfo() argument
425 task->buf = &par->vbe_ib; in uvesafb_vbe_getinfo()
426 strncpy(par->vbe_ib.vbe_signature, "VBE2", 4); in uvesafb_vbe_getinfo()
436 if (par->vbe_ib.vbe_version < 0x0200) { in uvesafb_vbe_getinfo()
442 if (!par->vbe_ib.mode_list_ptr) { in uvesafb_vbe_getinfo()
454 if (par->vbe_ib.oem_vendor_name_ptr) in uvesafb_vbe_getinfo()
456 ((char *)task->buf) + par->vbe_ib.oem_vendor_name_ptr); in uvesafb_vbe_getinfo()
458 if (par->vbe_ib.oem_product_name_ptr) in uvesafb_vbe_getinfo()
460 ((char *)task->buf) + par->vbe_ib.oem_product_name_ptr); in uvesafb_vbe_getinfo()
462 if (par->vbe_ib.oem_product_rev_ptr) in uvesafb_vbe_getinfo()
464 ((char *)task->buf) + par->vbe_ib.oem_product_rev_ptr); in uvesafb_vbe_getinfo()
466 if (par->vbe_ib.oem_string_ptr) in uvesafb_vbe_getinfo()
468 ((char *)task->buf) + par->vbe_ib.oem_string_ptr); in uvesafb_vbe_getinfo()
470 printk("VBE v%d.%d\n", ((par->vbe_ib.vbe_version & 0xff00) >> 8), in uvesafb_vbe_getinfo()
471 par->vbe_ib.vbe_version & 0xff); in uvesafb_vbe_getinfo()
477 struct uvesafb_par *par) in uvesafb_vbe_getmodes() argument
482 par->vbe_modes_cnt = 0; in uvesafb_vbe_getmodes()
485 mode = (u16 *) (((u8 *)&par->vbe_ib) + par->vbe_ib.mode_list_ptr); in uvesafb_vbe_getmodes()
487 par->vbe_modes_cnt++; in uvesafb_vbe_getmodes()
491 par->vbe_modes = kzalloc(sizeof(struct vbe_mode_ib) * in uvesafb_vbe_getmodes()
492 par->vbe_modes_cnt, GFP_KERNEL); in uvesafb_vbe_getmodes()
493 if (!par->vbe_modes) in uvesafb_vbe_getmodes()
497 mode = (u16 *) (((u8 *)&par->vbe_ib) + par->vbe_ib.mode_list_ptr); in uvesafb_vbe_getmodes()
506 task->buf = par->vbe_modes + off; in uvesafb_vbe_getmodes()
514 par->vbe_modes_cnt--; in uvesafb_vbe_getmodes()
530 par->vbe_modes_cnt--; in uvesafb_vbe_getmodes()
544 if (par->vbe_modes_cnt > 0) in uvesafb_vbe_getmodes()
556 struct uvesafb_par *par) in uvesafb_vbe_getpmi() argument
566 par->pmi_setpal = par->ypan = 0; in uvesafb_vbe_getpmi()
568 par->pmi_base = (u16 *)phys_to_virt(((u32)task->t.regs.es << 4) in uvesafb_vbe_getpmi()
570 par->pmi_start = (u8 *)par->pmi_base + par->pmi_base[1]; in uvesafb_vbe_getpmi()
571 par->pmi_pal = (u8 *)par->pmi_base + par->pmi_base[2]; in uvesafb_vbe_getpmi()
576 "set palette = %p\n", par->pmi_start, in uvesafb_vbe_getpmi()
577 par->pmi_pal); in uvesafb_vbe_getpmi()
579 if (par->pmi_base[3]) { in uvesafb_vbe_getpmi()
581 for (i = par->pmi_base[3]/2; in uvesafb_vbe_getpmi()
582 par->pmi_base[i] != 0xffff; i++) in uvesafb_vbe_getpmi()
583 printk("%x ", par->pmi_base[i]); in uvesafb_vbe_getpmi()
586 if (par->pmi_base[i] != 0xffff) { in uvesafb_vbe_getpmi()
589 par->ypan = par->pmi_setpal = 0; in uvesafb_vbe_getpmi()
610 if (uvesafb_vbe_find_mode(info->par, mode->xres, mode->yres, 8, in uvesafb_is_valid_mode()
619 struct uvesafb_par *par = info->par; in uvesafb_vbe_getedid() local
622 if (noedid || par->vbe_ib.vbe_version < 0x0300) in uvesafb_vbe_getedid()
685 struct uvesafb_par *par = info->par; in uvesafb_vbe_getmonspecs() local
697 par->nocrtc = 1; in uvesafb_vbe_getmonspecs()
717 par->nocrtc = 0; in uvesafb_vbe_getmonspecs()
731 for (i = 0; i < par->vbe_modes_cnt; i++) { in uvesafb_vbe_getmonspecs()
736 mode = &par->vbe_modes[i]; in uvesafb_vbe_getmonspecs()
764 struct uvesafb_par *par) in uvesafb_vbe_getstatesize() argument
785 par->vbe_state_size = 0; in uvesafb_vbe_getstatesize()
789 par->vbe_state_size = 64 * (task->t.regs.ebx & 0xffff); in uvesafb_vbe_getstatesize()
795 struct uvesafb_par *par = info->par; in uvesafb_vbe_init() local
802 err = uvesafb_vbe_getinfo(task, par); in uvesafb_vbe_init()
806 err = uvesafb_vbe_getmodes(task, par); in uvesafb_vbe_init()
810 par->nocrtc = nocrtc; in uvesafb_vbe_init()
812 par->pmi_setpal = pmi_setpal; in uvesafb_vbe_init()
813 par->ypan = ypan; in uvesafb_vbe_init()
815 if (par->pmi_setpal || par->ypan) { in uvesafb_vbe_init()
817 par->pmi_setpal = par->ypan = 0; in uvesafb_vbe_init()
821 uvesafb_vbe_getpmi(task, par); in uvesafb_vbe_init()
826 par->pmi_setpal = par->ypan = 0; in uvesafb_vbe_init()
831 uvesafb_vbe_getstatesize(task, par); in uvesafb_vbe_init()
842 struct uvesafb_par *par = info->par; in uvesafb_vbe_init_mode() local
847 for (i = 0; i < par->vbe_modes_cnt; i++) { in uvesafb_vbe_init_mode()
848 if (par->vbe_modes[i].mode_id == vbemode) { in uvesafb_vbe_init_mode()
851 &par->vbe_modes[modeid]); in uvesafb_vbe_init_mode()
904 modeid = par->vbe_modes[0].mode_id; in uvesafb_vbe_init_mode()
906 &par->vbe_modes[modeid]); in uvesafb_vbe_init_mode()
915 modeid = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres, in uvesafb_vbe_init_mode()
921 uvesafb_setup_var(&info->var, info, &par->vbe_modes[modeid]); in uvesafb_vbe_init_mode()
928 if (par->vbe_ib.vbe_version < 0x0300 || par->nocrtc) in uvesafb_vbe_init_mode()
940 struct uvesafb_par *par = info->par; in uvesafb_setpalette() local
941 int i = par->mode_idx; in uvesafb_setpalette()
954 if (i >= 0 && i < par->vbe_modes_cnt && in uvesafb_setpalette()
955 par->vbe_modes[i].mode_attr & VBE_MODE_VGACOMPAT) { in uvesafb_setpalette()
964 else if (par->pmi_setpal) { in uvesafb_setpalette()
973 "S" (&par->pmi_pal)); /* ESI */ in uvesafb_setpalette()
1094 struct uvesafb_par *par = info->par; in uvesafb_pan_display() local
1102 if (par->pmi_start) { in uvesafb_pan_display()
1110 "D" (&par->pmi_start)); /* EDI */ in uvesafb_pan_display()
1121 struct uvesafb_par *par = info->par; in uvesafb_blank() local
1123 if (par->vbe_ib.capabilities & VBE_CAP_VGACOMPAT) { in uvesafb_blank()
1177 struct uvesafb_par *par = info->par; in uvesafb_open() local
1178 int cnt = atomic_read(&par->ref_count); in uvesafb_open()
1181 if (!cnt && par->vbe_state_size) { in uvesafb_open()
1182 buf = uvesafb_vbe_state_save(par); in uvesafb_open()
1187 par->vbe_state_orig = buf; in uvesafb_open()
1191 atomic_inc(&par->ref_count); in uvesafb_open()
1198 struct uvesafb_par *par = info->par; in uvesafb_release() local
1199 int cnt = atomic_read(&par->ref_count); in uvesafb_release()
1219 uvesafb_vbe_state_restore(par, par->vbe_state_orig); in uvesafb_release()
1221 atomic_dec(&par->ref_count); in uvesafb_release()
1228 struct uvesafb_par *par = info->par; in uvesafb_set_par() local
1238 i = uvesafb_vbe_find_mode(par, info->var.xres, info->var.yres, depth, in uvesafb_set_par()
1241 mode = &par->vbe_modes[i]; in uvesafb_set_par()
1252 if (par->vbe_ib.vbe_version >= 0x0300 && !par->nocrtc && in uvesafb_set_par()
1281 memcpy(&par->crtc, crtc, sizeof(*crtc)); in uvesafb_set_par()
1283 memset(&par->crtc, 0, sizeof(*crtc)); in uvesafb_set_par()
1287 task->buf = &par->crtc; in uvesafb_set_par()
1311 par->mode_idx = i; in uvesafb_set_par()
1314 if (par->vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC && in uvesafb_set_par()
1344 struct uvesafb_par *par = info->par; in uvesafb_check_limits() local
1353 if (par->vbe_ib.vbe_version < 0x0300) { in uvesafb_check_limits()
1379 struct uvesafb_par *par = info->par; in uvesafb_check_var() local
1392 match = uvesafb_vbe_find_mode(par, var->xres, var->yres, depth, in uvesafb_check_var()
1397 mode = &par->vbe_modes[match]; in uvesafb_check_var()
1410 !(par->vbe_modes[match].mode_attr & 0x100)) in uvesafb_check_var()
1414 !(par->vbe_modes[match].mode_attr & 0x200)) in uvesafb_check_var()
1420 var->yres_virtual = (par->ypan) ? in uvesafb_check_var()
1446 struct uvesafb_par *par = info->par; in uvesafb_init_info() local
1449 info->pseudo_palette = ((u8 *)info->par + sizeof(struct uvesafb_par)); 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()
1463 for (i = 0; i < par->vbe_modes_cnt; i++) { in uvesafb_init_info()
1464 h = par->vbe_modes[i].bytes_per_scan_line * in uvesafb_init_info()
1465 par->vbe_modes[i].y_res; in uvesafb_init_info()
1483 size_total = par->vbe_ib.total_memory * 65536; in uvesafb_init_info()
1512 if (par->ypan && info->var.yres_virtual > info->var.yres) { in uvesafb_init_info()
1516 (par->ypan > 1) ? "ywrap" : "ypan", in uvesafb_init_info()
1521 par->ypan = 0; in uvesafb_init_info()
1525 (par->ypan ? FBINFO_HWACCEL_YPAN : 0); in uvesafb_init_info()
1527 if (!par->ypan) in uvesafb_init_info()
1533 struct uvesafb_par *par = info->par; in uvesafb_init_mtrr() local
1550 par->mtrr_handle = rc; in uvesafb_init_mtrr()
1563 struct uvesafb_par *par = info->par; in uvesafb_show_vbe_ver() local
1565 return snprintf(buf, PAGE_SIZE, "%.4x\n", par->vbe_ib.vbe_version); in uvesafb_show_vbe_ver()
1574 struct uvesafb_par *par = info->par; in uvesafb_show_vbe_modes() local
1577 for (i = 0; i < par->vbe_modes_cnt && ret < PAGE_SIZE; i++) { in uvesafb_show_vbe_modes()
1580 par->vbe_modes[i].x_res, par->vbe_modes[i].y_res, in uvesafb_show_vbe_modes()
1581 par->vbe_modes[i].depth, par->vbe_modes[i].mode_id); in uvesafb_show_vbe_modes()
1593 struct uvesafb_par *par = info->par; in uvesafb_show_vendor() local
1595 if (par->vbe_ib.oem_vendor_name_ptr) in uvesafb_show_vendor()
1597 (&par->vbe_ib) + par->vbe_ib.oem_vendor_name_ptr); in uvesafb_show_vendor()
1608 struct uvesafb_par *par = info->par; in uvesafb_show_product_name() local
1610 if (par->vbe_ib.oem_product_name_ptr) in uvesafb_show_product_name()
1612 (&par->vbe_ib) + par->vbe_ib.oem_product_name_ptr); in uvesafb_show_product_name()
1623 struct uvesafb_par *par = info->par; in uvesafb_show_product_rev() local
1625 if (par->vbe_ib.oem_product_rev_ptr) in uvesafb_show_product_rev()
1627 (&par->vbe_ib) + par->vbe_ib.oem_product_rev_ptr); in uvesafb_show_product_rev()
1638 struct uvesafb_par *par = info->par; in uvesafb_show_oem_string() local
1640 if (par->vbe_ib.oem_string_ptr) in uvesafb_show_oem_string()
1642 (char *)(&par->vbe_ib) + par->vbe_ib.oem_string_ptr); in uvesafb_show_oem_string()
1653 struct uvesafb_par *par = info->par; in uvesafb_show_nocrtc() local
1655 return snprintf(buf, PAGE_SIZE, "%d\n", par->nocrtc); in uvesafb_show_nocrtc()
1662 struct uvesafb_par *par = info->par; in uvesafb_store_nocrtc() local
1666 par->nocrtc = 0; in uvesafb_store_nocrtc()
1668 par->nocrtc = 1; in uvesafb_store_nocrtc()
1696 struct uvesafb_par *par; in uvesafb_probe() local
1699 info = framebuffer_alloc(sizeof(*par) + sizeof(u32) * 256, &dev->dev); in uvesafb_probe()
1703 par = info->par; in uvesafb_probe()
1718 mode = &par->vbe_modes[i]; in uvesafb_probe()
1766 par->vbe_ib.total_memory * 64); in uvesafb_probe()
1787 kfree(par->vbe_modes); in uvesafb_probe()
1798 struct uvesafb_par *par = info->par; in uvesafb_remove() local
1804 arch_phys_wc_del(par->mtrr_handle); in uvesafb_remove()
1809 kfree(par->vbe_modes); in uvesafb_remove()
1810 kfree(par->vbe_state_orig); in uvesafb_remove()
1811 kfree(par->vbe_state_saved); in uvesafb_remove()