Lines Matching +full:0 +full:- +full:1152

35 #define PCI_VENDOR_ID_ST	0x104a
36 #define PCI_DEVICE_ID_STG4000 0x0010
55 .red = { 11, 5, 0 },
56 .green = { 5, 6, 0 },
57 .blue = { 0, 5, 0 },
59 .height = -1,
60 .width = -1,
83 static int nopan = 0;
85 static int nomtrr = 0;
111 0, FB_VMODE_NONINTERLACED
116 0, FB_VMODE_NONINTERLACED
121 0, FB_VMODE_NONINTERLACED
126 0, FB_VMODE_NONINTERLACED
156 0, FB_VMODE_NONINTERLACED
161 0, FB_VMODE_NONINTERLACED
173 /* 1152x864 @ 75Hz */
174 NULL, 75, 1152, 864, KHZ2PICOS(108000),
303 struct kyrofb_info *par = info->par; in kyro_dev_video_mode_set()
309 /* Bring us out of VGA and into Hi-Res mode, if not already. */ in kyro_dev_video_mode_set()
313 info->var.bits_per_pixel, in kyro_dev_video_mode_set()
314 info->var.xres, info->var.yres, in kyro_dev_video_mode_set()
315 par->HSP, par->VSP, &par->PIXCLK) < 0) in kyro_dev_video_mode_set()
316 return -EINVAL; in kyro_dev_video_mode_set()
326 deviceInfo.ulNextFreeVidMem = info->var.xres * info->var.yres * in kyro_dev_video_mode_set()
327 info->var.bits_per_pixel; in kyro_dev_video_mode_set()
328 deviceInfo.ulOverlayOffset = 0; in kyro_dev_video_mode_set()
330 return 0; in kyro_dev_video_mode_set()
339 if (deviceInfo.ulOverlayOffset != 0) in kyro_dev_overlay_create()
344 return -EINVAL; in kyro_dev_overlay_create()
352 if ((offset & 0x1f) != 0) { in kyro_dev_overlay_create()
353 offset = (offset + 32L) & 0xffffffE0L; in kyro_dev_overlay_create()
357 bLinear, offset, &stride, &uvStride) < 0) in kyro_dev_overlay_create()
358 return -EINVAL; in kyro_dev_overlay_create()
365 SetOverlayBlendMode(deviceInfo.pSTGReg, GLOBAL_ALPHA, 0xf, 0x0); in kyro_dev_overlay_create()
367 return 0; in kyro_dev_overlay_create()
372 if (deviceInfo.ulOverlayOffset == 0) in kyro_dev_overlay_viewport_set()
374 return -EINVAL; in kyro_dev_overlay_viewport_set()
376 if (ulWidth == 0 || ulWidth == 0xffffffff || in kyro_dev_overlay_viewport_set()
377 ulHeight == 0 || ulHeight == 0xffffffff || in kyro_dev_overlay_viewport_set()
378 (x < 2 && ulWidth + 2 == 0)) in kyro_dev_overlay_viewport_set()
379 return -EINVAL; in kyro_dev_overlay_viewport_set()
385 x, y, x + ulWidth - 1, y + ulHeight - 1); in kyro_dev_overlay_viewport_set()
391 return 0; in kyro_dev_overlay_viewport_set()
401 struct kyrofb_info *par = info->par; in kyrofb_check_var()
403 if (!var->pixclock) in kyrofb_check_var()
404 return -EINVAL; in kyrofb_check_var()
406 if (var->bits_per_pixel != 16 && var->bits_per_pixel != 32) { in kyrofb_check_var()
407 printk(KERN_WARNING "kyrofb: depth not supported: %u\n", var->bits_per_pixel); in kyrofb_check_var()
408 return -EINVAL; in kyrofb_check_var()
411 switch (var->bits_per_pixel) { in kyrofb_check_var()
413 var->red.offset = 11; in kyrofb_check_var()
414 var->red.length = 5; in kyrofb_check_var()
415 var->green.offset = 5; in kyrofb_check_var()
416 var->green.length = 6; in kyrofb_check_var()
417 var->blue.length = 5; in kyrofb_check_var()
420 var->transp.offset = 24; in kyrofb_check_var()
421 var->red.offset = 16; in kyrofb_check_var()
422 var->green.offset = 8; in kyrofb_check_var()
423 var->blue.offset = 0; in kyrofb_check_var()
425 var->red.length = 8; in kyrofb_check_var()
426 var->green.length = 8; in kyrofb_check_var()
427 var->blue.length = 8; in kyrofb_check_var()
428 var->transp.length = 8; in kyrofb_check_var()
433 var->height = var->width = -1; in kyrofb_check_var()
437 /* par->PIXCLK is in 100Hz units. Convert to picoseconds - in kyrofb_check_var()
445 * and kyro_var. -- PFM. in kyrofb_check_var()
447 // var->pixclock = 1000000000 / (par->PIXCLK / 10); in kyrofb_check_var()
450 * - nobody else does though, the all use pixels and lines in kyrofb_check_var()
457 * from our modedb. -- PFM. in kyrofb_check_var()
459 if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_TEST) in kyrofb_check_var()
460 return 0; in kyrofb_check_var()
462 var->left_margin = par->HBP; in kyrofb_check_var()
463 var->hsync_len = par->HST; in kyrofb_check_var()
464 var->right_margin = par->HFP; in kyrofb_check_var()
466 var->upper_margin = par->VBP; in kyrofb_check_var()
467 var->vsync_len = par->VST; in kyrofb_check_var()
468 var->lower_margin = par->VFP; in kyrofb_check_var()
470 if (par->HSP == 1) in kyrofb_check_var()
471 var->sync |= FB_SYNC_HOR_HIGH_ACT; in kyrofb_check_var()
472 if (par->VSP == 1) in kyrofb_check_var()
473 var->sync |= FB_SYNC_VERT_HIGH_ACT; in kyrofb_check_var()
475 return 0; in kyrofb_check_var()
480 struct kyrofb_info *par = info->par; in kyrofb_set_par()
485 par->XRES = info->var.xres; in kyrofb_set_par()
486 par->YRES = info->var.yres; in kyrofb_set_par()
489 par->PIXDEPTH = info->var.bits_per_pixel; in kyrofb_set_par()
493 lineclock = (info->var.pixclock * (info->var.xres + in kyrofb_set_par()
494 info->var.right_margin + in kyrofb_set_par()
495 info->var.hsync_len + in kyrofb_set_par()
496 info->var.left_margin)) / 1000; in kyrofb_set_par()
499 return -EINVAL; in kyrofb_set_par()
502 frameclock = lineclock * (info->var.yres + in kyrofb_set_par()
503 info->var.lower_margin + in kyrofb_set_par()
504 info->var.vsync_len + in kyrofb_set_par()
505 info->var.upper_margin); in kyrofb_set_par()
508 par->VFREQ = (1000000000 + (frameclock / 2)) / frameclock; in kyrofb_set_par()
509 par->HCLK = (1000000000 + (lineclock / 2)) / lineclock; in kyrofb_set_par()
510 par->PIXCLK = ((1000000000 + (info->var.pixclock / 2)) in kyrofb_set_par()
511 / info->var.pixclock) * 10; in kyrofb_set_par()
514 par->HFP = info->var.right_margin; in kyrofb_set_par()
515 par->HST = info->var.hsync_len; in kyrofb_set_par()
516 par->HBP = info->var.left_margin; in kyrofb_set_par()
517 par->HTot = par->XRES + par->HBP + par->HST + par->HFP; in kyrofb_set_par()
520 par->VFP = info->var.lower_margin; in kyrofb_set_par()
521 par->VST = info->var.vsync_len; in kyrofb_set_par()
522 par->VBP = info->var.upper_margin; in kyrofb_set_par()
523 par->VTot = par->YRES + par->VBP + par->VST + par->VFP; in kyrofb_set_par()
525 par->HSP = (info->var.sync & FB_SYNC_HOR_HIGH_ACT) ? 1 : 0; in kyrofb_set_par()
526 par->VSP = (info->var.sync & FB_SYNC_VERT_HIGH_ACT) ? 1 : 0; in kyrofb_set_par()
531 info->fix.line_length = get_line_length(par->XRES, par->PIXDEPTH); in kyrofb_set_par()
532 info->fix.visual = FB_VISUAL_TRUECOLOR; in kyrofb_set_par()
534 return 0; in kyrofb_set_par()
540 struct kyrofb_info *par = info->par; in kyrofb_setcolreg()
546 switch (info->var.bits_per_pixel) { in kyrofb_setcolreg()
548 par->palette[regno] = in kyrofb_setcolreg()
549 (red & 0xf800) | in kyrofb_setcolreg()
550 ((green & 0xfc00) >> 5) | in kyrofb_setcolreg()
551 ((blue & 0xf800) >> 11); in kyrofb_setcolreg()
555 par->palette[regno] = in kyrofb_setcolreg()
561 return 0; in kyrofb_setcolreg()
570 return 0; in kyrofb_setup()
575 if (strcmp(this_opt, "nopan") == 0) { in kyrofb_setup()
577 } else if (strcmp(this_opt, "nowrap") == 0) { in kyrofb_setup()
579 } else if (strcmp(this_opt, "nomtrr") == 0) { in kyrofb_setup()
586 return 0; in kyrofb_setup()
600 return -EFAULT; in kyrofb_ioctl()
603 ol_create.ulHeight, 0) < 0) { in kyrofb_ioctl()
606 return -EINVAL; in kyrofb_ioctl()
612 return -EFAULT; in kyrofb_ioctl()
617 ol_viewport_set.ySize) != 0) in kyrofb_ioctl()
620 return -EINVAL; in kyrofb_ioctl()
628 return -EINVAL; in kyrofb_ioctl()
632 return -EFAULT; in kyrofb_ioctl()
636 return -EFAULT; in kyrofb_ioctl()
640 return -EFAULT; in kyrofb_ioctl()
644 return 0; in kyrofb_ioctl()
649 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
650 { 0, }
688 info = framebuffer_alloc(sizeof(struct kyrofb_info), &pdev->dev); in kyrofb_probe()
690 return -ENOMEM; in kyrofb_probe()
696 currentpar = info->par; in kyrofb_probe()
698 kyro_fix.smem_start = pci_resource_start(pdev, 0); in kyrofb_probe()
699 kyro_fix.smem_len = pci_resource_len(pdev, 0); in kyrofb_probe()
703 currentpar->regbase = deviceInfo.pSTGReg = in kyrofb_probe()
704 devm_ioremap(&pdev->dev, kyro_fix.mmio_start, in kyrofb_probe()
706 if (!currentpar->regbase) in kyrofb_probe()
709 info->screen_base = devm_ioremap_wc(&pdev->dev, kyro_fix.smem_start, in kyrofb_probe()
711 if (!info->screen_base) in kyrofb_probe()
715 currentpar->wc_cookie = arch_phys_wc_add(kyro_fix.smem_start, in kyrofb_probe()
718 kyro_fix.ypanstep = nopan ? 0 : 1; in kyrofb_probe()
719 kyro_fix.ywrapstep = nowrap ? 0 : 1; in kyrofb_probe()
721 info->fbops = &kyrofb_ops; in kyrofb_probe()
722 info->fix = kyro_fix; in kyrofb_probe()
723 info->pseudo_palette = currentpar->palette; in kyrofb_probe()
727 deviceInfo.ulNextFreeVidMem = 0; in kyrofb_probe()
728 deviceInfo.ulOverlayOffset = 0; in kyrofb_probe()
731 if (!fb_find_mode(&info->var, info, mode_option, kyro_modedb, in kyrofb_probe()
733 info->var = kyro_var; in kyrofb_probe()
735 fb_alloc_cmap(&info->cmap, 256, 0); in kyrofb_probe()
738 kyrofb_check_var(&info->var, info); in kyrofb_probe()
740 size = get_line_length(info->var.xres_virtual, in kyrofb_probe()
741 info->var.bits_per_pixel); in kyrofb_probe()
742 size *= info->var.yres_virtual; in kyrofb_probe()
744 fb_memset_io(info->screen_base, 0, size); in kyrofb_probe()
746 if (register_framebuffer(info) < 0) in kyrofb_probe()
750 info->fix.id, in kyrofb_probe()
751 info->var.xres, info->var.yres, info->var.bits_per_pixel, in kyrofb_probe()
752 size >> 10, (unsigned long)info->fix.smem_len >> 10); in kyrofb_probe()
756 return 0; in kyrofb_probe()
761 return -EINVAL; in kyrofb_probe()
767 struct kyrofb_info *par = info->par; in kyrofb_remove()
776 deviceInfo.ulNextFreeVidMem = 0; in kyrofb_remove()
777 deviceInfo.ulOverlayOffset = 0; in kyrofb_remove()
779 arch_phys_wc_del(par->wc_cookie); in kyrofb_remove()
792 return -ENODEV; in kyrofb_init()
796 return -ENODEV; in kyrofb_init()
813 MODULE_AUTHOR("STMicroelectronics; Paul Mundt <lethal@linux-sh.org>");