Lines Matching +full:io +full:- +full:multiplex
2 * linux/drivers/video/arkfb.c -- Frame buffer device driver for ARK 2000PV
42 /* ------------------------------------------------------------------------- */
95 /* ------------------------------------------------------------------------- */
100 static char *mode_option = "640x480-8@60";
107 MODULE_PARM_DESC(mode_option, "Default video mode ('640x480-8@60', etc)");
109 MODULE_PARM_DESC(mode, "Default video mode ('640x480-8@60', etc) (deprecated)");
117 /* ------------------------------------------------------------------------- */
122 const u8 *font = map->data; in arkfb_settile()
123 u8 __iomem *fb = (u8 __iomem *)info->screen_base; in arkfb_settile()
126 if ((map->width != 8) || (map->height != 16) || in arkfb_settile()
127 (map->depth != 1) || (map->length != 256)) { in arkfb_settile()
129 map->width, map->height, map->depth, map->length); in arkfb_settile()
134 for (c = 0; c < map->length; c++) { in arkfb_settile()
135 for (i = 0; i < map->height; i++) { in arkfb_settile()
144 font += map->height; in arkfb_settile()
150 struct arkfb_info *par = info->par; in arkfb_tilecursor()
152 svga_tilecursor(par->state.vgabase, info, cursor); in arkfb_tilecursor()
165 /* ------------------------------------------------------------------------- */
168 /* image data is MSB-first, fb structure is MSB-first too */
174 /* arkfb_iplan_imageblit silently assumes that almost everything is 8-pixel aligned */
177 u32 fg = expand_color(image->fg_color); in arkfb_iplan_imageblit()
178 u32 bg = expand_color(image->bg_color); in arkfb_iplan_imageblit()
185 src1 = image->data; in arkfb_iplan_imageblit()
186 dst1 = info->screen_base + (image->dy * info->fix.line_length) in arkfb_iplan_imageblit()
187 + ((image->dx / 8) * 4); in arkfb_iplan_imageblit()
189 for (y = 0; y < image->height; y++) { in arkfb_iplan_imageblit()
192 for (x = 0; x < image->width; x += 8) { in arkfb_iplan_imageblit()
197 src1 += image->width / 8; in arkfb_iplan_imageblit()
198 dst1 += info->fix.line_length; in arkfb_iplan_imageblit()
203 /* arkfb_iplan_fillrect silently assumes that almost everything is 8-pixel aligned */
206 u32 fg = expand_color(rect->color); in arkfb_iplan_fillrect()
211 dst1 = info->screen_base + (rect->dy * info->fix.line_length) in arkfb_iplan_fillrect()
212 + ((rect->dx / 8) * 4); in arkfb_iplan_fillrect()
214 for (y = 0; y < rect->height; y++) { in arkfb_iplan_fillrect()
216 for (x = 0; x < rect->width; x += 8) { in arkfb_iplan_fillrect()
219 dst1 += info->fix.line_length; in arkfb_iplan_fillrect()
225 /* image data is MSB-first, fb structure is high-nibble-in-low-byte-first */
232 /* arkfb_cfb4_imageblit silently assumes that almost everything is 8-pixel aligned */
235 u32 fg = image->fg_color * 0x11111111; in arkfb_cfb4_imageblit()
236 u32 bg = image->bg_color * 0x11111111; in arkfb_cfb4_imageblit()
243 src1 = image->data; in arkfb_cfb4_imageblit()
244 dst1 = info->screen_base + (image->dy * info->fix.line_length) in arkfb_cfb4_imageblit()
245 + ((image->dx / 8) * 4); in arkfb_cfb4_imageblit()
247 for (y = 0; y < image->height; y++) { in arkfb_cfb4_imageblit()
250 for (x = 0; x < image->width; x += 8) { in arkfb_cfb4_imageblit()
255 src1 += image->width / 8; in arkfb_cfb4_imageblit()
256 dst1 += info->fix.line_length; in arkfb_cfb4_imageblit()
263 if ((info->var.bits_per_pixel == 4) && (image->depth == 1) in arkfb_imageblit()
264 && ((image->width % 8) == 0) && ((image->dx % 8) == 0)) { in arkfb_imageblit()
265 if (info->fix.type == FB_TYPE_INTERLEAVED_PLANES) in arkfb_imageblit()
275 if ((info->var.bits_per_pixel == 4) in arkfb_fillrect()
276 && ((rect->width % 8) == 0) && ((rect->dx % 8) == 0) in arkfb_fillrect()
277 && (info->fix.type == FB_TYPE_INTERLEAVED_PLANES)) in arkfb_fillrect()
284 /* ------------------------------------------------------------------------- */
323 info->dac_read_regs(info->data, code, count); in dac_read_regs()
329 info->dac_write_regs(info->data, code, 1); in dac_write_reg()
334 info->dac_write_regs(info->data, code, count); in dac_write_regs()
339 return info->dacops->dac_set_mode(info, mode); in dac_set_mode()
344 return info->dacops->dac_set_freq(info, channel, freq); in dac_set_freq()
349 info->dacops->dac_release(info); in dac_release()
353 /* ------------------------------------------------------------------------- */
378 return -EINVAL; in ics5342_set_mode()
383 return -EINVAL; in ics5342_set_mode()
386 DAC_PAR(info)->mode = mode; in ics5342_set_mode()
394 /* pd4 - allow only posdivider 4 (r=2) */
406 int rv = svga_compute_pll((DAC_PAR(info)->mode == DAC_PSEUDO8_16) in ics5342_set_freq()
411 return -EINVAL; in ics5342_set_freq()
413 u8 code[6] = {4, 3, 5, m-2, 5, (n-2) | (r << 5)}; in ics5342_set_freq()
439 info->dacops = &ics5342_ops; in ics5342_init()
440 info->dac_read_regs = drr; in ics5342_init()
441 info->dac_write_regs = dwr; in ics5342_init()
442 info->data = data; in ics5342_init()
443 DAC_PAR(info)->mode = DAC_PSEUDO8_8; /* estimation */ in ics5342_init()
448 /* ------------------------------------------------------------------------- */
459 par = info->par; in ark_dac_read_regs()
460 regval = vga_rseq(par->state.vgabase, 0x1C); in ark_dac_read_regs()
463 vga_wseq(par->state.vgabase, 0x1C, regval | (code[0] & 4 ? 0x80 : 0)); in ark_dac_read_regs()
464 code[1] = vga_r(par->state.vgabase, dac_regs[code[0] & 3]); in ark_dac_read_regs()
465 count--; in ark_dac_read_regs()
469 vga_wseq(par->state.vgabase, 0x1C, regval); in ark_dac_read_regs()
478 par = info->par; in ark_dac_write_regs()
479 regval = vga_rseq(par->state.vgabase, 0x1C); in ark_dac_write_regs()
482 vga_wseq(par->state.vgabase, 0x1C, regval | (code[0] & 4 ? 0x80 : 0)); in ark_dac_write_regs()
483 vga_w(par->state.vgabase, dac_regs[code[0] & 3], code[1]); in ark_dac_write_regs()
484 count--; in ark_dac_write_regs()
488 vga_wseq(par->state.vgabase, 0x1C, regval); in ark_dac_write_regs()
494 struct arkfb_info *par = info->par; in ark_set_pixclock()
497 int rv = dac_set_freq(par->dac, 0, 1000000000 / pixclock); in ark_set_pixclock()
504 regval = vga_r(par->state.vgabase, VGA_MIS_R); in ark_set_pixclock()
505 vga_w(par->state.vgabase, VGA_MIS_W, regval | VGA_MIS_ENB_PLL_LOAD); in ark_set_pixclock()
513 struct arkfb_info *par = info->par; in arkfb_open()
515 mutex_lock(&(par->open_lock)); in arkfb_open()
516 if (par->ref_count == 0) { in arkfb_open()
517 void __iomem *vgabase = par->state.vgabase; in arkfb_open()
519 memset(&(par->state), 0, sizeof(struct vgastate)); in arkfb_open()
520 par->state.vgabase = vgabase; in arkfb_open()
521 par->state.flags = VGA_SAVE_MODE | VGA_SAVE_FONTS | VGA_SAVE_CMAP; in arkfb_open()
522 par->state.num_crtc = 0x60; in arkfb_open()
523 par->state.num_seq = 0x30; in arkfb_open()
524 save_vga(&(par->state)); in arkfb_open()
527 par->ref_count++; in arkfb_open()
528 mutex_unlock(&(par->open_lock)); in arkfb_open()
537 struct arkfb_info *par = info->par; in arkfb_release()
539 mutex_lock(&(par->open_lock)); in arkfb_release()
540 if (par->ref_count == 0) { in arkfb_release()
541 mutex_unlock(&(par->open_lock)); in arkfb_release()
542 return -EINVAL; in arkfb_release()
545 if (par->ref_count == 1) { in arkfb_release()
546 restore_vga(&(par->state)); in arkfb_release()
547 dac_set_mode(par->dac, DAC_PSEUDO8_8); in arkfb_release()
550 par->ref_count--; in arkfb_release()
551 mutex_unlock(&(par->open_lock)); in arkfb_release()
562 if (!var->pixclock) in arkfb_check_var()
563 return -EINVAL; in arkfb_check_var()
574 if (var->xres > var->xres_virtual) in arkfb_check_var()
575 var->xres_virtual = var->xres; in arkfb_check_var()
577 if (var->yres > var->yres_virtual) in arkfb_check_var()
578 var->yres_virtual = var->yres; in arkfb_check_var()
581 step = arkfb_formats[rv].xresstep - 1; in arkfb_check_var()
582 var->xres_virtual = (var->xres_virtual+step) & ~step; in arkfb_check_var()
586 mem = ((var->bits_per_pixel * var->xres_virtual) >> 3) * var->yres_virtual; in arkfb_check_var()
587 if (mem > info->screen_size) in arkfb_check_var()
590 mem >> 10, (unsigned int) (info->screen_size >> 10)); in arkfb_check_var()
591 return -EINVAL; in arkfb_check_var()
594 rv = svga_check_timings (&ark_timing_regs, var, info->node); in arkfb_check_var()
602 if (var->vmode & FB_VMODE_INTERLACED) in arkfb_check_var()
603 return -EINVAL; in arkfb_check_var()
612 struct arkfb_info *par = info->par; in arkfb_set_par()
614 u32 bpp = info->var.bits_per_pixel; in arkfb_set_par()
618 info->fix.ypanstep = 1; in arkfb_set_par()
619 info->fix.line_length = (info->var.xres_virtual * bpp) / 8; in arkfb_set_par()
621 info->flags &= ~FBINFO_MISC_TILEBLITTING; in arkfb_set_par()
622 info->tileops = NULL; in arkfb_set_par()
625 info->pixmap.blit_x = (bpp == 4) ? (1 << (8 - 1)) : (~(u32)0); in arkfb_set_par()
626 info->pixmap.blit_y = ~(u32)0; in arkfb_set_par()
628 offset_value = (info->var.xres_virtual * bpp) / 64; in arkfb_set_par()
629 screen_size = info->var.yres_virtual * info->fix.line_length; in arkfb_set_par()
631 info->fix.ypanstep = 16; in arkfb_set_par()
632 info->fix.line_length = 0; in arkfb_set_par()
634 info->flags |= FBINFO_MISC_TILEBLITTING; in arkfb_set_par()
635 info->tileops = &arkfb_tile_ops; in arkfb_set_par()
638 info->pixmap.blit_x = 1 << (8 - 1); in arkfb_set_par()
639 info->pixmap.blit_y = 1 << (16 - 1); in arkfb_set_par()
641 offset_value = info->var.xres_virtual / 16; in arkfb_set_par()
642 screen_size = (info->var.xres_virtual * info->var.yres_virtual) / 64; in arkfb_set_par()
645 info->var.xoffset = 0; in arkfb_set_par()
646 info->var.yoffset = 0; in arkfb_set_par()
647 info->var.activate = FB_ACTIVATE_NOW; in arkfb_set_par()
650 svga_wcrt_mask(par->state.vgabase, 0x11, 0x00, 0x80); in arkfb_set_par()
653 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in arkfb_set_par()
654 svga_wcrt_mask(par->state.vgabase, 0x17, 0x00, 0x80); in arkfb_set_par()
657 svga_set_default_gfx_regs(par->state.vgabase); in arkfb_set_par()
658 svga_set_default_atc_regs(par->state.vgabase); in arkfb_set_par()
659 svga_set_default_seq_regs(par->state.vgabase); in arkfb_set_par()
660 svga_set_default_crt_regs(par->state.vgabase); in arkfb_set_par()
661 svga_wcrt_multi(par->state.vgabase, ark_line_compare_regs, 0xFFFFFFFF); in arkfb_set_par()
662 svga_wcrt_multi(par->state.vgabase, ark_start_address_regs, 0); in arkfb_set_par()
665 …svga_wseq_mask(par->state.vgabase, 0x10, 0x1F, 0x1F); /* enable linear framebuffer and full memory… in arkfb_set_par()
666 svga_wseq_mask(par->state.vgabase, 0x12, 0x03, 0x03); /* 4 MB linear framebuffer size */ in arkfb_set_par()
668 vga_wseq(par->state.vgabase, 0x13, info->fix.smem_start >> 16); in arkfb_set_par()
669 vga_wseq(par->state.vgabase, 0x14, info->fix.smem_start >> 24); in arkfb_set_par()
670 vga_wseq(par->state.vgabase, 0x15, 0); in arkfb_set_par()
671 vga_wseq(par->state.vgabase, 0x16, 0); in arkfb_set_par()
674 /* It is fascinating way to store 5-bit value in 8-bit register */ in arkfb_set_par()
676 vga_wseq(par->state.vgabase, 0x18, regval); in arkfb_set_par()
680 svga_wcrt_multi(par->state.vgabase, ark_offset_regs, offset_value); in arkfb_set_par()
682 /* fix for hi-res textmode */ in arkfb_set_par()
683 svga_wcrt_mask(par->state.vgabase, 0x40, 0x08, 0x08); in arkfb_set_par()
685 if (info->var.vmode & FB_VMODE_DOUBLE) in arkfb_set_par()
686 svga_wcrt_mask(par->state.vgabase, 0x09, 0x80, 0x80); in arkfb_set_par()
688 svga_wcrt_mask(par->state.vgabase, 0x09, 0x00, 0x80); in arkfb_set_par()
690 if (info->var.vmode & FB_VMODE_INTERLACED) in arkfb_set_par()
691 svga_wcrt_mask(par->state.vgabase, 0x44, 0x04, 0x04); in arkfb_set_par()
693 svga_wcrt_mask(par->state.vgabase, 0x44, 0x00, 0x04); in arkfb_set_par()
697 mode = svga_match_format(arkfb_formats, &(info->var), &(info->fix)); in arkfb_set_par()
699 /* Set mode-specific register values */ in arkfb_set_par()
703 svga_set_textmode_vga_regs(par->state.vgabase); in arkfb_set_par()
705 vga_wseq(par->state.vgabase, 0x11, 0x10); /* basic VGA mode */ in arkfb_set_par()
706 svga_wcrt_mask(par->state.vgabase, 0x46, 0x00, 0x04); /* 8bit pixel path */ in arkfb_set_par()
707 dac_set_mode(par->dac, DAC_PSEUDO8_8); in arkfb_set_par()
712 vga_wgfx(par->state.vgabase, VGA_GFX_MODE, 0x40); in arkfb_set_par()
714 vga_wseq(par->state.vgabase, 0x11, 0x10); /* basic VGA mode */ in arkfb_set_par()
715 svga_wcrt_mask(par->state.vgabase, 0x46, 0x00, 0x04); /* 8bit pixel path */ in arkfb_set_par()
716 dac_set_mode(par->dac, DAC_PSEUDO8_8); in arkfb_set_par()
721 vga_wseq(par->state.vgabase, 0x11, 0x10); /* basic VGA mode */ in arkfb_set_par()
722 svga_wcrt_mask(par->state.vgabase, 0x46, 0x00, 0x04); /* 8bit pixel path */ in arkfb_set_par()
723 dac_set_mode(par->dac, DAC_PSEUDO8_8); in arkfb_set_par()
728 vga_wseq(par->state.vgabase, 0x11, 0x16); /* 8bpp accel mode */ in arkfb_set_par()
730 if (info->var.pixclock > 20000) { in arkfb_set_par()
731 fb_dbg(info, "not using multiplex\n"); in arkfb_set_par()
732 svga_wcrt_mask(par->state.vgabase, 0x46, 0x00, 0x04); /* 8bit pixel path */ in arkfb_set_par()
733 dac_set_mode(par->dac, DAC_PSEUDO8_8); in arkfb_set_par()
735 fb_dbg(info, "using multiplex\n"); in arkfb_set_par()
736 svga_wcrt_mask(par->state.vgabase, 0x46, 0x04, 0x04); /* 16bit pixel path */ in arkfb_set_par()
737 dac_set_mode(par->dac, DAC_PSEUDO8_16); in arkfb_set_par()
744 vga_wseq(par->state.vgabase, 0x11, 0x1A); /* 16bpp accel mode */ in arkfb_set_par()
745 svga_wcrt_mask(par->state.vgabase, 0x46, 0x04, 0x04); /* 16bit pixel path */ in arkfb_set_par()
746 dac_set_mode(par->dac, DAC_RGB1555_16); in arkfb_set_par()
751 vga_wseq(par->state.vgabase, 0x11, 0x1A); /* 16bpp accel mode */ in arkfb_set_par()
752 svga_wcrt_mask(par->state.vgabase, 0x46, 0x04, 0x04); /* 16bit pixel path */ in arkfb_set_par()
753 dac_set_mode(par->dac, DAC_RGB0565_16); in arkfb_set_par()
758 vga_wseq(par->state.vgabase, 0x11, 0x16); /* 8bpp accel mode ??? */ in arkfb_set_par()
759 svga_wcrt_mask(par->state.vgabase, 0x46, 0x04, 0x04); /* 16bit pixel path */ in arkfb_set_par()
760 dac_set_mode(par->dac, DAC_RGB0888_16); in arkfb_set_par()
767 vga_wseq(par->state.vgabase, 0x11, 0x1E); /* 32bpp accel mode */ in arkfb_set_par()
768 svga_wcrt_mask(par->state.vgabase, 0x46, 0x04, 0x04); /* 16bit pixel path */ in arkfb_set_par()
769 dac_set_mode(par->dac, DAC_RGB8888_16); in arkfb_set_par()
773 fb_err(info, "unsupported mode - bug\n"); in arkfb_set_par()
774 return -EINVAL; in arkfb_set_par()
777 value = (hdiv * info->var.pixclock) / hmul; in arkfb_set_par()
783 svga_set_timings(par->state.vgabase, &ark_timing_regs, &(info->var), hmul, hdiv, in arkfb_set_par()
784 (info->var.vmode & FB_VMODE_DOUBLE) ? 2 : 1, in arkfb_set_par()
785 (info->var.vmode & FB_VMODE_INTERLACED) ? 2 : 1, in arkfb_set_par()
786 hmul, info->node); in arkfb_set_par()
789 value = info->var.xres + info->var.left_margin + info->var.right_margin + info->var.hsync_len; in arkfb_set_par()
790 value = ((value * hmul / hdiv) / 8) - 5; in arkfb_set_par()
791 vga_wcrt(par->state.vgabase, 0x42, (value + 1) / 2); in arkfb_set_par()
793 if (screen_size > info->screen_size) in arkfb_set_par()
794 screen_size = info->screen_size; in arkfb_set_par()
795 memset_io(info->screen_base, 0x00, screen_size); in arkfb_set_par()
797 svga_wcrt_mask(par->state.vgabase, 0x17, 0x80, 0x80); in arkfb_set_par()
798 svga_wseq_mask(par->state.vgabase, 0x01, 0x00, 0x20); in arkfb_set_par()
808 switch (fb->var.bits_per_pixel) { in arkfb_setcolreg()
812 return -EINVAL; in arkfb_setcolreg()
814 if ((fb->var.bits_per_pixel == 4) && in arkfb_setcolreg()
815 (fb->var.nonstd == 0)) { in arkfb_setcolreg()
828 return -EINVAL; in arkfb_setcolreg()
840 if (fb->var.green.length == 5) in arkfb_setcolreg()
841 ((u32*)fb->pseudo_palette)[regno] = ((red & 0xF800) >> 1) | in arkfb_setcolreg()
843 else if (fb->var.green.length == 6) in arkfb_setcolreg()
844 ((u32*)fb->pseudo_palette)[regno] = (red & 0xF800) | in arkfb_setcolreg()
847 return -EINVAL; in arkfb_setcolreg()
854 ((u32*)fb->pseudo_palette)[regno] = ((red & 0xFF00) << 8) | in arkfb_setcolreg()
858 return -EINVAL; in arkfb_setcolreg()
868 struct arkfb_info *par = info->par; in arkfb_blank()
873 svga_wseq_mask(par->state.vgabase, 0x01, 0x00, 0x20); in arkfb_blank()
874 svga_wcrt_mask(par->state.vgabase, 0x17, 0x80, 0x80); in arkfb_blank()
878 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in arkfb_blank()
879 svga_wcrt_mask(par->state.vgabase, 0x17, 0x80, 0x80); in arkfb_blank()
885 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in arkfb_blank()
886 svga_wcrt_mask(par->state.vgabase, 0x17, 0x00, 0x80); in arkfb_blank()
897 struct arkfb_info *par = info->par; in arkfb_pan_display()
901 if (info->var.bits_per_pixel == 0) { in arkfb_pan_display()
902 offset = (var->yoffset / 16) * (info->var.xres_virtual / 2) in arkfb_pan_display()
903 + (var->xoffset / 2); in arkfb_pan_display()
906 offset = (var->yoffset * info->fix.line_length) + in arkfb_pan_display()
907 (var->xoffset * info->var.bits_per_pixel / 8); in arkfb_pan_display()
908 offset = offset >> ((info->var.bits_per_pixel == 4) ? 2 : 3); in arkfb_pan_display()
912 svga_wcrt_multi(par->state.vgabase, ark_start_address_regs, offset); in arkfb_pan_display()
918 /* ------------------------------------------------------------------------- */
939 /* ------------------------------------------------------------------------- */
958 dev_info(&(dev->dev), "ignoring secondary device\n"); in ark_pci_probe()
959 return -ENODEV; in ark_pci_probe()
963 info = framebuffer_alloc(sizeof(struct arkfb_info), &(dev->dev)); in ark_pci_probe()
965 return -ENOMEM; in ark_pci_probe()
967 par = info->par; in ark_pci_probe()
968 mutex_init(&par->open_lock); in ark_pci_probe()
970 info->flags = FBINFO_PARTIAL_PAN_OK | FBINFO_HWACCEL_YPAN; in ark_pci_probe()
971 info->fbops = &arkfb_ops; in ark_pci_probe()
976 dev_err(info->device, "cannot enable PCI device\n"); in ark_pci_probe()
982 dev_err(info->device, "cannot reserve framebuffer region\n"); in ark_pci_probe()
986 par->dac = ics5342_init(ark_dac_read_regs, ark_dac_write_regs, info); in ark_pci_probe()
987 if (! par->dac) { in ark_pci_probe()
988 rc = -ENOMEM; in ark_pci_probe()
989 dev_err(info->device, "RAMDAC initialization failed\n"); in ark_pci_probe()
993 info->fix.smem_start = pci_resource_start(dev, 0); in ark_pci_probe()
994 info->fix.smem_len = pci_resource_len(dev, 0); in ark_pci_probe()
996 /* Map physical IO memory address into kernel space */ in ark_pci_probe()
997 info->screen_base = pci_iomap_wc(dev, 0, 0); in ark_pci_probe()
998 if (! info->screen_base) { in ark_pci_probe()
999 rc = -ENOMEM; in ark_pci_probe()
1000 dev_err(info->device, "iomap for framebuffer failed\n"); in ark_pci_probe()
1009 pcibios_bus_to_resource(dev->bus, &vga_res, &bus_reg); in ark_pci_probe()
1011 par->state.vgabase = (void __iomem *) (unsigned long) vga_res.start; in ark_pci_probe()
1014 regval = vga_rseq(par->state.vgabase, 0x10); in ark_pci_probe()
1015 info->screen_size = (1 << (regval >> 6)) << 20; in ark_pci_probe()
1016 info->fix.smem_len = info->screen_size; in ark_pci_probe()
1018 strcpy(info->fix.id, "ARK 2000PV"); in ark_pci_probe()
1019 info->fix.mmio_start = 0; in ark_pci_probe()
1020 info->fix.mmio_len = 0; in ark_pci_probe()
1021 info->fix.type = FB_TYPE_PACKED_PIXELS; in ark_pci_probe()
1022 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in ark_pci_probe()
1023 info->fix.ypanstep = 0; in ark_pci_probe()
1024 info->fix.accel = FB_ACCEL_NONE; in ark_pci_probe()
1025 info->pseudo_palette = (void*) (par->pseudo_palette); in ark_pci_probe()
1028 rc = fb_find_mode(&(info->var), info, mode_option, NULL, 0, NULL, 8); in ark_pci_probe()
1030 rc = -EINVAL; in ark_pci_probe()
1031 dev_err(info->device, "mode %s not found\n", mode_option); in ark_pci_probe()
1035 rc = fb_alloc_cmap(&info->cmap, 256, 0); in ark_pci_probe()
1037 dev_err(info->device, "cannot allocate colormap\n"); in ark_pci_probe()
1043 dev_err(info->device, "cannot register framebuffer\n"); in ark_pci_probe()
1048 info->fix.id, pci_name(dev), info->fix.smem_len >> 20); in ark_pci_probe()
1052 par->wc_cookie = arch_phys_wc_add(info->fix.smem_start, in ark_pci_probe()
1053 info->fix.smem_len); in ark_pci_probe()
1058 fb_dealloc_cmap(&info->cmap); in ark_pci_probe()
1061 pci_iounmap(dev, info->screen_base); in ark_pci_probe()
1063 dac_release(par->dac); in ark_pci_probe()
1080 struct arkfb_info *par = info->par; in ark_pci_remove()
1081 arch_phys_wc_del(par->wc_cookie); in ark_pci_remove()
1082 dac_release(par->dac); in ark_pci_remove()
1084 fb_dealloc_cmap(&info->cmap); in ark_pci_remove()
1086 pci_iounmap(dev, info->screen_base); in ark_pci_remove()
1100 struct arkfb_info *par = info->par; in ark_pci_suspend()
1102 dev_info(info->device, "suspend\n"); in ark_pci_suspend()
1105 mutex_lock(&(par->open_lock)); in ark_pci_suspend()
1107 if (par->ref_count == 0) { in ark_pci_suspend()
1108 mutex_unlock(&(par->open_lock)); in ark_pci_suspend()
1115 mutex_unlock(&(par->open_lock)); in ark_pci_suspend()
1127 struct arkfb_info *par = info->par; in ark_pci_resume()
1129 dev_info(info->device, "resume\n"); in ark_pci_resume()
1132 mutex_lock(&(par->open_lock)); in ark_pci_resume()
1134 if (par->ref_count == 0) in ark_pci_resume()
1141 mutex_unlock(&(par->open_lock)); in ark_pci_resume()
1192 return -ENODEV; in arkfb_init()