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>
33 /* --------------------------------------------------------------------- */
44 unsigned char CrtCtrlIndex; /* CRT-Contr. Index reg. */
46 unsigned char HorizontalTotal; /* CRT-Controller:00h */
47 unsigned char HorizDisplayEnd; /* CRT-Controller:01h */
48 unsigned char StartHorizRetrace;/* CRT-Controller:04h */
49 unsigned char EndHorizRetrace; /* CRT-Controller:05h */
50 unsigned char Overflow; /* CRT-Controller:07h */
51 unsigned char StartVertRetrace; /* CRT-Controller:10h */
52 unsigned char EndVertRetrace; /* CRT-Controller:11h */
53 unsigned char ModeControl; /* CRT-Controller:17h */
54 unsigned char ClockingMode; /* Seq-Controller:01h */
59 u8 misc, pel_msk, vss, clkdiv; member
63 /* --------------------------------------------------------------------- */
72 .height = -1,
73 .width = -1,
101 the scenes in the VGA's 32-bit latch register, and reading and writing
102 video memory just invokes latch behavior.
107 read-modify-write routine should optimize to one such bitwise
116 Bits 0-1 are write mode, bit 3 is read mode. */
140 Bits 0-2 are rotate count, bits 3-4 are logical operation
187 /* non-x86 architectures treat orig_video_isVGA as a boolean flag */ in check_mode_supported()
190 if (si->orig_video_isVGA != VIDEO_TYPE_EGAC && in check_mode_supported()
191 si->orig_video_isVGA != VIDEO_TYPE_VGAC) in check_mode_supported()
192 return -ENODEV; in check_mode_supported()
194 if (si->orig_video_mode != 0x0D && /* 320x200/4 (EGA) */ in check_mode_supported()
195 si->orig_video_mode != 0x0E && /* 640x200/4 (EGA) */ in check_mode_supported()
196 si->orig_video_mode != 0x10 && /* 640x350/4 (EGA) */ in check_mode_supported()
197 si->orig_video_mode != 0x12) /* 640x480/4 (VGA) */ in check_mode_supported()
198 return -ENODEV; in check_mode_supported()
206 struct vga16fb_par *par = info->par; in vga16fb_pan_var()
209 xoffset = var->xoffset; in vga16fb_pan_var()
210 if (info->var.bits_per_pixel == 8) { in vga16fb_pan_var()
211 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 2; in vga16fb_pan_var()
212 } else if (par->mode & MODE_TEXT) { in vga16fb_pan_var()
214 pos = (info->var.xres_virtual * (var->yoffset / fh) + xoffset) >> 3; in vga16fb_pan_var()
216 if (info->var.nonstd) in vga16fb_pan_var()
217 xoffset--; in vga16fb_pan_var()
218 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 3; in vga16fb_pan_var()
224 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_pan_var()
226 if (info->var.bits_per_pixel == 8) in vga16fb_pan_var()
236 if (info->var.bits_per_pixel == 4) { in vga16fb_update_fix()
237 if (info->var.nonstd) { in vga16fb_update_fix()
238 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
239 info->fix.line_length = info->var.xres_virtual / 2; in vga16fb_update_fix()
241 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
242 info->fix.type_aux = FB_AUX_VGA_PLANES_VGA4; in vga16fb_update_fix()
243 info->fix.line_length = info->var.xres_virtual / 8; in vga16fb_update_fix()
245 } else if (info->var.bits_per_pixel == 0) { in vga16fb_update_fix()
246 info->fix.type = FB_TYPE_TEXT; in vga16fb_update_fix()
247 info->fix.type_aux = FB_AUX_TEXT_CGA; in vga16fb_update_fix()
248 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
250 if (info->var.nonstd) { in vga16fb_update_fix()
251 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
252 info->fix.type_aux = FB_AUX_VGA_PLANES_CFB8; in vga16fb_update_fix()
253 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
255 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
256 info->fix.line_length = info->var.xres_virtual; in vga16fb_update_fix()
268 u8 misc; in vga16fb_clock_chip() member
280 err = *pixclock - best->pixclock; in vga16fb_clock_chip()
281 if (err < 0) err = -err; in vga16fb_clock_chip()
282 for (ptr = vgaclocks + 1; ptr->pixclock; ptr++) { in vga16fb_clock_chip()
285 tmp = *pixclock - ptr->pixclock; in vga16fb_clock_chip()
286 if (tmp < 0) tmp = -tmp; in vga16fb_clock_chip()
292 par->misc |= best->misc; in vga16fb_clock_chip()
293 par->clkdiv = best->seq_clock_mode; in vga16fb_clock_chip()
294 *pixclock = (best->pixclock * div) / mul; in vga16fb_clock_chip()
297 #define FAIL(X) return -EINVAL
301 struct vga16fb_par *par = info->par; in vga16fb_open()
303 if (!par->ref_count) { in vga16fb_open()
304 memset(&par->state, 0, sizeof(struct vgastate)); in vga16fb_open()
305 par->state.flags = VGA_SAVE_FONTS | VGA_SAVE_MODE | in vga16fb_open()
307 save_vga(&par->state); in vga16fb_open()
309 par->ref_count++; in vga16fb_open()
316 struct vga16fb_par *par = info->par; in vga16fb_release()
318 if (!par->ref_count) in vga16fb_release()
319 return -EINVAL; in vga16fb_release()
321 if (par->ref_count == 1) in vga16fb_release()
322 restore_vga(&par->state); in vga16fb_release()
323 par->ref_count--; in vga16fb_release()
331 struct vga16fb_par *par = info->par; in vga16fb_check_var()
341 par->pel_msk = 0xFF; in vga16fb_check_var()
343 if (var->bits_per_pixel == 4) { in vga16fb_check_var()
344 if (var->nonstd) { in vga16fb_check_var()
345 if (!par->isVGA) in vga16fb_check_var()
346 return -EINVAL; in vga16fb_check_var()
350 par->pel_msk = 0x0F; in vga16fb_check_var()
356 } else if (var->bits_per_pixel == 8) { in vga16fb_check_var()
357 if (!par->isVGA) in vga16fb_check_var()
358 return -EINVAL; /* no support on EGA */ in vga16fb_check_var()
360 if (var->nonstd) { in vga16fb_check_var()
368 return -EINVAL; in vga16fb_check_var()
370 xres = (var->xres + 7) & ~7; in vga16fb_check_var()
371 vxres = (var->xres_virtual + 0xF) & ~0xF; in vga16fb_check_var()
372 xoffset = (var->xoffset + 7) & ~7; in vga16fb_check_var()
373 left = (var->left_margin + 7) & ~7; in vga16fb_check_var()
374 right = (var->right_margin + 7) & ~7; in vga16fb_check_var()
375 hslen = (var->hsync_len + 7) & ~7; in vga16fb_check_var()
380 xoffset = vxres - xres; in vga16fb_check_var()
382 var->xres = xres; in vga16fb_check_var()
383 var->right_margin = right; in vga16fb_check_var()
384 var->hsync_len = hslen; in vga16fb_check_var()
385 var->left_margin = left; in vga16fb_check_var()
386 var->xres_virtual = vxres; in vga16fb_check_var()
387 var->xoffset = xoffset; in vga16fb_check_var()
401 par->crtc[VGA_CRTC_H_TOTAL] = xtotal - 5; in vga16fb_check_var()
402 par->crtc[VGA_CRTC_H_BLANK_START] = xres - 1; in vga16fb_check_var()
403 par->crtc[VGA_CRTC_H_DISP] = xres - 1; in vga16fb_check_var()
405 par->crtc[VGA_CRTC_H_SYNC_START] = pos; in vga16fb_check_var()
407 par->crtc[VGA_CRTC_H_SYNC_END] = pos & 0x1F; in vga16fb_check_var()
408 pos += left - 2; /* blank_end + 2 <= total + 5 */ in vga16fb_check_var()
409 par->crtc[VGA_CRTC_H_BLANK_END] = (pos & 0x1F) | 0x80; in vga16fb_check_var()
411 par->crtc[VGA_CRTC_H_SYNC_END] |= 0x80; in vga16fb_check_var()
413 yres = var->yres; in vga16fb_check_var()
414 lower = var->lower_margin; in vga16fb_check_var()
415 vslen = var->vsync_len; in vga16fb_check_var()
416 upper = var->upper_margin; in vga16fb_check_var()
417 vyres = var->yres_virtual; in vga16fb_check_var()
418 yoffset = var->yoffset; in vga16fb_check_var()
425 return -ENOMEM; in vga16fb_check_var()
428 yoffset = vyres - yres; in vga16fb_check_var()
429 var->yres = yres; in vga16fb_check_var()
430 var->lower_margin = lower; in vga16fb_check_var()
431 var->vsync_len = vslen; in vga16fb_check_var()
432 var->upper_margin = upper; in vga16fb_check_var()
433 var->yres_virtual = vyres; in vga16fb_check_var()
434 var->yoffset = yoffset; in vga16fb_check_var()
436 if (var->vmode & FB_VMODE_DOUBLE) { in vga16fb_check_var()
456 par->crtc[VGA_CRTC_V_TOTAL] = ytotal - 2; in vga16fb_check_var()
460 par->crtc[VGA_CRTC_PRESET_ROW] = 0; in vga16fb_check_var()
461 par->crtc[VGA_CRTC_MAX_SCAN] = 0x40; /* 1 scanline, no linecmp */ in vga16fb_check_var()
462 if (var->vmode & FB_VMODE_DOUBLE) in vga16fb_check_var()
463 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x80; in vga16fb_check_var()
464 par->crtc[VGA_CRTC_CURSOR_START] = 0x20; in vga16fb_check_var()
465 par->crtc[VGA_CRTC_CURSOR_END] = 0x00; in vga16fb_check_var()
467 xoffset--; in vga16fb_check_var()
469 par->crtc[VGA_CRTC_START_HI] = pos >> 8; in vga16fb_check_var()
470 par->crtc[VGA_CRTC_START_LO] = pos & 0xFF; in vga16fb_check_var()
471 par->crtc[VGA_CRTC_CURSOR_HI] = 0x00; in vga16fb_check_var()
472 par->crtc[VGA_CRTC_CURSOR_LO] = 0x00; in vga16fb_check_var()
473 pos = yres - 1; in vga16fb_check_var()
474 par->crtc[VGA_CRTC_V_DISP_END] = pos & 0xFF; in vga16fb_check_var()
475 par->crtc[VGA_CRTC_V_BLANK_START] = pos & 0xFF; in vga16fb_check_var()
477 r7 |= 0x0A; /* 0x02 -> DISP_END, 0x08 -> BLANK_START */ in vga16fb_check_var()
479 r7 |= 0x40; /* 0x40 -> DISP_END */ in vga16fb_check_var()
480 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x20; /* BLANK_START */ in vga16fb_check_var()
483 par->crtc[VGA_CRTC_V_SYNC_START] = pos & 0xFF; in vga16fb_check_var()
489 par->crtc[VGA_CRTC_V_SYNC_END] = (pos & 0x0F) & ~0x10; /* disabled IRQ */ in vga16fb_check_var()
490 pos += upper - 1; /* blank_end + 1 <= ytotal + 2 */ in vga16fb_check_var()
491 par->crtc[VGA_CRTC_V_BLANK_END] = pos & 0xFF; /* 0x7F for original VGA, in vga16fb_check_var()
495 par->crtc[VGA_CRTC_OFFSET] = vxres >> 1; in vga16fb_check_var()
497 par->crtc[VGA_CRTC_UNDERLINE] = 0x5F; /* 256, cfb8 */ in vga16fb_check_var()
499 par->crtc[VGA_CRTC_UNDERLINE] = 0x1F; /* 16, vgap */ in vga16fb_check_var()
500 par->crtc[VGA_CRTC_MODE] = rMode | ((mode & MODE_TEXT) ? 0xA3 : 0xE3); in vga16fb_check_var()
501 par->crtc[VGA_CRTC_LINE_COMPARE] = 0xFF; in vga16fb_check_var()
502 par->crtc[VGA_CRTC_OVERFLOW] = r7; in vga16fb_check_var()
504 par->vss = 0x00; /* 3DA */ in vga16fb_check_var()
506 par->misc = 0xE3; /* enable CPU, ports 0x3Dx, positive sync */ in vga16fb_check_var()
507 if (var->sync & FB_SYNC_HOR_HIGH_ACT) in vga16fb_check_var()
508 par->misc &= ~0x40; in vga16fb_check_var()
509 if (var->sync & FB_SYNC_VERT_HIGH_ACT) in vga16fb_check_var()
510 par->misc &= ~0x80; in vga16fb_check_var()
512 par->mode = mode; in vga16fb_check_var()
516 vga16fb_clock_chip(par, &var->pixclock, info, 1, 2); in vga16fb_check_var()
519 vga16fb_clock_chip(par, &var->pixclock, info, 1, 1); in vga16fb_check_var()
521 var->red.offset = var->green.offset = var->blue.offset = in vga16fb_check_var()
522 var->transp.offset = 0; in vga16fb_check_var()
523 var->red.length = var->green.length = var->blue.length = in vga16fb_check_var()
524 (par->isVGA) ? 6 : 2; in vga16fb_check_var()
525 var->transp.length = 0; in vga16fb_check_var()
526 var->activate = FB_ACTIVATE_NOW; in vga16fb_check_var()
527 var->height = -1; in vga16fb_check_var()
528 var->width = -1; in vga16fb_check_var()
529 var->accel_flags = 0; in vga16fb_check_var()
536 struct vga16fb_par *par = info->par; in vga16fb_set_par()
542 seq[VGA_SEQ_CLOCK_MODE] = 0x01 | par->clkdiv; in vga16fb_set_par()
543 if (par->mode & MODE_TEXT) in vga16fb_set_par()
548 if (par->mode & MODE_TEXT) in vga16fb_set_par()
550 else if (par->mode & MODE_SKIP4) in vga16fb_set_par()
560 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
564 if (par->mode & MODE_CFB) in vga16fb_set_par()
575 if (par->mode & MODE_TEXT) in vga16fb_set_par()
577 else if (par->mode & MODE_8BPP) in vga16fb_set_par()
583 if (par->mode & MODE_8BPP) in vga16fb_set_par()
584 atc[VGA_ATC_PEL] = (info->var.xoffset & 3) << 1; in vga16fb_set_par()
586 atc[VGA_ATC_PEL] = info->var.xoffset & 7; in vga16fb_set_par()
589 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
591 par->crtc[VGA_CRTC_MAX_SCAN] = (par->crtc[VGA_CRTC_MAX_SCAN] in vga16fb_set_par()
592 & ~0x1F) | (fh - 1); in vga16fb_set_par()
598 if (!par->isVGA) { in vga16fb_set_par()
603 /* update misc output register */ in vga16fb_set_par()
604 vga_io_w(VGA_MIS_W, par->misc); in vga16fb_set_par()
609 if (par->isVGA) in vga16fb_set_par()
610 vga_io_w(VGA_PEL_MSK, par->pel_msk); in vga16fb_set_par()
621 /* deprotect CRT registers 0-7 */ in vga16fb_set_par()
622 vga_io_wcrt(VGA_CRTC_V_SYNC_END, par->crtc[VGA_CRTC_V_SYNC_END]); in vga16fb_set_par()
626 vga_io_wcrt(i, par->crtc[i]); in vga16fb_set_par()
636 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_set_par()
678 struct vga16fb_par *par = info->par; in vga16fb_setcolreg()
691 gray = info->var.grayscale; in vga16fb_setcolreg()
697 if (par->isVGA) in vga16fb_setcolreg()
722 if(!par->vesa_blanked) { in vga_vesa_blank()
723 par->vga_state.CrtMiscIO = vga_io_r(VGA_MIS_R); in vga_vesa_blank()
726 par->vga_state.HorizontalTotal = vga_io_rcrt(0x00); /* HorizontalTotal */ in vga_vesa_blank()
727 par->vga_state.HorizDisplayEnd = vga_io_rcrt(0x01); /* HorizDisplayEnd */ in vga_vesa_blank()
728 par->vga_state.StartHorizRetrace = vga_io_rcrt(0x04); /* StartHorizRetrace */ in vga_vesa_blank()
729 par->vga_state.EndHorizRetrace = vga_io_rcrt(0x05); /* EndHorizRetrace */ in vga_vesa_blank()
730 par->vga_state.Overflow = vga_io_rcrt(0x07); /* Overflow */ in vga_vesa_blank()
731 par->vga_state.StartVertRetrace = vga_io_rcrt(0x10); /* StartVertRetrace */ in vga_vesa_blank()
732 par->vga_state.EndVertRetrace = vga_io_rcrt(0x11); /* EndVertRetrace */ in vga_vesa_blank()
733 par->vga_state.ModeControl = vga_io_rcrt(0x17); /* ModeControl */ in vga_vesa_blank()
734 par->vga_state.ClockingMode = vga_io_rseq(0x01); /* ClockingMode */ in vga_vesa_blank()
739 vga_io_wseq(0x01, par->vga_state.ClockingMode | 0x20); in vga_vesa_blank()
742 if ((par->vga_state.CrtMiscIO & 0x80) == 0x80) in vga_vesa_blank()
743 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO & 0xef); in vga_vesa_blank()
754 vga_io_wcrt(VGA_CRTC_OVERFLOW, par->vga_state.Overflow | 0x84); in vga_vesa_blank()
778 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO); in vga_vesa_unblank()
781 vga_io_wcrt(0x00, par->vga_state.HorizontalTotal); in vga_vesa_unblank()
783 vga_io_wcrt(0x01, par->vga_state.HorizDisplayEnd); in vga_vesa_unblank()
785 vga_io_wcrt(0x04, par->vga_state.StartHorizRetrace); in vga_vesa_unblank()
787 vga_io_wcrt(0x05, par->vga_state.EndHorizRetrace); in vga_vesa_unblank()
789 vga_io_wcrt(0x07, par->vga_state.Overflow); in vga_vesa_unblank()
791 vga_io_wcrt(0x10, par->vga_state.StartVertRetrace); in vga_vesa_unblank()
793 vga_io_wcrt(0x11, par->vga_state.EndVertRetrace); in vga_vesa_unblank()
795 vga_io_wcrt(0x17, par->vga_state.ModeControl); in vga_vesa_unblank()
797 vga_io_wseq(0x01, par->vga_state.ClockingMode); in vga_vesa_unblank()
819 struct vga16fb_par *par = info->par; in vga16fb_blank()
823 if (par->vesa_blanked) { in vga16fb_blank()
825 par->vesa_blanked = 0; in vga16fb_blank()
827 if (par->palette_blanked) { in vga16fb_blank()
828 par->palette_blanked = 0; in vga16fb_blank()
833 par->palette_blanked = 1; in vga16fb_blank()
837 par->vesa_blanked = 1; in vga16fb_blank()
845 u32 dx = rect->dx, width = rect->width; in vga_8planes_fillrect()
854 where = info->screen_base + dx + rect->dy * info->fix.line_length; in vga_8planes_fillrect()
856 if (rect->rop == ROP_COPY) { in vga_8planes_fillrect()
861 line_ofs = info->fix.line_length - width; in vga_8planes_fillrect()
864 height = rect->height; in vga_8planes_fillrect()
866 while (height--) { in vga_8planes_fillrect()
870 for (x = width; x > 0; --x) { in vga_8planes_fillrect()
871 writeb(rect->color, where); in vga_8planes_fillrect()
883 for (y = 0; y < rect->height; y++) { in vga_8planes_fillrect()
886 where += info->fix.line_length; in vga_8planes_fillrect()
902 vxres = info->var.xres_virtual; in vga16fb_fillrect()
903 vyres = info->var.yres_virtual; in vga16fb_fillrect()
905 if (!rect->width || !rect->height || rect->dx > vxres || rect->dy > vyres) in vga16fb_fillrect()
911 x2 = rect->dx + rect->width; in vga16fb_fillrect()
912 y2 = rect->dy + rect->height; in vga16fb_fillrect()
915 width = x2 - rect->dx; in vga16fb_fillrect()
917 switch (info->fix.type) { in vga16fb_fillrect()
919 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_fillrect()
921 height = y2 - rect->dy; in vga16fb_fillrect()
922 width = rect->width/8; in vga16fb_fillrect()
924 line_ofs = info->fix.line_length - width; in vga16fb_fillrect()
925 dst = info->screen_base + (rect->dx/8) + rect->dy * info->fix.line_length; in vga16fb_fillrect()
927 switch (rect->rop) { in vga16fb_fillrect()
932 setcolor(rect->color); in vga16fb_fillrect()
937 while (height--) { in vga16fb_fillrect()
953 while (height--) { in vga16fb_fillrect()
983 height = area->height; in vga_8planes_copyarea()
985 sx = area->sx / 4; in vga_8planes_copyarea()
986 dx = area->dx / 4; in vga_8planes_copyarea()
987 width = area->width / 4; in vga_8planes_copyarea()
989 if (area->dy < area->sy || (area->dy == area->sy && dx < sx)) { in vga_8planes_copyarea()
990 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
991 dest = info->screen_base + dx + area->dy * info->fix.line_length; in vga_8planes_copyarea()
992 src = info->screen_base + sx + area->sy * info->fix.line_length; in vga_8planes_copyarea()
993 while (height--) { in vga_8planes_copyarea()
1004 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
1005 dest = info->screen_base + dx + width + in vga_8planes_copyarea()
1006 (area->dy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1007 src = info->screen_base + sx + width + in vga_8planes_copyarea()
1008 (area->sy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1009 while (height--) { in vga_8planes_copyarea()
1011 --src; in vga_8planes_copyarea()
1012 --dest; in vga_8planes_copyarea()
1016 src -= line_ofs; in vga_8planes_copyarea()
1017 dest -= line_ofs; in vga_8planes_copyarea()
1029 u32 dx = area->dx, dy = area->dy, sx = area->sx, sy = area->sy; in vga16fb_copyarea()
1035 vxres = info->var.xres_virtual; in vga16fb_copyarea()
1036 vyres = info->var.yres_virtual; in vga16fb_copyarea()
1038 if (area->dx > vxres || area->sx > vxres || area->dy > vyres || in vga16fb_copyarea()
1039 area->sy > vyres) in vga16fb_copyarea()
1043 old_dx = area->dx; in vga16fb_copyarea()
1044 old_dy = area->dy; in vga16fb_copyarea()
1050 x2 = area->dx + area->width; in vga16fb_copyarea()
1051 y2 = area->dy + area->height; in vga16fb_copyarea()
1052 dx = area->dx > 0 ? area->dx : 0; in vga16fb_copyarea()
1053 dy = area->dy > 0 ? area->dy : 0; in vga16fb_copyarea()
1056 width = x2 - dx; in vga16fb_copyarea()
1057 height = y2 - dy; in vga16fb_copyarea()
1063 sx += (dx - old_dx); in vga16fb_copyarea()
1064 sy += (dy - old_dy); in vga16fb_copyarea()
1070 switch (info->fix.type) { in vga16fb_copyarea()
1072 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_copyarea()
1074 line_ofs = info->fix.line_length - width; in vga16fb_copyarea()
1081 dst = info->screen_base + (dx/8) + dy * info->fix.line_length; in vga16fb_copyarea()
1082 src = info->screen_base + (sx/8) + sy * info->fix.line_length; in vga16fb_copyarea()
1083 while (height--) { in vga16fb_copyarea()
1094 dst = info->screen_base + (dx/8) + width + in vga16fb_copyarea()
1095 (dy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1096 src = info->screen_base + (sx/8) + width + in vga16fb_copyarea()
1097 (sy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1098 while (height--) { in vga16fb_copyarea()
1100 dst--; in vga16fb_copyarea()
1101 src--; in vga16fb_copyarea()
1105 src -= line_ofs; in vga16fb_copyarea()
1106 dst -= line_ofs; in vga16fb_copyarea()
1130 #error "Only __BIG_ENDIAN and __LITTLE_ENDIAN are supported in vga-planes"
1140 const unsigned char *cdat = image->data; in vga_8planes_imageblit()
1141 u32 dx = image->dx; in vga_8planes_imageblit()
1146 where = info->screen_base + dx + image->dy * info->fix.line_length; in vga_8planes_imageblit()
1149 writeb(image->bg_color, where); in vga_8planes_imageblit()
1152 setmask(image->fg_color ^ image->bg_color); in vga_8planes_imageblit()
1155 for (y = 0; y < image->height; y++, where += info->fix.line_length) in vga_8planes_imageblit()
1166 char __iomem *where = info->screen_base + (image->dx/8) + in vga_imageblit_expand()
1167 image->dy * info->fix.line_length; in vga_imageblit_expand()
1168 struct vga16fb_par *par = info->par; in vga_imageblit_expand()
1169 char *cdat = (char *) image->data; in vga_imageblit_expand()
1173 switch (info->fix.type) { in vga_imageblit_expand()
1175 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga_imageblit_expand()
1176 if (par->isVGA) { in vga_imageblit_expand()
1180 setcolor(image->fg_color); in vga_imageblit_expand()
1184 writeb(image->bg_color, where); in vga_imageblit_expand()
1189 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1191 for (x = image->width/8; x--;) in vga_imageblit_expand()
1193 where += info->fix.line_length; in vga_imageblit_expand()
1200 setcolor(image->bg_color); in vga_imageblit_expand()
1204 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1206 for (x=image->width/8; x--;){ in vga_imageblit_expand()
1208 setcolor(image->fg_color); in vga_imageblit_expand()
1215 where += info->fix.line_length; in vga_imageblit_expand()
1233 struct vga16fb_par *par = info->par; in vga_imageblit_color()
1235 info->screen_base + image->dy * info->fix.line_length + in vga_imageblit_color()
1236 image->dx/8; in vga_imageblit_color()
1237 const char *cdat = image->data; in vga_imageblit_color()
1241 switch (info->fix.type) { in vga_imageblit_color()
1243 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4 && in vga_imageblit_color()
1244 par->isVGA) { in vga_imageblit_color()
1249 for (y = 0; y < image->height; y++) { in vga_imageblit_color()
1250 for (x = 0; x < image->width; x++) { in vga_imageblit_color()
1255 setmask(1 << (7 - (x % 8))); in vga_imageblit_color()
1261 where += info->fix.line_length; in vga_imageblit_color()
1275 if (image->depth == 1) in vga16fb_imageblit()
1283 iounmap(info->screen_base); in vga16fb_destroy()
1284 fb_dealloc_cmap(&info->cmap); in vga16fb_destroy()
1312 si = dev_get_platdata(&dev->dev); in vga16fb_probe()
1314 return -ENODEV; in vga16fb_probe()
1321 info = framebuffer_alloc(sizeof(struct vga16fb_par), &dev->dev); in vga16fb_probe()
1324 ret = -ENOMEM; in vga16fb_probe()
1327 info->apertures = alloc_apertures(1); in vga16fb_probe()
1328 if (!info->apertures) { in vga16fb_probe()
1329 ret = -ENOMEM; in vga16fb_probe()
1334 info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS_BASE, 0); in vga16fb_probe()
1336 if (!info->screen_base) { in vga16fb_probe()
1338 ret = -ENOMEM; in vga16fb_probe()
1342 printk(KERN_INFO "vga16fb: mapped to 0x%p\n", info->screen_base); in vga16fb_probe()
1343 par = info->par; in vga16fb_probe()
1346 par->isVGA = si->orig_video_isVGA == VIDEO_TYPE_VGAC; in vga16fb_probe()
1348 /* non-x86 architectures treat orig_video_isVGA as a boolean flag */ in vga16fb_probe()
1349 par->isVGA = si->orig_video_isVGA; in vga16fb_probe()
1351 par->palette_blanked = 0; in vga16fb_probe()
1352 par->vesa_blanked = 0; in vga16fb_probe()
1354 i = par->isVGA? 6 : 2; in vga16fb_probe()
1361 info->fbops = &vga16fb_ops; in vga16fb_probe()
1362 info->var = vga16fb_defined; in vga16fb_probe()
1363 info->fix = vga16fb_fix; in vga16fb_probe()
1365 info->pixmap.blit_x = 1 << 7 | 1 << 15 | 1 << 23 | 1 << 31; in vga16fb_probe()
1366 info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE | in vga16fb_probe()
1369 i = (info->var.bits_per_pixel == 8) ? 256 : 16; in vga16fb_probe()
1370 ret = fb_alloc_cmap(&info->cmap, i, 0); in vga16fb_probe()
1373 ret = -ENOMEM; in vga16fb_probe()
1377 if (vga16fb_check_var(&info->var, info)) { in vga16fb_probe()
1379 ret = -EINVAL; in vga16fb_probe()
1385 info->apertures->ranges[0].base = VGA_FB_PHYS_BASE; in vga16fb_probe()
1386 info->apertures->ranges[0].size = VGA_FB_PHYS_SIZE; in vga16fb_probe()
1390 ret = -EINVAL; in vga16fb_probe()
1394 fb_info(info, "%s frame buffer device\n", info->fix.id); in vga16fb_probe()
1400 fb_dealloc_cmap(&info->cmap); in vga16fb_probe()
1402 iounmap(info->screen_base); in vga16fb_probe()
1420 {"ega-framebuffer", 0},
1421 {"vga-framebuffer", 0},