Lines Matching refs:info
202 static void neoCalcVCLK(const struct fb_info *info, in neoCalcVCLK() argument
227 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neoCalcVCLK()
228 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neoCalcVCLK()
229 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neoCalcVCLK()
230 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neoCalcVCLK()
443 static void vgaHWRestore(const struct fb_info *info, in vgaHWRestore() argument
476 static inline int neo2200_sync(struct fb_info *info) in neo2200_sync() argument
478 struct neofb_par *par = info->par; in neo2200_sync()
485 static inline void neo2200_wait_fifo(struct fb_info *info, in neo2200_wait_fifo() argument
511 neo2200_sync(info); in neo2200_wait_fifo()
514 static inline void neo2200_accel_init(struct fb_info *info, in neo2200_accel_init() argument
517 struct neofb_par *par = info->par; in neo2200_accel_init()
521 neo2200_sync(info); in neo2200_accel_init()
550 neofb_open(struct fb_info *info, int user) in neofb_open() argument
552 struct neofb_par *par = info->par; in neofb_open()
565 neofb_release(struct fb_info *info, int user) in neofb_release() argument
567 struct neofb_par *par = info->par; in neofb_release()
581 neofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) in neofb_check_var() argument
583 struct neofb_par *par = info->par; in neofb_check_var()
687 vramlen = info->fix.smem_len; in neofb_check_var()
721 static int neofb_set_par(struct fb_info *info) in neofb_set_par() argument
723 struct neofb_par *par = info->par; in neofb_set_par()
736 vsync_start = info->var.yres + info->var.lower_margin; in neofb_set_par()
737 vtotal = vsync_start + info->var.vsync_len + info->var.upper_margin; in neofb_set_par()
744 if (vgaHWInit(&info->var, par)) in neofb_set_par()
753 switch (info->var.bits_per_pixel) { in neofb_set_par()
755 par->CRTC[0x13] = info->var.xres_virtual >> 3; in neofb_set_par()
756 par->ExtCRTOffset = info->var.xres_virtual >> 11; in neofb_set_par()
760 par->CRTC[0x13] = info->var.xres_virtual >> 2; in neofb_set_par()
761 par->ExtCRTOffset = info->var.xres_virtual >> 10; in neofb_set_par()
765 par->CRTC[0x13] = (info->var.xres_virtual * 3) >> 3; in neofb_set_par()
766 par->ExtCRTOffset = (info->var.xres_virtual * 3) >> 11; in neofb_set_par()
771 par->CRTC[0x13] = info->var.xres_virtual >> 1; in neofb_set_par()
772 par->ExtCRTOffset = info->var.xres_virtual >> 9; in neofb_set_par()
784 | (((info->var.yres - 1) & 0x400) >> 9) in neofb_set_par()
813 switch (info->var.xres) { in neofb_set_par()
853 (info->var.xres != par->NeoPanelWidth)) { in neofb_set_par()
854 switch (info->var.xres) { in neofb_set_par()
887 if (info->var.xres == par->NeoPanelWidth) { in neofb_set_par()
900 info->var.xres) >> 4) - 1; in neofb_set_par()
903 info->var.yres) >> 1) - 2; in neofb_set_par()
910 switch (info->var.xres) { in neofb_set_par()
940 neoFindMode(info->var.xres, info->var.yres, in neofb_set_par()
941 info->var.bits_per_pixel); in neofb_set_par()
947 neoCalcVCLK(info, par, PICOS2KHZ(info->var.pixclock)); in neofb_set_par()
969 switch (info->fix.accel) { in neofb_set_par()
1011 vgaHWRestore(info, par); in neofb_set_par()
1014 switch (info->var.bits_per_pixel) { in neofb_set_par()
1017 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in neofb_set_par()
1021 info->fix.visual = FB_VISUAL_TRUECOLOR; in neofb_set_par()
1036 info->fix.visual = FB_VISUAL_TRUECOLOR; in neofb_set_par()
1060 switch (info->fix.accel) { in neofb_set_par()
1087 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) { in neofb_set_par()
1098 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) { in neofb_set_par()
1105 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2160) in neofb_set_par()
1108 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neofb_set_par()
1109 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neofb_set_par()
1110 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neofb_set_par()
1111 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neofb_set_par()
1141 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neofb_set_par()
1142 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neofb_set_par()
1143 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neofb_set_par()
1144 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neofb_set_par()
1153 info->fix.line_length = in neofb_set_par()
1154 info->var.xres_virtual * (info->var.bits_per_pixel >> 3); in neofb_set_par()
1156 switch (info->fix.accel) { in neofb_set_par()
1161 neo2200_accel_init(info, &info->var); in neofb_set_par()
1173 struct fb_info *info) in neofb_pan_display() argument
1175 struct neofb_par *par = info->par; in neofb_pan_display()
1182 Base = (var->yoffset * info->var.xres_virtual + var->xoffset) >> 2; in neofb_pan_display()
1183 Base *= (info->var.bits_per_pixel + 7) / 8; in neofb_pan_display()
1248 static int neofb_blank(int blank_mode, struct fb_info *info) in neofb_blank() argument
1264 struct neofb_par *par = info->par; in neofb_blank()
1361 neo2200_fillrect(struct fb_info *info, const struct fb_fillrect *rect) in neo2200_fillrect() argument
1363 struct neofb_par *par = info->par; in neo2200_fillrect()
1366 dst = rect->dx + rect->dy * info->var.xres_virtual; in neo2200_fillrect()
1369 neo2200_wait_fifo(info, 4); in neo2200_fillrect()
1378 switch (info->var.bits_per_pixel) { in neo2200_fillrect()
1384 writel(((u32 *) (info->pseudo_palette))[rect->color], in neo2200_fillrect()
1389 writel(dst * ((info->var.bits_per_pixel + 7) >> 3), in neo2200_fillrect()
1396 neo2200_copyarea(struct fb_info *info, const struct fb_copyarea *area) in neo2200_copyarea() argument
1399 struct neofb_par *par = info->par; in neo2200_copyarea()
1414 src = sx * (info->var.bits_per_pixel >> 3) + sy*info->fix.line_length; in neo2200_copyarea()
1415 dst = dx * (info->var.bits_per_pixel >> 3) + dy*info->fix.line_length; in neo2200_copyarea()
1417 neo2200_wait_fifo(info, 4); in neo2200_copyarea()
1429 neo2200_imageblit(struct fb_info *info, const struct fb_image *image) in neo2200_imageblit() argument
1431 struct neofb_par *par = info->par; in neo2200_imageblit()
1433 int scan_align = info->pixmap.scan_align - 1; in neo2200_imageblit()
1434 int buf_align = info->pixmap.buf_align - 1; in neo2200_imageblit()
1441 neo2200_sync(info); in neo2200_imageblit()
1444 if (info->var.bits_per_pixel == 24 && image->width < 16) { in neo2200_imageblit()
1450 cfb_imageblit(info, image); in neo2200_imageblit()
1454 } else if (image->depth == info->var.bits_per_pixel) { in neo2200_imageblit()
1459 cfb_imageblit(info, image); in neo2200_imageblit()
1463 switch (info->var.bits_per_pixel) { in neo2200_imageblit()
1470 writel(((u32 *) (info->pseudo_palette))[image->fg_color], in neo2200_imageblit()
1472 writel(((u32 *) (info->pseudo_palette))[image->bg_color], in neo2200_imageblit()
1484 writel(((image->dx & 0xffff) * (info->var.bits_per_pixel >> 3) + in neo2200_imageblit()
1485 image->dy * info->fix.line_length), &par->neo2200->dstStart); in neo2200_imageblit()
1493 neofb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) in neofb_fillrect() argument
1495 switch (info->fix.accel) { in neofb_fillrect()
1500 neo2200_fillrect(info, rect); in neofb_fillrect()
1503 cfb_fillrect(info, rect); in neofb_fillrect()
1509 neofb_copyarea(struct fb_info *info, const struct fb_copyarea *area) in neofb_copyarea() argument
1511 switch (info->fix.accel) { in neofb_copyarea()
1516 neo2200_copyarea(info, area); in neofb_copyarea()
1519 cfb_copyarea(info, area); in neofb_copyarea()
1525 neofb_imageblit(struct fb_info *info, const struct fb_image *image) in neofb_imageblit() argument
1527 switch (info->fix.accel) { in neofb_imageblit()
1532 neo2200_imageblit(info, image); in neofb_imageblit()
1535 cfb_imageblit(info, image); in neofb_imageblit()
1541 neofb_sync(struct fb_info *info) in neofb_sync() argument
1543 switch (info->fix.accel) { in neofb_sync()
1548 neo2200_sync(info); in neofb_sync()
1644 static int neo_map_mmio(struct fb_info *info, struct pci_dev *dev) in neo_map_mmio() argument
1646 struct neofb_par *par = info->par; in neo_map_mmio()
1650 switch (info->fix.accel) { in neo_map_mmio()
1652 info->fix.mmio_start = pci_resource_start(dev, 0)+ in neo_map_mmio()
1657 info->fix.mmio_start = pci_resource_start(dev, 0)+ in neo_map_mmio()
1666 info->fix.mmio_start = pci_resource_start(dev, 1); in neo_map_mmio()
1669 info->fix.mmio_start = pci_resource_start(dev, 0); in neo_map_mmio()
1671 info->fix.mmio_len = MMIO_SIZE; in neo_map_mmio()
1674 (info->fix.mmio_start, MMIO_SIZE, "memory mapped I/O")) { in neo_map_mmio()
1679 par->mmio_vbase = ioremap(info->fix.mmio_start, MMIO_SIZE); in neo_map_mmio()
1682 release_mem_region(info->fix.mmio_start, in neo_map_mmio()
1683 info->fix.mmio_len); in neo_map_mmio()
1691 static void neo_unmap_mmio(struct fb_info *info) in neo_unmap_mmio() argument
1693 struct neofb_par *par = info->par; in neo_unmap_mmio()
1700 release_mem_region(info->fix.mmio_start, in neo_unmap_mmio()
1701 info->fix.mmio_len); in neo_unmap_mmio()
1704 static int neo_map_video(struct fb_info *info, struct pci_dev *dev, in neo_map_video() argument
1708 struct neofb_par *par = info->par; in neo_map_video()
1712 info->fix.smem_start = pci_resource_start(dev, 0); in neo_map_video()
1713 info->fix.smem_len = video_len; in neo_map_video()
1715 if (!request_mem_region(info->fix.smem_start, info->fix.smem_len, in neo_map_video()
1721 info->screen_base = in neo_map_video()
1722 ioremap_wc(info->fix.smem_start, info->fix.smem_len); in neo_map_video()
1723 if (!info->screen_base) { in neo_map_video()
1725 release_mem_region(info->fix.smem_start, in neo_map_video()
1726 info->fix.smem_len); in neo_map_video()
1730 info->screen_base); in neo_map_video()
1732 par->wc_cookie = arch_phys_wc_add(info->fix.smem_start, in neo_map_video()
1736 memset_io(info->screen_base, 0, info->fix.smem_len); in neo_map_video()
1748 static void neo_unmap_video(struct fb_info *info) in neo_unmap_video() argument
1750 struct neofb_par *par = info->par; in neo_unmap_video()
1755 iounmap(info->screen_base); in neo_unmap_video()
1756 info->screen_base = NULL; in neo_unmap_video()
1758 release_mem_region(info->fix.smem_start, in neo_unmap_video()
1759 info->fix.smem_len); in neo_unmap_video()
1762 static int neo_scan_monitor(struct fb_info *info) in neo_scan_monitor() argument
1764 struct neofb_par *par = info->par; in neo_scan_monitor()
1769 info->monspecs.modedb = kmalloc(sizeof(struct fb_videomode), GFP_KERNEL); in neo_scan_monitor()
1770 if (!info->monspecs.modedb) in neo_scan_monitor()
1772 info->monspecs.modedb_len = 1; in neo_scan_monitor()
1794 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode)); in neo_scan_monitor()
1800 memcpy(info->monspecs.modedb, &mode800x480, sizeof(struct fb_videomode)); in neo_scan_monitor()
1804 memcpy(info->monspecs.modedb, &vesa_modes[8], sizeof(struct fb_videomode)); in neo_scan_monitor()
1811 memcpy(info->monspecs.modedb, &vesa_modes[13], sizeof(struct fb_videomode)); in neo_scan_monitor()
1818 memcpy(info->monspecs.modedb, &vesa_modes[20], sizeof(struct fb_videomode)); in neo_scan_monitor()
1829 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode)); in neo_scan_monitor()
1841 static int neo_init_hw(struct fb_info *info) in neo_init_hw() argument
1843 struct neofb_par *par = info->par; in neo_init_hw()
1862 switch (info->fix.accel) { in neo_init_hw()
1894 switch (info->fix.accel) { in neo_init_hw()
1932 struct fb_info *info; in neo_alloc_fb_info() local
1935 info = framebuffer_alloc(sizeof(struct neofb_par), &dev->dev); in neo_alloc_fb_info()
1937 if (!info) in neo_alloc_fb_info()
1940 par = info->par; in neo_alloc_fb_info()
1942 info->fix.accel = id->driver_data; in neo_alloc_fb_info()
1950 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; in neo_alloc_fb_info()
1952 switch (info->fix.accel) { in neo_alloc_fb_info()
1954 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1958 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1962 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1966 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1970 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1974 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1976 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
1981 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1983 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
1988 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1990 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
1995 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1997 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
2003 info->fix.type = FB_TYPE_PACKED_PIXELS; in neo_alloc_fb_info()
2004 info->fix.type_aux = 0; in neo_alloc_fb_info()
2005 info->fix.xpanstep = 0; in neo_alloc_fb_info()
2006 info->fix.ypanstep = 4; in neo_alloc_fb_info()
2007 info->fix.ywrapstep = 0; in neo_alloc_fb_info()
2008 info->fix.accel = id->driver_data; in neo_alloc_fb_info()
2010 info->fbops = &neofb_ops; in neo_alloc_fb_info()
2011 info->pseudo_palette = par->palette; in neo_alloc_fb_info()
2012 return info; in neo_alloc_fb_info()
2015 static void neo_free_fb_info(struct fb_info *info) in neo_free_fb_info() argument
2017 if (info) { in neo_free_fb_info()
2021 fb_dealloc_cmap(&info->cmap); in neo_free_fb_info()
2022 framebuffer_release(info); in neo_free_fb_info()
2030 struct fb_info *info; in neofb_probe() local
2041 info = neo_alloc_fb_info(dev, id); in neofb_probe()
2042 if (!info) in neofb_probe()
2045 err = neo_map_mmio(info, dev); in neofb_probe()
2049 err = neo_scan_monitor(info); in neofb_probe()
2053 video_len = neo_init_hw(info); in neofb_probe()
2059 err = neo_map_video(info, dev, video_len); in neofb_probe()
2063 if (!fb_find_mode(&info->var, info, mode_option, NULL, 0, in neofb_probe()
2064 info->monspecs.modedb, 16)) { in neofb_probe()
2076 h_sync = 1953125000 / info->var.pixclock; in neofb_probe()
2078 h_sync * 512 / (info->var.xres + info->var.left_margin + in neofb_probe()
2079 info->var.right_margin + info->var.hsync_len); in neofb_probe()
2081 h_sync / (info->var.yres + info->var.upper_margin + in neofb_probe()
2082 info->var.lower_margin + info->var.vsync_len); in neofb_probe()
2086 info->fix.smem_len >> 10, info->var.xres, in neofb_probe()
2087 info->var.yres, h_sync / 1000, h_sync % 1000, v_sync); in neofb_probe()
2089 err = fb_alloc_cmap(&info->cmap, 256, 0); in neofb_probe()
2093 err = register_framebuffer(info); in neofb_probe()
2097 fb_info(info, "%s frame buffer device\n", info->fix.id); in neofb_probe()
2102 pci_set_drvdata(dev, info); in neofb_probe()
2106 fb_dealloc_cmap(&info->cmap); in neofb_probe()
2108 neo_unmap_video(info); in neofb_probe()
2110 fb_destroy_modedb(info->monspecs.modedb); in neofb_probe()
2112 neo_unmap_mmio(info); in neofb_probe()
2114 neo_free_fb_info(info); in neofb_probe()
2120 struct fb_info *info = pci_get_drvdata(dev); in neofb_remove() local
2124 if (info) { in neofb_remove()
2130 if (unregister_framebuffer(info)) in neofb_remove()
2134 neo_unmap_video(info); in neofb_remove()
2135 fb_destroy_modedb(info->monspecs.modedb); in neofb_remove()
2136 neo_unmap_mmio(info); in neofb_remove()
2137 neo_free_fb_info(info); in neofb_remove()