Lines Matching refs:info
207 static void neoCalcVCLK(const struct fb_info *info, in neoCalcVCLK() argument
232 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neoCalcVCLK()
233 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neoCalcVCLK()
234 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neoCalcVCLK()
235 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neoCalcVCLK()
448 static void vgaHWRestore(const struct fb_info *info, in vgaHWRestore() argument
481 static inline int neo2200_sync(struct fb_info *info) in neo2200_sync() argument
483 struct neofb_par *par = info->par; in neo2200_sync()
490 static inline void neo2200_wait_fifo(struct fb_info *info, in neo2200_wait_fifo() argument
516 neo2200_sync(info); in neo2200_wait_fifo()
519 static inline void neo2200_accel_init(struct fb_info *info, in neo2200_accel_init() argument
522 struct neofb_par *par = info->par; in neo2200_accel_init()
526 neo2200_sync(info); in neo2200_accel_init()
555 neofb_open(struct fb_info *info, int user) in neofb_open() argument
557 struct neofb_par *par = info->par; in neofb_open()
570 neofb_release(struct fb_info *info, int user) in neofb_release() argument
572 struct neofb_par *par = info->par; in neofb_release()
586 neofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) in neofb_check_var() argument
588 struct neofb_par *par = info->par; in neofb_check_var()
692 vramlen = info->fix.smem_len; in neofb_check_var()
726 static int neofb_set_par(struct fb_info *info) in neofb_set_par() argument
728 struct neofb_par *par = info->par; in neofb_set_par()
741 vsync_start = info->var.yres + info->var.lower_margin; in neofb_set_par()
742 vtotal = vsync_start + info->var.vsync_len + info->var.upper_margin; in neofb_set_par()
749 if (vgaHWInit(&info->var, par)) in neofb_set_par()
758 switch (info->var.bits_per_pixel) { in neofb_set_par()
760 par->CRTC[0x13] = info->var.xres_virtual >> 3; in neofb_set_par()
761 par->ExtCRTOffset = info->var.xres_virtual >> 11; in neofb_set_par()
765 par->CRTC[0x13] = info->var.xres_virtual >> 2; in neofb_set_par()
766 par->ExtCRTOffset = info->var.xres_virtual >> 10; in neofb_set_par()
770 par->CRTC[0x13] = (info->var.xres_virtual * 3) >> 3; in neofb_set_par()
771 par->ExtCRTOffset = (info->var.xres_virtual * 3) >> 11; in neofb_set_par()
776 par->CRTC[0x13] = info->var.xres_virtual >> 1; in neofb_set_par()
777 par->ExtCRTOffset = info->var.xres_virtual >> 9; in neofb_set_par()
789 | (((info->var.yres - 1) & 0x400) >> 9) in neofb_set_par()
818 switch (info->var.xres) { in neofb_set_par()
858 (info->var.xres != par->NeoPanelWidth)) { in neofb_set_par()
859 switch (info->var.xres) { in neofb_set_par()
892 if (info->var.xres == par->NeoPanelWidth) { in neofb_set_par()
905 info->var.xres) >> 4) - 1; in neofb_set_par()
908 info->var.yres) >> 1) - 2; in neofb_set_par()
915 switch (info->var.xres) { in neofb_set_par()
945 neoFindMode(info->var.xres, info->var.yres, in neofb_set_par()
946 info->var.bits_per_pixel); in neofb_set_par()
952 neoCalcVCLK(info, par, PICOS2KHZ(info->var.pixclock)); in neofb_set_par()
974 switch (info->fix.accel) { in neofb_set_par()
1016 vgaHWRestore(info, par); in neofb_set_par()
1019 switch (info->var.bits_per_pixel) { in neofb_set_par()
1022 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in neofb_set_par()
1026 info->fix.visual = FB_VISUAL_TRUECOLOR; in neofb_set_par()
1041 info->fix.visual = FB_VISUAL_TRUECOLOR; in neofb_set_par()
1065 switch (info->fix.accel) { in neofb_set_par()
1092 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) { in neofb_set_par()
1103 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) { in neofb_set_par()
1110 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2160) in neofb_set_par()
1113 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neofb_set_par()
1114 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neofb_set_par()
1115 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neofb_set_par()
1116 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neofb_set_par()
1146 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 || in neofb_set_par()
1147 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 || in neofb_set_par()
1148 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 || in neofb_set_par()
1149 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) { in neofb_set_par()
1158 info->fix.line_length = in neofb_set_par()
1159 info->var.xres_virtual * (info->var.bits_per_pixel >> 3); in neofb_set_par()
1161 switch (info->fix.accel) { in neofb_set_par()
1166 neo2200_accel_init(info, &info->var); in neofb_set_par()
1178 struct fb_info *info) in neofb_pan_display() argument
1180 struct neofb_par *par = info->par; in neofb_pan_display()
1187 Base = (var->yoffset * info->var.xres_virtual + var->xoffset) >> 2; in neofb_pan_display()
1188 Base *= (info->var.bits_per_pixel + 7) / 8; in neofb_pan_display()
1253 static int neofb_blank(int blank_mode, struct fb_info *info) in neofb_blank() argument
1269 struct neofb_par *par = info->par; in neofb_blank()
1366 neo2200_fillrect(struct fb_info *info, const struct fb_fillrect *rect) in neo2200_fillrect() argument
1368 struct neofb_par *par = info->par; in neo2200_fillrect()
1371 dst = rect->dx + rect->dy * info->var.xres_virtual; in neo2200_fillrect()
1374 neo2200_wait_fifo(info, 4); in neo2200_fillrect()
1383 switch (info->var.bits_per_pixel) { in neo2200_fillrect()
1389 writel(((u32 *) (info->pseudo_palette))[rect->color], in neo2200_fillrect()
1394 writel(dst * ((info->var.bits_per_pixel + 7) >> 3), in neo2200_fillrect()
1401 neo2200_copyarea(struct fb_info *info, const struct fb_copyarea *area) in neo2200_copyarea() argument
1404 struct neofb_par *par = info->par; in neo2200_copyarea()
1419 src = sx * (info->var.bits_per_pixel >> 3) + sy*info->fix.line_length; in neo2200_copyarea()
1420 dst = dx * (info->var.bits_per_pixel >> 3) + dy*info->fix.line_length; in neo2200_copyarea()
1422 neo2200_wait_fifo(info, 4); in neo2200_copyarea()
1434 neo2200_imageblit(struct fb_info *info, const struct fb_image *image) in neo2200_imageblit() argument
1436 struct neofb_par *par = info->par; in neo2200_imageblit()
1438 int scan_align = info->pixmap.scan_align - 1; in neo2200_imageblit()
1439 int buf_align = info->pixmap.buf_align - 1; in neo2200_imageblit()
1446 neo2200_sync(info); in neo2200_imageblit()
1449 if (info->var.bits_per_pixel == 24 && image->width < 16) { in neo2200_imageblit()
1455 cfb_imageblit(info, image); in neo2200_imageblit()
1459 } else if (image->depth == info->var.bits_per_pixel) { in neo2200_imageblit()
1464 cfb_imageblit(info, image); in neo2200_imageblit()
1468 switch (info->var.bits_per_pixel) { in neo2200_imageblit()
1475 writel(((u32 *) (info->pseudo_palette))[image->fg_color], in neo2200_imageblit()
1477 writel(((u32 *) (info->pseudo_palette))[image->bg_color], in neo2200_imageblit()
1489 writel(((image->dx & 0xffff) * (info->var.bits_per_pixel >> 3) + in neo2200_imageblit()
1490 image->dy * info->fix.line_length), &par->neo2200->dstStart); in neo2200_imageblit()
1498 neofb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) in neofb_fillrect() argument
1500 switch (info->fix.accel) { in neofb_fillrect()
1505 neo2200_fillrect(info, rect); in neofb_fillrect()
1508 cfb_fillrect(info, rect); in neofb_fillrect()
1514 neofb_copyarea(struct fb_info *info, const struct fb_copyarea *area) in neofb_copyarea() argument
1516 switch (info->fix.accel) { in neofb_copyarea()
1521 neo2200_copyarea(info, area); in neofb_copyarea()
1524 cfb_copyarea(info, area); in neofb_copyarea()
1530 neofb_imageblit(struct fb_info *info, const struct fb_image *image) in neofb_imageblit() argument
1532 switch (info->fix.accel) { in neofb_imageblit()
1537 neo2200_imageblit(info, image); in neofb_imageblit()
1540 cfb_imageblit(info, image); in neofb_imageblit()
1546 neofb_sync(struct fb_info *info) in neofb_sync() argument
1548 switch (info->fix.accel) { in neofb_sync()
1553 neo2200_sync(info); in neofb_sync()
1649 static int neo_map_mmio(struct fb_info *info, struct pci_dev *dev) in neo_map_mmio() argument
1651 struct neofb_par *par = info->par; in neo_map_mmio()
1655 switch (info->fix.accel) { in neo_map_mmio()
1657 info->fix.mmio_start = pci_resource_start(dev, 0)+ in neo_map_mmio()
1662 info->fix.mmio_start = pci_resource_start(dev, 0)+ in neo_map_mmio()
1671 info->fix.mmio_start = pci_resource_start(dev, 1); in neo_map_mmio()
1674 info->fix.mmio_start = pci_resource_start(dev, 0); in neo_map_mmio()
1676 info->fix.mmio_len = MMIO_SIZE; in neo_map_mmio()
1679 (info->fix.mmio_start, MMIO_SIZE, "memory mapped I/O")) { in neo_map_mmio()
1684 par->mmio_vbase = ioremap(info->fix.mmio_start, MMIO_SIZE); in neo_map_mmio()
1687 release_mem_region(info->fix.mmio_start, in neo_map_mmio()
1688 info->fix.mmio_len); in neo_map_mmio()
1696 static void neo_unmap_mmio(struct fb_info *info) in neo_unmap_mmio() argument
1698 struct neofb_par *par = info->par; in neo_unmap_mmio()
1705 release_mem_region(info->fix.mmio_start, in neo_unmap_mmio()
1706 info->fix.mmio_len); in neo_unmap_mmio()
1709 static int neo_map_video(struct fb_info *info, struct pci_dev *dev, in neo_map_video() argument
1716 info->fix.smem_start = pci_resource_start(dev, 0); in neo_map_video()
1717 info->fix.smem_len = video_len; in neo_map_video()
1719 if (!request_mem_region(info->fix.smem_start, info->fix.smem_len, in neo_map_video()
1725 info->screen_base = in neo_map_video()
1726 ioremap(info->fix.smem_start, info->fix.smem_len); in neo_map_video()
1727 if (!info->screen_base) { in neo_map_video()
1729 release_mem_region(info->fix.smem_start, in neo_map_video()
1730 info->fix.smem_len); in neo_map_video()
1734 info->screen_base); in neo_map_video()
1737 ((struct neofb_par *)(info->par))->mtrr = in neo_map_video()
1738 mtrr_add(info->fix.smem_start, pci_resource_len(dev, 0), in neo_map_video()
1743 memset_io(info->screen_base, 0, info->fix.smem_len); in neo_map_video()
1755 static void neo_unmap_video(struct fb_info *info) in neo_unmap_video() argument
1761 struct neofb_par *par = info->par; in neo_unmap_video()
1763 mtrr_del(par->mtrr, info->fix.smem_start, in neo_unmap_video()
1764 info->fix.smem_len); in neo_unmap_video()
1767 iounmap(info->screen_base); in neo_unmap_video()
1768 info->screen_base = NULL; in neo_unmap_video()
1770 release_mem_region(info->fix.smem_start, in neo_unmap_video()
1771 info->fix.smem_len); in neo_unmap_video()
1774 static int neo_scan_monitor(struct fb_info *info) in neo_scan_monitor() argument
1776 struct neofb_par *par = info->par; in neo_scan_monitor()
1781 info->monspecs.modedb = kmalloc(sizeof(struct fb_videomode), GFP_KERNEL); in neo_scan_monitor()
1782 if (!info->monspecs.modedb) in neo_scan_monitor()
1784 info->monspecs.modedb_len = 1; in neo_scan_monitor()
1806 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode)); in neo_scan_monitor()
1812 memcpy(info->monspecs.modedb, &mode800x480, sizeof(struct fb_videomode)); in neo_scan_monitor()
1816 memcpy(info->monspecs.modedb, &vesa_modes[8], sizeof(struct fb_videomode)); in neo_scan_monitor()
1823 memcpy(info->monspecs.modedb, &vesa_modes[13], sizeof(struct fb_videomode)); in neo_scan_monitor()
1830 memcpy(info->monspecs.modedb, &vesa_modes[20], sizeof(struct fb_videomode)); in neo_scan_monitor()
1841 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode)); in neo_scan_monitor()
1853 static int neo_init_hw(struct fb_info *info) in neo_init_hw() argument
1855 struct neofb_par *par = info->par; in neo_init_hw()
1874 switch (info->fix.accel) { in neo_init_hw()
1906 switch (info->fix.accel) { in neo_init_hw()
1944 struct fb_info *info; in neo_alloc_fb_info() local
1947 info = framebuffer_alloc(sizeof(struct neofb_par), &dev->dev); in neo_alloc_fb_info()
1949 if (!info) in neo_alloc_fb_info()
1952 par = info->par; in neo_alloc_fb_info()
1954 info->fix.accel = id->driver_data; in neo_alloc_fb_info()
1962 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; in neo_alloc_fb_info()
1964 switch (info->fix.accel) { 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()
1978 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1982 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1986 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1988 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
1993 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
1995 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
2000 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
2002 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
2007 snprintf(info->fix.id, sizeof(info->fix.id), in neo_alloc_fb_info()
2009 info->flags |= FBINFO_HWACCEL_IMAGEBLIT | in neo_alloc_fb_info()
2015 info->fix.type = FB_TYPE_PACKED_PIXELS; in neo_alloc_fb_info()
2016 info->fix.type_aux = 0; in neo_alloc_fb_info()
2017 info->fix.xpanstep = 0; in neo_alloc_fb_info()
2018 info->fix.ypanstep = 4; in neo_alloc_fb_info()
2019 info->fix.ywrapstep = 0; in neo_alloc_fb_info()
2020 info->fix.accel = id->driver_data; in neo_alloc_fb_info()
2022 info->fbops = &neofb_ops; in neo_alloc_fb_info()
2023 info->pseudo_palette = par->palette; in neo_alloc_fb_info()
2024 return info; in neo_alloc_fb_info()
2027 static void neo_free_fb_info(struct fb_info *info) in neo_free_fb_info() argument
2029 if (info) { in neo_free_fb_info()
2033 fb_dealloc_cmap(&info->cmap); in neo_free_fb_info()
2034 framebuffer_release(info); in neo_free_fb_info()
2042 struct fb_info *info; in neofb_probe() local
2053 info = neo_alloc_fb_info(dev, id); in neofb_probe()
2054 if (!info) in neofb_probe()
2057 err = neo_map_mmio(info, dev); in neofb_probe()
2061 err = neo_scan_monitor(info); in neofb_probe()
2065 video_len = neo_init_hw(info); in neofb_probe()
2071 err = neo_map_video(info, dev, video_len); in neofb_probe()
2075 if (!fb_find_mode(&info->var, info, mode_option, NULL, 0, in neofb_probe()
2076 info->monspecs.modedb, 16)) { in neofb_probe()
2088 h_sync = 1953125000 / info->var.pixclock; in neofb_probe()
2090 h_sync * 512 / (info->var.xres + info->var.left_margin + in neofb_probe()
2091 info->var.right_margin + info->var.hsync_len); in neofb_probe()
2093 h_sync / (info->var.yres + info->var.upper_margin + in neofb_probe()
2094 info->var.lower_margin + info->var.vsync_len); in neofb_probe()
2098 info->fix.smem_len >> 10, info->var.xres, in neofb_probe()
2099 info->var.yres, h_sync / 1000, h_sync % 1000, v_sync); in neofb_probe()
2101 err = fb_alloc_cmap(&info->cmap, 256, 0); in neofb_probe()
2105 err = register_framebuffer(info); in neofb_probe()
2109 fb_info(info, "%s frame buffer device\n", info->fix.id); in neofb_probe()
2114 pci_set_drvdata(dev, info); in neofb_probe()
2118 fb_dealloc_cmap(&info->cmap); in neofb_probe()
2120 neo_unmap_video(info); in neofb_probe()
2122 fb_destroy_modedb(info->monspecs.modedb); in neofb_probe()
2124 neo_unmap_mmio(info); in neofb_probe()
2126 neo_free_fb_info(info); in neofb_probe()
2132 struct fb_info *info = pci_get_drvdata(dev); in neofb_remove() local
2136 if (info) { in neofb_remove()
2142 if (unregister_framebuffer(info)) in neofb_remove()
2146 neo_unmap_video(info); in neofb_remove()
2147 fb_destroy_modedb(info->monspecs.modedb); in neofb_remove()
2148 neo_unmap_mmio(info); in neofb_remove()
2149 neo_free_fb_info(info); in neofb_remove()