Lines Matching +full:misc +full:- +full:latch

2  * linux/drivers/video/vga16.c -- VGA 16-color framebuffer driver
6 * Based on VESA framebuffer (c) 1998 Gerd Knorr <kraxel@goldbach.in-berlin.de>
34 /* --------------------------------------------------------------------- */
45 unsigned char CrtCtrlIndex; /* CRT-Contr. Index reg. */
47 unsigned char HorizontalTotal; /* CRT-Controller:00h */
48 unsigned char HorizDisplayEnd; /* CRT-Controller:01h */
49 unsigned char StartHorizRetrace;/* CRT-Controller:04h */
50 unsigned char EndHorizRetrace; /* CRT-Controller:05h */
51 unsigned char Overflow; /* CRT-Controller:07h */
52 unsigned char StartVertRetrace; /* CRT-Controller:10h */
53 unsigned char EndVertRetrace; /* CRT-Controller:11h */
54 unsigned char ModeControl; /* CRT-Controller:17h */
55 unsigned char ClockingMode; /* Seq-Controller:01h */
60 u8 misc, pel_msk, vss, clkdiv; member
64 /* --------------------------------------------------------------------- */
73 .height = -1,
74 .width = -1,
102 the scenes in the VGA's 32-bit latch register, and reading and writing
103 video memory just invokes latch behavior.
108 read-modify-write routine should optimize to one such bitwise
117 Bits 0-1 are write mode, bit 3 is read mode. */
141 Bits 0-2 are rotate count, bits 3-4 are logical operation
189 if (si->orig_video_isVGA != VIDEO_TYPE_EGAC && in check_mode_supported()
190 si->orig_video_isVGA != VIDEO_TYPE_VGAC) in check_mode_supported()
191 return -ENODEV; in check_mode_supported()
193 if (si->orig_video_mode != 0x0D && /* 320x200/4 (EGA) */ in check_mode_supported()
194 si->orig_video_mode != 0x0E && /* 640x200/4 (EGA) */ in check_mode_supported()
195 si->orig_video_mode != 0x10 && /* 640x350/4 (EGA) */ in check_mode_supported()
196 si->orig_video_mode != 0x12) /* 640x480/4 (VGA) */ in check_mode_supported()
197 return -ENODEV; in check_mode_supported()
205 struct vga16fb_par *par = info->par; in vga16fb_pan_var()
208 xoffset = var->xoffset; in vga16fb_pan_var()
209 if (info->var.bits_per_pixel == 8) { in vga16fb_pan_var()
210 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 2; in vga16fb_pan_var()
211 } else if (par->mode & MODE_TEXT) { in vga16fb_pan_var()
213 pos = (info->var.xres_virtual * (var->yoffset / fh) + xoffset) >> 3; in vga16fb_pan_var()
215 if (info->var.nonstd) in vga16fb_pan_var()
216 xoffset--; in vga16fb_pan_var()
217 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 3; in vga16fb_pan_var()
223 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_pan_var()
225 if (info->var.bits_per_pixel == 8) in vga16fb_pan_var()
235 if (info->var.bits_per_pixel == 4) { in vga16fb_update_fix()
236 if (info->var.nonstd) { in vga16fb_update_fix()
237 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
238 info->fix.line_length = info->var.xres_virtual / 2; in vga16fb_update_fix()
240 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
241 info->fix.type_aux = FB_AUX_VGA_PLANES_VGA4; in vga16fb_update_fix()
242 info->fix.line_length = info->var.xres_virtual / 8; in vga16fb_update_fix()
244 } else if (info->var.bits_per_pixel == 0) { in vga16fb_update_fix()
245 info->fix.type = FB_TYPE_TEXT; in vga16fb_update_fix()
246 info->fix.type_aux = FB_AUX_TEXT_CGA; in vga16fb_update_fix()
247 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
249 if (info->var.nonstd) { in vga16fb_update_fix()
250 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
251 info->fix.type_aux = FB_AUX_VGA_PLANES_CFB8; in vga16fb_update_fix()
252 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
254 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
255 info->fix.line_length = info->var.xres_virtual; in vga16fb_update_fix()
267 u8 misc; in vga16fb_clock_chip() member
279 err = *pixclock - best->pixclock; in vga16fb_clock_chip()
280 if (err < 0) err = -err; in vga16fb_clock_chip()
281 for (ptr = vgaclocks + 1; ptr->pixclock; ptr++) { in vga16fb_clock_chip()
284 tmp = *pixclock - ptr->pixclock; in vga16fb_clock_chip()
285 if (tmp < 0) tmp = -tmp; in vga16fb_clock_chip()
291 par->misc |= best->misc; in vga16fb_clock_chip()
292 par->clkdiv = best->seq_clock_mode; in vga16fb_clock_chip()
293 *pixclock = (best->pixclock * div) / mul; in vga16fb_clock_chip()
296 #define FAIL(X) return -EINVAL
300 struct vga16fb_par *par = info->par; in vga16fb_open()
302 if (!par->ref_count) { in vga16fb_open()
303 memset(&par->state, 0, sizeof(struct vgastate)); in vga16fb_open()
304 par->state.flags = VGA_SAVE_FONTS | VGA_SAVE_MODE | in vga16fb_open()
306 save_vga(&par->state); in vga16fb_open()
308 par->ref_count++; in vga16fb_open()
315 struct vga16fb_par *par = info->par; in vga16fb_release()
317 if (!par->ref_count) in vga16fb_release()
318 return -EINVAL; in vga16fb_release()
320 if (par->ref_count == 1) in vga16fb_release()
321 restore_vga(&par->state); in vga16fb_release()
322 par->ref_count--; in vga16fb_release()
330 struct vga16fb_par *par = info->par; in vga16fb_check_var()
340 par->pel_msk = 0xFF; in vga16fb_check_var()
342 if (var->bits_per_pixel == 4) { in vga16fb_check_var()
343 if (var->nonstd) { in vga16fb_check_var()
344 if (!par->isVGA) in vga16fb_check_var()
345 return -EINVAL; in vga16fb_check_var()
349 par->pel_msk = 0x0F; in vga16fb_check_var()
355 } else if (var->bits_per_pixel == 8) { in vga16fb_check_var()
356 if (!par->isVGA) in vga16fb_check_var()
357 return -EINVAL; /* no support on EGA */ in vga16fb_check_var()
359 if (var->nonstd) { in vga16fb_check_var()
367 return -EINVAL; in vga16fb_check_var()
369 xres = (var->xres + 7) & ~7; in vga16fb_check_var()
370 vxres = (var->xres_virtual + 0xF) & ~0xF; in vga16fb_check_var()
371 xoffset = (var->xoffset + 7) & ~7; in vga16fb_check_var()
372 left = (var->left_margin + 7) & ~7; in vga16fb_check_var()
373 right = (var->right_margin + 7) & ~7; in vga16fb_check_var()
374 hslen = (var->hsync_len + 7) & ~7; in vga16fb_check_var()
379 xoffset = vxres - xres; in vga16fb_check_var()
381 var->xres = xres; in vga16fb_check_var()
382 var->right_margin = right; in vga16fb_check_var()
383 var->hsync_len = hslen; in vga16fb_check_var()
384 var->left_margin = left; in vga16fb_check_var()
385 var->xres_virtual = vxres; in vga16fb_check_var()
386 var->xoffset = xoffset; in vga16fb_check_var()
400 par->crtc[VGA_CRTC_H_TOTAL] = xtotal - 5; in vga16fb_check_var()
401 par->crtc[VGA_CRTC_H_BLANK_START] = xres - 1; in vga16fb_check_var()
402 par->crtc[VGA_CRTC_H_DISP] = xres - 1; in vga16fb_check_var()
404 par->crtc[VGA_CRTC_H_SYNC_START] = pos; in vga16fb_check_var()
406 par->crtc[VGA_CRTC_H_SYNC_END] = pos & 0x1F; in vga16fb_check_var()
407 pos += left - 2; /* blank_end + 2 <= total + 5 */ in vga16fb_check_var()
408 par->crtc[VGA_CRTC_H_BLANK_END] = (pos & 0x1F) | 0x80; in vga16fb_check_var()
410 par->crtc[VGA_CRTC_H_SYNC_END] |= 0x80; in vga16fb_check_var()
412 yres = var->yres; in vga16fb_check_var()
413 lower = var->lower_margin; in vga16fb_check_var()
414 vslen = var->vsync_len; in vga16fb_check_var()
415 upper = var->upper_margin; in vga16fb_check_var()
416 vyres = var->yres_virtual; in vga16fb_check_var()
417 yoffset = var->yoffset; in vga16fb_check_var()
424 return -ENOMEM; in vga16fb_check_var()
427 yoffset = vyres - yres; in vga16fb_check_var()
428 var->yres = yres; in vga16fb_check_var()
429 var->lower_margin = lower; in vga16fb_check_var()
430 var->vsync_len = vslen; in vga16fb_check_var()
431 var->upper_margin = upper; in vga16fb_check_var()
432 var->yres_virtual = vyres; in vga16fb_check_var()
433 var->yoffset = yoffset; in vga16fb_check_var()
435 if (var->vmode & FB_VMODE_DOUBLE) { in vga16fb_check_var()
455 par->crtc[VGA_CRTC_V_TOTAL] = ytotal - 2; in vga16fb_check_var()
459 par->crtc[VGA_CRTC_PRESET_ROW] = 0; in vga16fb_check_var()
460 par->crtc[VGA_CRTC_MAX_SCAN] = 0x40; /* 1 scanline, no linecmp */ in vga16fb_check_var()
461 if (var->vmode & FB_VMODE_DOUBLE) in vga16fb_check_var()
462 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x80; in vga16fb_check_var()
463 par->crtc[VGA_CRTC_CURSOR_START] = 0x20; in vga16fb_check_var()
464 par->crtc[VGA_CRTC_CURSOR_END] = 0x00; in vga16fb_check_var()
466 xoffset--; in vga16fb_check_var()
468 par->crtc[VGA_CRTC_START_HI] = pos >> 8; in vga16fb_check_var()
469 par->crtc[VGA_CRTC_START_LO] = pos & 0xFF; in vga16fb_check_var()
470 par->crtc[VGA_CRTC_CURSOR_HI] = 0x00; in vga16fb_check_var()
471 par->crtc[VGA_CRTC_CURSOR_LO] = 0x00; in vga16fb_check_var()
472 pos = yres - 1; in vga16fb_check_var()
473 par->crtc[VGA_CRTC_V_DISP_END] = pos & 0xFF; in vga16fb_check_var()
474 par->crtc[VGA_CRTC_V_BLANK_START] = pos & 0xFF; in vga16fb_check_var()
476 r7 |= 0x0A; /* 0x02 -> DISP_END, 0x08 -> BLANK_START */ in vga16fb_check_var()
478 r7 |= 0x40; /* 0x40 -> DISP_END */ in vga16fb_check_var()
479 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x20; /* BLANK_START */ in vga16fb_check_var()
482 par->crtc[VGA_CRTC_V_SYNC_START] = pos & 0xFF; in vga16fb_check_var()
488 par->crtc[VGA_CRTC_V_SYNC_END] = (pos & 0x0F) & ~0x10; /* disabled IRQ */ in vga16fb_check_var()
489 pos += upper - 1; /* blank_end + 1 <= ytotal + 2 */ in vga16fb_check_var()
490 par->crtc[VGA_CRTC_V_BLANK_END] = pos & 0xFF; /* 0x7F for original VGA, in vga16fb_check_var()
494 par->crtc[VGA_CRTC_OFFSET] = vxres >> 1; in vga16fb_check_var()
496 par->crtc[VGA_CRTC_UNDERLINE] = 0x5F; /* 256, cfb8 */ in vga16fb_check_var()
498 par->crtc[VGA_CRTC_UNDERLINE] = 0x1F; /* 16, vgap */ in vga16fb_check_var()
499 par->crtc[VGA_CRTC_MODE] = rMode | ((mode & MODE_TEXT) ? 0xA3 : 0xE3); in vga16fb_check_var()
500 par->crtc[VGA_CRTC_LINE_COMPARE] = 0xFF; in vga16fb_check_var()
501 par->crtc[VGA_CRTC_OVERFLOW] = r7; in vga16fb_check_var()
503 par->vss = 0x00; /* 3DA */ in vga16fb_check_var()
505 par->misc = 0xE3; /* enable CPU, ports 0x3Dx, positive sync */ in vga16fb_check_var()
506 if (var->sync & FB_SYNC_HOR_HIGH_ACT) in vga16fb_check_var()
507 par->misc &= ~0x40; in vga16fb_check_var()
508 if (var->sync & FB_SYNC_VERT_HIGH_ACT) in vga16fb_check_var()
509 par->misc &= ~0x80; in vga16fb_check_var()
511 par->mode = mode; in vga16fb_check_var()
515 vga16fb_clock_chip(par, &var->pixclock, info, 1, 2); in vga16fb_check_var()
518 vga16fb_clock_chip(par, &var->pixclock, info, 1, 1); in vga16fb_check_var()
520 var->red.offset = var->green.offset = var->blue.offset = in vga16fb_check_var()
521 var->transp.offset = 0; in vga16fb_check_var()
522 var->red.length = var->green.length = var->blue.length = in vga16fb_check_var()
523 (par->isVGA) ? 6 : 2; in vga16fb_check_var()
524 var->transp.length = 0; in vga16fb_check_var()
525 var->activate = FB_ACTIVATE_NOW; in vga16fb_check_var()
526 var->height = -1; in vga16fb_check_var()
527 var->width = -1; in vga16fb_check_var()
528 var->accel_flags = 0; in vga16fb_check_var()
535 struct vga16fb_par *par = info->par; in vga16fb_set_par()
541 seq[VGA_SEQ_CLOCK_MODE] = 0x01 | par->clkdiv; in vga16fb_set_par()
542 if (par->mode & MODE_TEXT) in vga16fb_set_par()
547 if (par->mode & MODE_TEXT) in vga16fb_set_par()
549 else if (par->mode & MODE_SKIP4) in vga16fb_set_par()
559 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
563 if (par->mode & MODE_CFB) in vga16fb_set_par()
574 if (par->mode & MODE_TEXT) in vga16fb_set_par()
576 else if (par->mode & MODE_8BPP) in vga16fb_set_par()
582 if (par->mode & MODE_8BPP) in vga16fb_set_par()
583 atc[VGA_ATC_PEL] = (info->var.xoffset & 3) << 1; in vga16fb_set_par()
585 atc[VGA_ATC_PEL] = info->var.xoffset & 7; in vga16fb_set_par()
588 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
590 par->crtc[VGA_CRTC_MAX_SCAN] = (par->crtc[VGA_CRTC_MAX_SCAN] in vga16fb_set_par()
591 & ~0x1F) | (fh - 1); in vga16fb_set_par()
597 if (!par->isVGA) { in vga16fb_set_par()
602 /* update misc output register */ in vga16fb_set_par()
603 vga_io_w(VGA_MIS_W, par->misc); in vga16fb_set_par()
608 if (par->isVGA) in vga16fb_set_par()
609 vga_io_w(VGA_PEL_MSK, par->pel_msk); in vga16fb_set_par()
620 /* deprotect CRT registers 0-7 */ in vga16fb_set_par()
621 vga_io_wcrt(VGA_CRTC_V_SYNC_END, par->crtc[VGA_CRTC_V_SYNC_END]); in vga16fb_set_par()
625 vga_io_wcrt(i, par->crtc[i]); in vga16fb_set_par()
635 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_set_par()
677 struct vga16fb_par *par = info->par; in vga16fb_setcolreg()
690 gray = info->var.grayscale; in vga16fb_setcolreg()
696 if (par->isVGA) in vga16fb_setcolreg()
721 if(!par->vesa_blanked) { in vga_vesa_blank()
722 par->vga_state.CrtMiscIO = vga_io_r(VGA_MIS_R); in vga_vesa_blank()
725 par->vga_state.HorizontalTotal = vga_io_rcrt(0x00); /* HorizontalTotal */ in vga_vesa_blank()
726 par->vga_state.HorizDisplayEnd = vga_io_rcrt(0x01); /* HorizDisplayEnd */ in vga_vesa_blank()
727 par->vga_state.StartHorizRetrace = vga_io_rcrt(0x04); /* StartHorizRetrace */ in vga_vesa_blank()
728 par->vga_state.EndHorizRetrace = vga_io_rcrt(0x05); /* EndHorizRetrace */ in vga_vesa_blank()
729 par->vga_state.Overflow = vga_io_rcrt(0x07); /* Overflow */ in vga_vesa_blank()
730 par->vga_state.StartVertRetrace = vga_io_rcrt(0x10); /* StartVertRetrace */ in vga_vesa_blank()
731 par->vga_state.EndVertRetrace = vga_io_rcrt(0x11); /* EndVertRetrace */ in vga_vesa_blank()
732 par->vga_state.ModeControl = vga_io_rcrt(0x17); /* ModeControl */ in vga_vesa_blank()
733 par->vga_state.ClockingMode = vga_io_rseq(0x01); /* ClockingMode */ in vga_vesa_blank()
738 vga_io_wseq(0x01, par->vga_state.ClockingMode | 0x20); in vga_vesa_blank()
741 if ((par->vga_state.CrtMiscIO & 0x80) == 0x80) in vga_vesa_blank()
742 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO & 0xef); in vga_vesa_blank()
753 vga_io_wcrt(VGA_CRTC_OVERFLOW, par->vga_state.Overflow | 0x84); in vga_vesa_blank()
777 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO); in vga_vesa_unblank()
780 vga_io_wcrt(0x00, par->vga_state.HorizontalTotal); in vga_vesa_unblank()
782 vga_io_wcrt(0x01, par->vga_state.HorizDisplayEnd); in vga_vesa_unblank()
784 vga_io_wcrt(0x04, par->vga_state.StartHorizRetrace); in vga_vesa_unblank()
786 vga_io_wcrt(0x05, par->vga_state.EndHorizRetrace); in vga_vesa_unblank()
788 vga_io_wcrt(0x07, par->vga_state.Overflow); in vga_vesa_unblank()
790 vga_io_wcrt(0x10, par->vga_state.StartVertRetrace); in vga_vesa_unblank()
792 vga_io_wcrt(0x11, par->vga_state.EndVertRetrace); in vga_vesa_unblank()
794 vga_io_wcrt(0x17, par->vga_state.ModeControl); in vga_vesa_unblank()
796 vga_io_wseq(0x01, par->vga_state.ClockingMode); in vga_vesa_unblank()
818 struct vga16fb_par *par = info->par; in vga16fb_blank()
822 if (par->vesa_blanked) { in vga16fb_blank()
824 par->vesa_blanked = 0; in vga16fb_blank()
826 if (par->palette_blanked) { in vga16fb_blank()
827 par->palette_blanked = 0; in vga16fb_blank()
832 par->palette_blanked = 1; in vga16fb_blank()
836 par->vesa_blanked = 1; in vga16fb_blank()
844 u32 dx = rect->dx, width = rect->width; in vga_8planes_fillrect()
853 where = info->screen_base + dx + rect->dy * info->fix.line_length; in vga_8planes_fillrect()
855 if (rect->rop == ROP_COPY) { in vga_8planes_fillrect()
860 line_ofs = info->fix.line_length - width; in vga_8planes_fillrect()
863 height = rect->height; in vga_8planes_fillrect()
865 while (height--) { in vga_8planes_fillrect()
869 for (x = width; x > 0; --x) { in vga_8planes_fillrect()
870 writeb(rect->color, where); in vga_8planes_fillrect()
882 for (y = 0; y < rect->height; y++) { in vga_8planes_fillrect()
885 where += info->fix.line_length; in vga_8planes_fillrect()
901 vxres = info->var.xres_virtual; in vga16fb_fillrect()
902 vyres = info->var.yres_virtual; in vga16fb_fillrect()
904 if (!rect->width || !rect->height || rect->dx > vxres || rect->dy > vyres) in vga16fb_fillrect()
910 x2 = rect->dx + rect->width; in vga16fb_fillrect()
911 y2 = rect->dy + rect->height; in vga16fb_fillrect()
914 width = x2 - rect->dx; in vga16fb_fillrect()
916 switch (info->fix.type) { in vga16fb_fillrect()
918 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_fillrect()
920 height = y2 - rect->dy; in vga16fb_fillrect()
921 width = rect->width/8; in vga16fb_fillrect()
923 line_ofs = info->fix.line_length - width; in vga16fb_fillrect()
924 dst = info->screen_base + (rect->dx/8) + rect->dy * info->fix.line_length; in vga16fb_fillrect()
926 switch (rect->rop) { in vga16fb_fillrect()
931 setcolor(rect->color); in vga16fb_fillrect()
936 while (height--) { in vga16fb_fillrect()
952 while (height--) { in vga16fb_fillrect()
982 height = area->height; in vga_8planes_copyarea()
984 sx = area->sx / 4; in vga_8planes_copyarea()
985 dx = area->dx / 4; in vga_8planes_copyarea()
986 width = area->width / 4; in vga_8planes_copyarea()
988 if (area->dy < area->sy || (area->dy == area->sy && dx < sx)) { in vga_8planes_copyarea()
989 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
990 dest = info->screen_base + dx + area->dy * info->fix.line_length; in vga_8planes_copyarea()
991 src = info->screen_base + sx + area->sy * info->fix.line_length; in vga_8planes_copyarea()
992 while (height--) { in vga_8planes_copyarea()
1003 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
1004 dest = info->screen_base + dx + width + in vga_8planes_copyarea()
1005 (area->dy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1006 src = info->screen_base + sx + width + in vga_8planes_copyarea()
1007 (area->sy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1008 while (height--) { in vga_8planes_copyarea()
1010 --src; in vga_8planes_copyarea()
1011 --dest; in vga_8planes_copyarea()
1015 src -= line_ofs; in vga_8planes_copyarea()
1016 dest -= line_ofs; in vga_8planes_copyarea()
1028 u32 dx = area->dx, dy = area->dy, sx = area->sx, sy = area->sy; in vga16fb_copyarea()
1034 vxres = info->var.xres_virtual; in vga16fb_copyarea()
1035 vyres = info->var.yres_virtual; in vga16fb_copyarea()
1037 if (area->dx > vxres || area->sx > vxres || area->dy > vyres || in vga16fb_copyarea()
1038 area->sy > vyres) in vga16fb_copyarea()
1042 old_dx = area->dx; in vga16fb_copyarea()
1043 old_dy = area->dy; in vga16fb_copyarea()
1049 x2 = area->dx + area->width; in vga16fb_copyarea()
1050 y2 = area->dy + area->height; in vga16fb_copyarea()
1051 dx = area->dx > 0 ? area->dx : 0; in vga16fb_copyarea()
1052 dy = area->dy > 0 ? area->dy : 0; in vga16fb_copyarea()
1055 width = x2 - dx; in vga16fb_copyarea()
1056 height = y2 - dy; in vga16fb_copyarea()
1062 sx += (dx - old_dx); in vga16fb_copyarea()
1063 sy += (dy - old_dy); in vga16fb_copyarea()
1069 switch (info->fix.type) { in vga16fb_copyarea()
1071 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_copyarea()
1073 line_ofs = info->fix.line_length - width; in vga16fb_copyarea()
1080 dst = info->screen_base + (dx/8) + dy * info->fix.line_length; in vga16fb_copyarea()
1081 src = info->screen_base + (sx/8) + sy * info->fix.line_length; in vga16fb_copyarea()
1082 while (height--) { in vga16fb_copyarea()
1093 dst = info->screen_base + (dx/8) + width + in vga16fb_copyarea()
1094 (dy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1095 src = info->screen_base + (sx/8) + width + in vga16fb_copyarea()
1096 (sy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1097 while (height--) { in vga16fb_copyarea()
1099 dst--; in vga16fb_copyarea()
1100 src--; in vga16fb_copyarea()
1104 src -= line_ofs; in vga16fb_copyarea()
1105 dst -= line_ofs; in vga16fb_copyarea()
1129 #error "Only __BIG_ENDIAN and __LITTLE_ENDIAN are supported in vga-planes"
1139 const unsigned char *cdat = image->data; in vga_8planes_imageblit()
1140 u32 dx = image->dx; in vga_8planes_imageblit()
1145 where = info->screen_base + dx + image->dy * info->fix.line_length; in vga_8planes_imageblit()
1148 writeb(image->bg_color, where); in vga_8planes_imageblit()
1151 setmask(image->fg_color ^ image->bg_color); in vga_8planes_imageblit()
1154 for (y = 0; y < image->height; y++, where += info->fix.line_length) in vga_8planes_imageblit()
1165 char __iomem *where = info->screen_base + (image->dx/8) + in vga_imageblit_expand()
1166 image->dy * info->fix.line_length; in vga_imageblit_expand()
1167 struct vga16fb_par *par = info->par; in vga_imageblit_expand()
1168 char *cdat = (char *) image->data; in vga_imageblit_expand()
1172 switch (info->fix.type) { in vga_imageblit_expand()
1174 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga_imageblit_expand()
1175 if (par->isVGA) { in vga_imageblit_expand()
1179 setcolor(image->fg_color); in vga_imageblit_expand()
1183 writeb(image->bg_color, where); in vga_imageblit_expand()
1188 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1190 for (x = image->width/8; x--;) in vga_imageblit_expand()
1192 where += info->fix.line_length; in vga_imageblit_expand()
1199 setcolor(image->bg_color); in vga_imageblit_expand()
1203 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1205 for (x=image->width/8; x--;){ in vga_imageblit_expand()
1207 setcolor(image->fg_color); in vga_imageblit_expand()
1214 where += info->fix.line_length; in vga_imageblit_expand()
1232 struct vga16fb_par *par = info->par; in vga_imageblit_color()
1234 info->screen_base + image->dy * info->fix.line_length + in vga_imageblit_color()
1235 image->dx/8; in vga_imageblit_color()
1236 const char *cdat = image->data; in vga_imageblit_color()
1240 switch (info->fix.type) { in vga_imageblit_color()
1242 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4 && in vga_imageblit_color()
1243 par->isVGA) { in vga_imageblit_color()
1248 for (y = 0; y < image->height; y++) { in vga_imageblit_color()
1249 for (x = 0; x < image->width; x++) { in vga_imageblit_color()
1254 setmask(1 << (7 - (x % 8))); in vga_imageblit_color()
1260 where += info->fix.line_length; in vga_imageblit_color()
1274 if (image->depth == 1) in vga16fb_imageblit()
1282 iounmap(info->screen_base); in vga16fb_destroy()
1283 fb_dealloc_cmap(&info->cmap); in vga16fb_destroy()
1313 si = dev_get_platdata(&dev->dev); in vga16fb_probe()
1315 return -ENODEV; in vga16fb_probe()
1322 info = framebuffer_alloc(sizeof(struct vga16fb_par), &dev->dev); in vga16fb_probe()
1325 ret = -ENOMEM; in vga16fb_probe()
1330 info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS_BASE, 0); in vga16fb_probe()
1332 if (!info->screen_base) { in vga16fb_probe()
1334 ret = -ENOMEM; in vga16fb_probe()
1338 printk(KERN_INFO "vga16fb: mapped to 0x%p\n", info->screen_base); in vga16fb_probe()
1339 par = info->par; in vga16fb_probe()
1341 par->isVGA = si->orig_video_isVGA == VIDEO_TYPE_VGAC; in vga16fb_probe()
1342 par->palette_blanked = 0; in vga16fb_probe()
1343 par->vesa_blanked = 0; in vga16fb_probe()
1345 i = par->isVGA? 6 : 2; in vga16fb_probe()
1352 info->fbops = &vga16fb_ops; in vga16fb_probe()
1353 info->var = vga16fb_defined; in vga16fb_probe()
1354 info->fix = vga16fb_fix; in vga16fb_probe()
1356 info->pixmap.blit_x = 1 << 7 | 1 << 15 | 1 << 23 | 1 << 31; in vga16fb_probe()
1357 info->flags = FBINFO_HWACCEL_YPAN; in vga16fb_probe()
1359 i = (info->var.bits_per_pixel == 8) ? 256 : 16; in vga16fb_probe()
1360 ret = fb_alloc_cmap(&info->cmap, i, 0); in vga16fb_probe()
1363 ret = -ENOMEM; in vga16fb_probe()
1367 if (vga16fb_check_var(&info->var, info)) { in vga16fb_probe()
1369 ret = -EINVAL; in vga16fb_probe()
1380 ret = -EINVAL; in vga16fb_probe()
1384 fb_info(info, "%s frame buffer device\n", info->fix.id); in vga16fb_probe()
1390 fb_dealloc_cmap(&info->cmap); in vga16fb_probe()
1392 iounmap(info->screen_base); in vga16fb_probe()
1408 {"ega-framebuffer", 0},
1409 {"vga-framebuffer", 0},