Lines Matching defs:info
202 static void neoCalcVCLK(const struct fb_info *info,
227 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 ||
228 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 ||
229 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 ||
230 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) {
443 static void vgaHWRestore(const struct fb_info *info,
476 static inline int neo2200_sync(struct fb_info *info)
478 struct neofb_par *par = info->par;
485 static inline void neo2200_wait_fifo(struct fb_info *info,
511 neo2200_sync(info);
514 static inline void neo2200_accel_init(struct fb_info *info,
517 struct neofb_par *par = info->par;
521 neo2200_sync(info);
550 neofb_open(struct fb_info *info, int user)
552 struct neofb_par *par = info->par;
565 neofb_release(struct fb_info *info, int user)
567 struct neofb_par *par = info->par;
581 neofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
583 struct neofb_par *par = info->par;
687 vramlen = info->fix.smem_len;
721 static int neofb_set_par(struct fb_info *info)
723 struct neofb_par *par = info->par;
736 vsync_start = info->var.yres + info->var.lower_margin;
737 vtotal = vsync_start + info->var.vsync_len + info->var.upper_margin;
744 if (vgaHWInit(&info->var, par))
753 switch (info->var.bits_per_pixel) {
755 par->CRTC[0x13] = info->var.xres_virtual >> 3;
756 par->ExtCRTOffset = info->var.xres_virtual >> 11;
760 par->CRTC[0x13] = info->var.xres_virtual >> 2;
761 par->ExtCRTOffset = info->var.xres_virtual >> 10;
765 par->CRTC[0x13] = (info->var.xres_virtual * 3) >> 3;
766 par->ExtCRTOffset = (info->var.xres_virtual * 3) >> 11;
771 par->CRTC[0x13] = info->var.xres_virtual >> 1;
772 par->ExtCRTOffset = info->var.xres_virtual >> 9;
784 | (((info->var.yres - 1) & 0x400) >> 9)
813 switch (info->var.xres) {
853 (info->var.xres != par->NeoPanelWidth)) {
854 switch (info->var.xres) {
887 if (info->var.xres == par->NeoPanelWidth) {
900 info->var.xres) >> 4) - 1;
903 info->var.yres) >> 1) - 2;
910 switch (info->var.xres) {
940 neoFindMode(info->var.xres, info->var.yres,
941 info->var.bits_per_pixel);
947 neoCalcVCLK(info, par, PICOS2KHZ(info->var.pixclock));
969 switch (info->fix.accel) {
1011 vgaHWRestore(info, par);
1014 switch (info->var.bits_per_pixel) {
1017 info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
1021 info->fix.visual = FB_VISUAL_TRUECOLOR;
1036 info->fix.visual = FB_VISUAL_TRUECOLOR;
1060 switch (info->fix.accel) {
1087 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) {
1098 if (info->fix.accel != FB_ACCEL_NEOMAGIC_NM2070) {
1105 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2160)
1108 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 ||
1109 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 ||
1110 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 ||
1111 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) {
1141 if (info->fix.accel == FB_ACCEL_NEOMAGIC_NM2200 ||
1142 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2230 ||
1143 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2360 ||
1144 info->fix.accel == FB_ACCEL_NEOMAGIC_NM2380) {
1153 info->fix.line_length =
1154 info->var.xres_virtual * (info->var.bits_per_pixel >> 3);
1156 switch (info->fix.accel) {
1161 neo2200_accel_init(info, &info->var);
1173 struct fb_info *info)
1175 struct neofb_par *par = info->par;
1182 Base = (var->yoffset * info->var.xres_virtual + var->xoffset) >> 2;
1183 Base *= (info->var.bits_per_pixel + 7) / 8;
1248 static int neofb_blank(int blank_mode, struct fb_info *info)
1264 struct neofb_par *par = info->par;
1361 neo2200_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
1363 struct neofb_par *par = info->par;
1366 dst = rect->dx + rect->dy * info->var.xres_virtual;
1369 neo2200_wait_fifo(info, 4);
1378 switch (info->var.bits_per_pixel) {
1384 writel(((u32 *) (info->pseudo_palette))[rect->color],
1389 writel(dst * ((info->var.bits_per_pixel + 7) >> 3),
1396 neo2200_copyarea(struct fb_info *info, const struct fb_copyarea *area)
1399 struct neofb_par *par = info->par;
1414 src = sx * (info->var.bits_per_pixel >> 3) + sy*info->fix.line_length;
1415 dst = dx * (info->var.bits_per_pixel >> 3) + dy*info->fix.line_length;
1417 neo2200_wait_fifo(info, 4);
1429 neo2200_imageblit(struct fb_info *info, const struct fb_image *image)
1431 struct neofb_par *par = info->par;
1433 int scan_align = info->pixmap.scan_align - 1;
1434 int buf_align = info->pixmap.buf_align - 1;
1441 neo2200_sync(info);
1444 if (info->var.bits_per_pixel == 24 && image->width < 16) {
1450 cfb_imageblit(info, image);
1454 } else if (image->depth == info->var.bits_per_pixel) {
1459 cfb_imageblit(info, image);
1463 switch (info->var.bits_per_pixel) {
1470 writel(((u32 *) (info->pseudo_palette))[image->fg_color],
1472 writel(((u32 *) (info->pseudo_palette))[image->bg_color],
1484 writel(((image->dx & 0xffff) * (info->var.bits_per_pixel >> 3) +
1485 image->dy * info->fix.line_length), &par->neo2200->dstStart);
1493 neofb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
1495 switch (info->fix.accel) {
1500 neo2200_fillrect(info, rect);
1503 cfb_fillrect(info, rect);
1509 neofb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
1511 switch (info->fix.accel) {
1516 neo2200_copyarea(info, area);
1519 cfb_copyarea(info, area);
1525 neofb_imageblit(struct fb_info *info, const struct fb_image *image)
1527 switch (info->fix.accel) {
1532 neo2200_imageblit(info, image);
1535 cfb_imageblit(info, image);
1541 neofb_sync(struct fb_info *info)
1543 switch (info->fix.accel) {
1548 neo2200_sync(info);
1558 neofb_draw_cursor(struct fb_info *info, u8 *dst, u8 *src, unsigned int width)
1560 //memset_io(info->sprite.addr, 0xff, 1);
1564 neofb_cursor(struct fb_info *info, struct fb_cursor *cursor)
1566 struct neofb_par *par = (struct neofb_par *) info->par;
1575 info->cursor.image.dx = x;
1576 info->cursor.image.dy = y;
1582 info->cursor.image.height = cursor->image.height;
1583 info->cursor.image.width = cursor->image.width;
1587 info->cursor.hot = cursor->hot;
1594 info->cursor.image.fg_color = fg;
1595 info->cursor.image.bg_color = bg;
1605 fb_load_cursor_image(info);
1607 if (info->cursor.enable)
1646 static int neo_map_mmio(struct fb_info *info, struct pci_dev *dev)
1648 struct neofb_par *par = info->par;
1652 switch (info->fix.accel) {
1654 info->fix.mmio_start = pci_resource_start(dev, 0)+
1659 info->fix.mmio_start = pci_resource_start(dev, 0)+
1668 info->fix.mmio_start = pci_resource_start(dev, 1);
1671 info->fix.mmio_start = pci_resource_start(dev, 0);
1673 info->fix.mmio_len = MMIO_SIZE;
1676 (info->fix.mmio_start, MMIO_SIZE, "memory mapped I/O")) {
1681 par->mmio_vbase = ioremap(info->fix.mmio_start, MMIO_SIZE);
1684 release_mem_region(info->fix.mmio_start,
1685 info->fix.mmio_len);
1693 static void neo_unmap_mmio(struct fb_info *info)
1695 struct neofb_par *par = info->par;
1702 release_mem_region(info->fix.mmio_start,
1703 info->fix.mmio_len);
1706 static int neo_map_video(struct fb_info *info, struct pci_dev *dev,
1710 struct neofb_par *par = info->par;
1714 info->fix.smem_start = pci_resource_start(dev, 0);
1715 info->fix.smem_len = video_len;
1717 if (!request_mem_region(info->fix.smem_start, info->fix.smem_len,
1723 info->screen_base =
1724 ioremap_wc(info->fix.smem_start, info->fix.smem_len);
1725 if (!info->screen_base) {
1727 release_mem_region(info->fix.smem_start,
1728 info->fix.smem_len);
1732 info->screen_base);
1734 par->wc_cookie = arch_phys_wc_add(info->fix.smem_start,
1738 memset_io(info->screen_base, 0, info->fix.smem_len);
1741 info->fix.smem_len -= PAGE_SIZE;
1742 addr = info->fix.smem_start + info->fix.smem_len;
1745 addr = (unsigned long) info->screen_base + info->fix.smem_len;
1746 info->sprite.addr = (u8 *) addr; */
1750 static void neo_unmap_video(struct fb_info *info)
1752 struct neofb_par *par = info->par;
1757 iounmap(info->screen_base);
1758 info->screen_base = NULL;
1760 release_mem_region(info->fix.smem_start,
1761 info->fix.smem_len);
1764 static int neo_scan_monitor(struct fb_info *info)
1766 struct neofb_par *par = info->par;
1771 info->monspecs.modedb = kmalloc(sizeof(struct fb_videomode), GFP_KERNEL);
1772 if (!info->monspecs.modedb)
1774 info->monspecs.modedb_len = 1;
1796 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode));
1802 memcpy(info->monspecs.modedb, &mode800x480, sizeof(struct fb_videomode));
1806 memcpy(info->monspecs.modedb, &vesa_modes[8], sizeof(struct fb_videomode));
1813 memcpy(info->monspecs.modedb, &vesa_modes[13], sizeof(struct fb_videomode));
1820 memcpy(info->monspecs.modedb, &vesa_modes[20], sizeof(struct fb_videomode));
1825 kfree(info->monspecs.modedb);
1832 memcpy(info->monspecs.modedb, &vesa_modes[3], sizeof(struct fb_videomode));
1844 static int neo_init_hw(struct fb_info *info)
1846 struct neofb_par *par = info->par;
1864 switch (info->fix.accel) {
1896 switch (info->fix.accel) {
1916 info->sprite.size = CursorMem;
1917 info->sprite.scan_align = 1;
1918 info->sprite.buf_align = 1;
1919 info->sprite.flags = FB_PIXMAP_IO;
1920 info->sprite.outbuf = neofb_draw_cursor;
1931 struct fb_info *info;
1934 info = framebuffer_alloc(sizeof(struct neofb_par), &dev->dev);
1936 if (!info)
1939 par = info->par;
1941 info->fix.accel = id->driver_data;
1949 info->flags = FBINFO_HWACCEL_YPAN;
1951 switch (info->fix.accel) {
1953 strscpy(info->fix.id, "MagicGraph128", sizeof(info->fix.id));
1956 strscpy(info->fix.id, "MagicGraph128V", sizeof(info->fix.id));
1959 strscpy(info->fix.id, "MagicGraph128ZV", sizeof(info->fix.id));
1962 strscpy(info->fix.id, "Mag.Graph128ZV+", sizeof(info->fix.id));
1965 strscpy(info->fix.id, "MagicGraph128XD", sizeof(info->fix.id));
1968 strscpy(info->fix.id, "MagicGraph256AV", sizeof(info->fix.id));
1969 info->flags |= FBINFO_HWACCEL_IMAGEBLIT |
1974 strscpy(info->fix.id, "Mag.Graph256AV+", sizeof(info->fix.id));
1975 info->flags |= FBINFO_HWACCEL_IMAGEBLIT |
1980 strscpy(info->fix.id, "MagicGraph256ZX", sizeof(info->fix.id));
1981 info->flags |= FBINFO_HWACCEL_IMAGEBLIT |
1986 strscpy(info->fix.id, "Mag.Graph256XL+", sizeof(info->fix.id));
1987 info->flags |= FBINFO_HWACCEL_IMAGEBLIT |
1993 info->fix.type = FB_TYPE_PACKED_PIXELS;
1994 info->fix.type_aux = 0;
1995 info->fix.xpanstep = 0;
1996 info->fix.ypanstep = 4;
1997 info->fix.ywrapstep = 0;
1998 info->fix.accel = id->driver_data;
2000 info->fbops = &neofb_ops;
2001 info->pseudo_palette = par->palette;
2002 return info;
2005 static void neo_free_fb_info(struct fb_info *info)
2007 if (info) {
2011 fb_dealloc_cmap(&info->cmap);
2012 framebuffer_release(info);
2020 struct fb_info *info;
2035 info = neo_alloc_fb_info(dev, id);
2036 if (!info)
2039 err = neo_map_mmio(info, dev);
2043 err = neo_scan_monitor(info);
2047 video_len = neo_init_hw(info);
2053 err = neo_map_video(info, dev, video_len);
2057 if (!fb_find_mode(&info->var, info, mode_option, NULL, 0,
2058 info->monspecs.modedb, 16)) {
2070 h_sync = 1953125000 / info->var.pixclock;
2072 h_sync * 512 / (info->var.xres + info->var.left_margin +
2073 info->var.right_margin + info->var.hsync_len);
2075 h_sync / (info->var.yres + info->var.upper_margin +
2076 info->var.lower_margin + info->var.vsync_len);
2080 info->fix.smem_len >> 10, info->var.xres,
2081 info->var.yres, h_sync / 1000, h_sync % 1000, v_sync);
2083 err = fb_alloc_cmap(&info->cmap, 256, 0);
2087 err = register_framebuffer(info);
2091 fb_info(info, "%s frame buffer device\n", info->fix.id);
2096 pci_set_drvdata(dev, info);
2100 fb_dealloc_cmap(&info->cmap);
2102 neo_unmap_video(info);
2104 fb_destroy_modedb(info->monspecs.modedb);
2106 neo_unmap_mmio(info);
2108 neo_free_fb_info(info);
2114 struct fb_info *info = pci_get_drvdata(dev);
2118 if (info) {
2119 unregister_framebuffer(info);
2121 neo_unmap_video(info);
2122 fb_destroy_modedb(info->monspecs.modedb);
2123 neo_unmap_mmio(info);
2124 neo_free_fb_info(info);