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>
36 /* --------------------------------------------------------------------- */
47 unsigned char CrtCtrlIndex; /* CRT-Contr. Index reg. */
49 unsigned char HorizontalTotal; /* CRT-Controller:00h */
50 unsigned char HorizDisplayEnd; /* CRT-Controller:01h */
51 unsigned char StartHorizRetrace;/* CRT-Controller:04h */
52 unsigned char EndHorizRetrace; /* CRT-Controller:05h */
53 unsigned char Overflow; /* CRT-Controller:07h */
54 unsigned char StartVertRetrace; /* CRT-Controller:10h */
55 unsigned char EndVertRetrace; /* CRT-Controller:11h */
56 unsigned char ModeControl; /* CRT-Controller:17h */
57 unsigned char ClockingMode; /* Seq-Controller:01h */
62 u8 misc, pel_msk, vss, clkdiv; member
66 /* --------------------------------------------------------------------- */
75 .height = -1,
76 .width = -1,
104 the scenes in the VGA's 32-bit latch register, and reading and writing
105 video memory just invokes latch behavior.
110 read-modify-write routine should optimize to one such bitwise
119 Bits 0-1 are write mode, bit 3 is read mode. */
143 Bits 0-2 are rotate count, bits 3-4 are logical operation
190 /* non-x86 architectures treat orig_video_isVGA as a boolean flag */ in check_mode_supported()
195 return -ENODEV; in check_mode_supported()
201 return -ENODEV; in check_mode_supported()
209 struct vga16fb_par *par = info->par; in vga16fb_pan_var()
212 xoffset = var->xoffset; in vga16fb_pan_var()
213 if (info->var.bits_per_pixel == 8) { in vga16fb_pan_var()
214 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 2; in vga16fb_pan_var()
215 } else if (par->mode & MODE_TEXT) { in vga16fb_pan_var()
217 pos = (info->var.xres_virtual * (var->yoffset / fh) + xoffset) >> 3; in vga16fb_pan_var()
219 if (info->var.nonstd) in vga16fb_pan_var()
220 xoffset--; in vga16fb_pan_var()
221 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 3; in vga16fb_pan_var()
227 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_pan_var()
229 if (info->var.bits_per_pixel == 8) in vga16fb_pan_var()
239 if (info->var.bits_per_pixel == 4) { in vga16fb_update_fix()
240 if (info->var.nonstd) { in vga16fb_update_fix()
241 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
242 info->fix.line_length = info->var.xres_virtual / 2; in vga16fb_update_fix()
244 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
245 info->fix.type_aux = FB_AUX_VGA_PLANES_VGA4; in vga16fb_update_fix()
246 info->fix.line_length = info->var.xres_virtual / 8; in vga16fb_update_fix()
248 } else if (info->var.bits_per_pixel == 0) { in vga16fb_update_fix()
249 info->fix.type = FB_TYPE_TEXT; in vga16fb_update_fix()
250 info->fix.type_aux = FB_AUX_TEXT_CGA; in vga16fb_update_fix()
251 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
253 if (info->var.nonstd) { in vga16fb_update_fix()
254 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
255 info->fix.type_aux = FB_AUX_VGA_PLANES_CFB8; in vga16fb_update_fix()
256 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
258 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
259 info->fix.line_length = info->var.xres_virtual; in vga16fb_update_fix()
271 u8 misc; in vga16fb_clock_chip() member
283 err = *pixclock - best->pixclock; in vga16fb_clock_chip()
284 if (err < 0) err = -err; in vga16fb_clock_chip()
285 for (ptr = vgaclocks + 1; ptr->pixclock; ptr++) { in vga16fb_clock_chip()
288 tmp = *pixclock - ptr->pixclock; in vga16fb_clock_chip()
289 if (tmp < 0) tmp = -tmp; in vga16fb_clock_chip()
295 par->misc |= best->misc; in vga16fb_clock_chip()
296 par->clkdiv = best->seq_clock_mode; in vga16fb_clock_chip()
297 *pixclock = (best->pixclock * div) / mul; in vga16fb_clock_chip()
300 #define FAIL(X) return -EINVAL
304 struct vga16fb_par *par = info->par; in vga16fb_open()
306 if (!par->ref_count) { in vga16fb_open()
307 memset(&par->state, 0, sizeof(struct vgastate)); in vga16fb_open()
308 par->state.flags = VGA_SAVE_FONTS | VGA_SAVE_MODE | in vga16fb_open()
310 save_vga(&par->state); in vga16fb_open()
312 par->ref_count++; in vga16fb_open()
319 struct vga16fb_par *par = info->par; in vga16fb_release()
321 if (!par->ref_count) in vga16fb_release()
322 return -EINVAL; in vga16fb_release()
324 if (par->ref_count == 1) in vga16fb_release()
325 restore_vga(&par->state); in vga16fb_release()
326 par->ref_count--; in vga16fb_release()
334 struct vga16fb_par *par = info->par; in vga16fb_check_var()
344 par->pel_msk = 0xFF; in vga16fb_check_var()
346 if (var->bits_per_pixel == 4) { in vga16fb_check_var()
347 if (var->nonstd) { in vga16fb_check_var()
348 if (!par->isVGA) in vga16fb_check_var()
349 return -EINVAL; in vga16fb_check_var()
353 par->pel_msk = 0x0F; in vga16fb_check_var()
359 } else if (var->bits_per_pixel == 8) { in vga16fb_check_var()
360 if (!par->isVGA) in vga16fb_check_var()
361 return -EINVAL; /* no support on EGA */ in vga16fb_check_var()
363 if (var->nonstd) { in vga16fb_check_var()
371 return -EINVAL; in vga16fb_check_var()
373 xres = (var->xres + 7) & ~7; in vga16fb_check_var()
374 vxres = (var->xres_virtual + 0xF) & ~0xF; in vga16fb_check_var()
375 xoffset = (var->xoffset + 7) & ~7; in vga16fb_check_var()
376 left = (var->left_margin + 7) & ~7; in vga16fb_check_var()
377 right = (var->right_margin + 7) & ~7; in vga16fb_check_var()
378 hslen = (var->hsync_len + 7) & ~7; in vga16fb_check_var()
383 xoffset = vxres - xres; in vga16fb_check_var()
385 var->xres = xres; in vga16fb_check_var()
386 var->right_margin = right; in vga16fb_check_var()
387 var->hsync_len = hslen; in vga16fb_check_var()
388 var->left_margin = left; in vga16fb_check_var()
389 var->xres_virtual = vxres; in vga16fb_check_var()
390 var->xoffset = xoffset; in vga16fb_check_var()
404 par->crtc[VGA_CRTC_H_TOTAL] = xtotal - 5; in vga16fb_check_var()
405 par->crtc[VGA_CRTC_H_BLANK_START] = xres - 1; in vga16fb_check_var()
406 par->crtc[VGA_CRTC_H_DISP] = xres - 1; in vga16fb_check_var()
408 par->crtc[VGA_CRTC_H_SYNC_START] = pos; in vga16fb_check_var()
410 par->crtc[VGA_CRTC_H_SYNC_END] = pos & 0x1F; in vga16fb_check_var()
411 pos += left - 2; /* blank_end + 2 <= total + 5 */ in vga16fb_check_var()
412 par->crtc[VGA_CRTC_H_BLANK_END] = (pos & 0x1F) | 0x80; in vga16fb_check_var()
414 par->crtc[VGA_CRTC_H_SYNC_END] |= 0x80; in vga16fb_check_var()
416 yres = var->yres; in vga16fb_check_var()
417 lower = var->lower_margin; in vga16fb_check_var()
418 vslen = var->vsync_len; in vga16fb_check_var()
419 upper = var->upper_margin; in vga16fb_check_var()
420 vyres = var->yres_virtual; in vga16fb_check_var()
421 yoffset = var->yoffset; in vga16fb_check_var()
428 return -ENOMEM; in vga16fb_check_var()
431 yoffset = vyres - yres; in vga16fb_check_var()
432 var->yres = yres; in vga16fb_check_var()
433 var->lower_margin = lower; in vga16fb_check_var()
434 var->vsync_len = vslen; in vga16fb_check_var()
435 var->upper_margin = upper; in vga16fb_check_var()
436 var->yres_virtual = vyres; in vga16fb_check_var()
437 var->yoffset = yoffset; in vga16fb_check_var()
439 if (var->vmode & FB_VMODE_DOUBLE) { in vga16fb_check_var()
459 par->crtc[VGA_CRTC_V_TOTAL] = ytotal - 2; in vga16fb_check_var()
463 par->crtc[VGA_CRTC_PRESET_ROW] = 0; in vga16fb_check_var()
464 par->crtc[VGA_CRTC_MAX_SCAN] = 0x40; /* 1 scanline, no linecmp */ in vga16fb_check_var()
465 if (var->vmode & FB_VMODE_DOUBLE) in vga16fb_check_var()
466 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x80; in vga16fb_check_var()
467 par->crtc[VGA_CRTC_CURSOR_START] = 0x20; in vga16fb_check_var()
468 par->crtc[VGA_CRTC_CURSOR_END] = 0x00; in vga16fb_check_var()
470 xoffset--; in vga16fb_check_var()
472 par->crtc[VGA_CRTC_START_HI] = pos >> 8; in vga16fb_check_var()
473 par->crtc[VGA_CRTC_START_LO] = pos & 0xFF; in vga16fb_check_var()
474 par->crtc[VGA_CRTC_CURSOR_HI] = 0x00; in vga16fb_check_var()
475 par->crtc[VGA_CRTC_CURSOR_LO] = 0x00; in vga16fb_check_var()
476 pos = yres - 1; in vga16fb_check_var()
477 par->crtc[VGA_CRTC_V_DISP_END] = pos & 0xFF; in vga16fb_check_var()
478 par->crtc[VGA_CRTC_V_BLANK_START] = pos & 0xFF; in vga16fb_check_var()
480 r7 |= 0x0A; /* 0x02 -> DISP_END, 0x08 -> BLANK_START */ in vga16fb_check_var()
482 r7 |= 0x40; /* 0x40 -> DISP_END */ in vga16fb_check_var()
483 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x20; /* BLANK_START */ in vga16fb_check_var()
486 par->crtc[VGA_CRTC_V_SYNC_START] = pos & 0xFF; in vga16fb_check_var()
492 par->crtc[VGA_CRTC_V_SYNC_END] = (pos & 0x0F) & ~0x10; /* disabled IRQ */ in vga16fb_check_var()
493 pos += upper - 1; /* blank_end + 1 <= ytotal + 2 */ in vga16fb_check_var()
494 par->crtc[VGA_CRTC_V_BLANK_END] = pos & 0xFF; /* 0x7F for original VGA, in vga16fb_check_var()
498 par->crtc[VGA_CRTC_OFFSET] = vxres >> 1; in vga16fb_check_var()
500 par->crtc[VGA_CRTC_UNDERLINE] = 0x5F; /* 256, cfb8 */ in vga16fb_check_var()
502 par->crtc[VGA_CRTC_UNDERLINE] = 0x1F; /* 16, vgap */ in vga16fb_check_var()
503 par->crtc[VGA_CRTC_MODE] = rMode | ((mode & MODE_TEXT) ? 0xA3 : 0xE3); in vga16fb_check_var()
504 par->crtc[VGA_CRTC_LINE_COMPARE] = 0xFF; in vga16fb_check_var()
505 par->crtc[VGA_CRTC_OVERFLOW] = r7; in vga16fb_check_var()
507 par->vss = 0x00; /* 3DA */ in vga16fb_check_var()
509 par->misc = 0xE3; /* enable CPU, ports 0x3Dx, positive sync */ in vga16fb_check_var()
510 if (var->sync & FB_SYNC_HOR_HIGH_ACT) in vga16fb_check_var()
511 par->misc &= ~0x40; in vga16fb_check_var()
512 if (var->sync & FB_SYNC_VERT_HIGH_ACT) in vga16fb_check_var()
513 par->misc &= ~0x80; in vga16fb_check_var()
515 par->mode = mode; in vga16fb_check_var()
519 vga16fb_clock_chip(par, &var->pixclock, info, 1, 2); in vga16fb_check_var()
522 vga16fb_clock_chip(par, &var->pixclock, info, 1, 1); in vga16fb_check_var()
524 var->red.offset = var->green.offset = var->blue.offset = in vga16fb_check_var()
525 var->transp.offset = 0; in vga16fb_check_var()
526 var->red.length = var->green.length = var->blue.length = in vga16fb_check_var()
527 (par->isVGA) ? 6 : 2; in vga16fb_check_var()
528 var->transp.length = 0; in vga16fb_check_var()
529 var->activate = FB_ACTIVATE_NOW; in vga16fb_check_var()
530 var->height = -1; in vga16fb_check_var()
531 var->width = -1; in vga16fb_check_var()
532 var->accel_flags = 0; in vga16fb_check_var()
539 struct vga16fb_par *par = info->par; in vga16fb_set_par()
545 seq[VGA_SEQ_CLOCK_MODE] = 0x01 | par->clkdiv; in vga16fb_set_par()
546 if (par->mode & MODE_TEXT) in vga16fb_set_par()
551 if (par->mode & MODE_TEXT) in vga16fb_set_par()
553 else if (par->mode & MODE_SKIP4) in vga16fb_set_par()
563 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
567 if (par->mode & MODE_CFB) in vga16fb_set_par()
578 if (par->mode & MODE_TEXT) in vga16fb_set_par()
580 else if (par->mode & MODE_8BPP) in vga16fb_set_par()
586 if (par->mode & MODE_8BPP) in vga16fb_set_par()
587 atc[VGA_ATC_PEL] = (info->var.xoffset & 3) << 1; in vga16fb_set_par()
589 atc[VGA_ATC_PEL] = info->var.xoffset & 7; in vga16fb_set_par()
592 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
594 par->crtc[VGA_CRTC_MAX_SCAN] = (par->crtc[VGA_CRTC_MAX_SCAN] in vga16fb_set_par()
595 & ~0x1F) | (fh - 1); in vga16fb_set_par()
601 if (!par->isVGA) { in vga16fb_set_par()
606 /* update misc output register */ in vga16fb_set_par()
607 vga_io_w(VGA_MIS_W, par->misc); in vga16fb_set_par()
612 if (par->isVGA) in vga16fb_set_par()
613 vga_io_w(VGA_PEL_MSK, par->pel_msk); in vga16fb_set_par()
624 /* deprotect CRT registers 0-7 */ in vga16fb_set_par()
625 vga_io_wcrt(VGA_CRTC_V_SYNC_END, par->crtc[VGA_CRTC_V_SYNC_END]); in vga16fb_set_par()
629 vga_io_wcrt(i, par->crtc[i]); in vga16fb_set_par()
639 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_set_par()
681 struct vga16fb_par *par = info->par; in vga16fb_setcolreg()
694 gray = info->var.grayscale; in vga16fb_setcolreg()
700 if (par->isVGA) in vga16fb_setcolreg()
725 if(!par->vesa_blanked) { in vga_vesa_blank()
726 par->vga_state.CrtMiscIO = vga_io_r(VGA_MIS_R); in vga_vesa_blank()
729 par->vga_state.HorizontalTotal = vga_io_rcrt(0x00); /* HorizontalTotal */ in vga_vesa_blank()
730 par->vga_state.HorizDisplayEnd = vga_io_rcrt(0x01); /* HorizDisplayEnd */ in vga_vesa_blank()
731 par->vga_state.StartHorizRetrace = vga_io_rcrt(0x04); /* StartHorizRetrace */ in vga_vesa_blank()
732 par->vga_state.EndHorizRetrace = vga_io_rcrt(0x05); /* EndHorizRetrace */ in vga_vesa_blank()
733 par->vga_state.Overflow = vga_io_rcrt(0x07); /* Overflow */ in vga_vesa_blank()
734 par->vga_state.StartVertRetrace = vga_io_rcrt(0x10); /* StartVertRetrace */ in vga_vesa_blank()
735 par->vga_state.EndVertRetrace = vga_io_rcrt(0x11); /* EndVertRetrace */ in vga_vesa_blank()
736 par->vga_state.ModeControl = vga_io_rcrt(0x17); /* ModeControl */ in vga_vesa_blank()
737 par->vga_state.ClockingMode = vga_io_rseq(0x01); /* ClockingMode */ in vga_vesa_blank()
742 vga_io_wseq(0x01, par->vga_state.ClockingMode | 0x20); in vga_vesa_blank()
745 if ((par->vga_state.CrtMiscIO & 0x80) == 0x80) in vga_vesa_blank()
746 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO & 0xef); in vga_vesa_blank()
757 vga_io_wcrt(VGA_CRTC_OVERFLOW, par->vga_state.Overflow | 0x84); in vga_vesa_blank()
781 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO); in vga_vesa_unblank()
784 vga_io_wcrt(0x00, par->vga_state.HorizontalTotal); in vga_vesa_unblank()
786 vga_io_wcrt(0x01, par->vga_state.HorizDisplayEnd); in vga_vesa_unblank()
788 vga_io_wcrt(0x04, par->vga_state.StartHorizRetrace); in vga_vesa_unblank()
790 vga_io_wcrt(0x05, par->vga_state.EndHorizRetrace); in vga_vesa_unblank()
792 vga_io_wcrt(0x07, par->vga_state.Overflow); in vga_vesa_unblank()
794 vga_io_wcrt(0x10, par->vga_state.StartVertRetrace); in vga_vesa_unblank()
796 vga_io_wcrt(0x11, par->vga_state.EndVertRetrace); in vga_vesa_unblank()
798 vga_io_wcrt(0x17, par->vga_state.ModeControl); in vga_vesa_unblank()
800 vga_io_wseq(0x01, par->vga_state.ClockingMode); in vga_vesa_unblank()
822 struct vga16fb_par *par = info->par; in vga16fb_blank()
826 if (par->vesa_blanked) { in vga16fb_blank()
828 par->vesa_blanked = 0; in vga16fb_blank()
830 if (par->palette_blanked) { in vga16fb_blank()
831 par->palette_blanked = 0; in vga16fb_blank()
836 par->palette_blanked = 1; in vga16fb_blank()
840 par->vesa_blanked = 1; in vga16fb_blank()
848 u32 dx = rect->dx, width = rect->width; in vga_8planes_fillrect()
857 where = info->screen_base + dx + rect->dy * info->fix.line_length; in vga_8planes_fillrect()
859 if (rect->rop == ROP_COPY) { in vga_8planes_fillrect()
864 line_ofs = info->fix.line_length - width; in vga_8planes_fillrect()
867 height = rect->height; in vga_8planes_fillrect()
869 while (height--) { in vga_8planes_fillrect()
873 for (x = width; x > 0; --x) { in vga_8planes_fillrect()
874 writeb(rect->color, where); in vga_8planes_fillrect()
886 for (y = 0; y < rect->height; y++) { in vga_8planes_fillrect()
889 where += info->fix.line_length; in vga_8planes_fillrect()
905 vxres = info->var.xres_virtual; in vga16fb_fillrect()
906 vyres = info->var.yres_virtual; in vga16fb_fillrect()
908 if (!rect->width || !rect->height || rect->dx > vxres || rect->dy > vyres) in vga16fb_fillrect()
914 x2 = rect->dx + rect->width; in vga16fb_fillrect()
915 y2 = rect->dy + rect->height; in vga16fb_fillrect()
918 width = x2 - rect->dx; in vga16fb_fillrect()
920 switch (info->fix.type) { in vga16fb_fillrect()
922 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_fillrect()
924 height = y2 - rect->dy; in vga16fb_fillrect()
925 width = rect->width/8; in vga16fb_fillrect()
927 line_ofs = info->fix.line_length - width; in vga16fb_fillrect()
928 dst = info->screen_base + (rect->dx/8) + rect->dy * info->fix.line_length; in vga16fb_fillrect()
930 switch (rect->rop) { in vga16fb_fillrect()
935 setcolor(rect->color); in vga16fb_fillrect()
940 while (height--) { in vga16fb_fillrect()
956 while (height--) { in vga16fb_fillrect()
986 height = area->height; in vga_8planes_copyarea()
988 sx = area->sx / 4; in vga_8planes_copyarea()
989 dx = area->dx / 4; in vga_8planes_copyarea()
990 width = area->width / 4; in vga_8planes_copyarea()
992 if (area->dy < area->sy || (area->dy == area->sy && dx < sx)) { in vga_8planes_copyarea()
993 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
994 dest = info->screen_base + dx + area->dy * info->fix.line_length; in vga_8planes_copyarea()
995 src = info->screen_base + sx + area->sy * info->fix.line_length; in vga_8planes_copyarea()
996 while (height--) { in vga_8planes_copyarea()
1007 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
1008 dest = info->screen_base + dx + width + in vga_8planes_copyarea()
1009 (area->dy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1010 src = info->screen_base + sx + width + in vga_8planes_copyarea()
1011 (area->sy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
1012 while (height--) { in vga_8planes_copyarea()
1014 --src; in vga_8planes_copyarea()
1015 --dest; in vga_8planes_copyarea()
1019 src -= line_ofs; in vga_8planes_copyarea()
1020 dest -= line_ofs; in vga_8planes_copyarea()
1032 u32 dx = area->dx, dy = area->dy, sx = area->sx, sy = area->sy; in vga16fb_copyarea()
1038 vxres = info->var.xres_virtual; in vga16fb_copyarea()
1039 vyres = info->var.yres_virtual; in vga16fb_copyarea()
1041 if (area->dx > vxres || area->sx > vxres || area->dy > vyres || in vga16fb_copyarea()
1042 area->sy > vyres) in vga16fb_copyarea()
1046 old_dx = area->dx; in vga16fb_copyarea()
1047 old_dy = area->dy; in vga16fb_copyarea()
1053 x2 = area->dx + area->width; in vga16fb_copyarea()
1054 y2 = area->dy + area->height; in vga16fb_copyarea()
1055 dx = area->dx > 0 ? area->dx : 0; in vga16fb_copyarea()
1056 dy = area->dy > 0 ? area->dy : 0; in vga16fb_copyarea()
1059 width = x2 - dx; in vga16fb_copyarea()
1060 height = y2 - dy; in vga16fb_copyarea()
1066 sx += (dx - old_dx); in vga16fb_copyarea()
1067 sy += (dy - old_dy); in vga16fb_copyarea()
1073 switch (info->fix.type) { in vga16fb_copyarea()
1075 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_copyarea()
1077 line_ofs = info->fix.line_length - width; in vga16fb_copyarea()
1084 dst = info->screen_base + (dx/8) + dy * info->fix.line_length; in vga16fb_copyarea()
1085 src = info->screen_base + (sx/8) + sy * info->fix.line_length; in vga16fb_copyarea()
1086 while (height--) { in vga16fb_copyarea()
1097 dst = info->screen_base + (dx/8) + width + in vga16fb_copyarea()
1098 (dy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1099 src = info->screen_base + (sx/8) + width + in vga16fb_copyarea()
1100 (sy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1101 while (height--) { in vga16fb_copyarea()
1103 dst--; in vga16fb_copyarea()
1104 src--; in vga16fb_copyarea()
1108 src -= line_ofs; in vga16fb_copyarea()
1109 dst -= line_ofs; in vga16fb_copyarea()
1133 #error "Only __BIG_ENDIAN and __LITTLE_ENDIAN are supported in vga-planes"
1143 const unsigned char *cdat = image->data; in vga_8planes_imageblit()
1144 u32 dx = image->dx; in vga_8planes_imageblit()
1149 where = info->screen_base + dx + image->dy * info->fix.line_length; in vga_8planes_imageblit()
1152 writeb(image->bg_color, where); in vga_8planes_imageblit()
1155 setmask(image->fg_color ^ image->bg_color); in vga_8planes_imageblit()
1158 for (y = 0; y < image->height; y++, where += info->fix.line_length) in vga_8planes_imageblit()
1169 char __iomem *where = info->screen_base + (image->dx/8) + in vga_imageblit_expand()
1170 image->dy * info->fix.line_length; in vga_imageblit_expand()
1171 struct vga16fb_par *par = info->par; in vga_imageblit_expand()
1172 char *cdat = (char *) image->data; in vga_imageblit_expand()
1176 switch (info->fix.type) { in vga_imageblit_expand()
1178 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga_imageblit_expand()
1179 if (par->isVGA) { in vga_imageblit_expand()
1183 setcolor(image->fg_color); in vga_imageblit_expand()
1187 writeb(image->bg_color, where); in vga_imageblit_expand()
1192 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1194 for (x = image->width/8; x--;) in vga_imageblit_expand()
1196 where += info->fix.line_length; in vga_imageblit_expand()
1203 setcolor(image->bg_color); in vga_imageblit_expand()
1207 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1209 for (x=image->width/8; x--;){ in vga_imageblit_expand()
1211 setcolor(image->fg_color); in vga_imageblit_expand()
1218 where += info->fix.line_length; in vga_imageblit_expand()
1236 struct vga16fb_par *par = info->par; in vga_imageblit_color()
1238 info->screen_base + image->dy * info->fix.line_length + in vga_imageblit_color()
1239 image->dx/8; in vga_imageblit_color()
1240 const char *cdat = image->data; in vga_imageblit_color()
1244 switch (info->fix.type) { in vga_imageblit_color()
1246 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4 && in vga_imageblit_color()
1247 par->isVGA) { in vga_imageblit_color()
1252 for (y = 0; y < image->height; y++) { in vga_imageblit_color()
1253 for (x = 0; x < image->width; x++) { in vga_imageblit_color()
1258 setmask(1 << (7 - (x % 8))); in vga_imageblit_color()
1264 where += info->fix.line_length; in vga_imageblit_color()
1278 if (image->depth == 1) in vga16fb_imageblit()
1286 iounmap(info->screen_base); in vga16fb_destroy()
1287 fb_dealloc_cmap(&info->cmap); in vga16fb_destroy()
1330 info = framebuffer_alloc(sizeof(struct vga16fb_par), &dev->dev); in vga16fb_probe()
1333 ret = -ENOMEM; in vga16fb_probe()
1336 info->apertures = alloc_apertures(1); in vga16fb_probe()
1337 if (!info->apertures) { in vga16fb_probe()
1338 ret = -ENOMEM; in vga16fb_probe()
1343 info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS, 0); in vga16fb_probe()
1345 if (!info->screen_base) { in vga16fb_probe()
1347 ret = -ENOMEM; in vga16fb_probe()
1351 printk(KERN_INFO "vga16fb: mapped to 0x%p\n", info->screen_base); in vga16fb_probe()
1352 par = info->par; in vga16fb_probe()
1354 par->isVGA = screen_info.orig_video_isVGA; in vga16fb_probe()
1355 par->palette_blanked = 0; in vga16fb_probe()
1356 par->vesa_blanked = 0; in vga16fb_probe()
1358 i = par->isVGA? 6 : 2; in vga16fb_probe()
1365 info->fbops = &vga16fb_ops; in vga16fb_probe()
1366 info->var = vga16fb_defined; in vga16fb_probe()
1367 info->fix = vga16fb_fix; in vga16fb_probe()
1369 info->pixmap.blit_x = 1 << 7 | 1 << 15 | 1 << 23 | 1 << 31; in vga16fb_probe()
1370 info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE | in vga16fb_probe()
1373 i = (info->var.bits_per_pixel == 8) ? 256 : 16; in vga16fb_probe()
1374 ret = fb_alloc_cmap(&info->cmap, i, 0); in vga16fb_probe()
1377 ret = -ENOMEM; in vga16fb_probe()
1381 if (vga16fb_check_var(&info->var, info)) { in vga16fb_probe()
1383 ret = -EINVAL; in vga16fb_probe()
1389 info->apertures->ranges[0].base = VGA_FB_PHYS; in vga16fb_probe()
1390 info->apertures->ranges[0].size = VGA_FB_PHYS_LEN; in vga16fb_probe()
1394 ret = -EINVAL; in vga16fb_probe()
1398 fb_info(info, "%s frame buffer device\n", info->fix.id); in vga16fb_probe()
1404 fb_dealloc_cmap(&info->cmap); in vga16fb_probe()
1406 iounmap(info->screen_base); in vga16fb_probe()
1440 return -ENODEV; in vga16fb_init()
1457 ret = -ENOMEM; in vga16fb_init()
1482 * ---------------------------------------------------------------------------
1484 * c-basic-offset: 8