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 struct vga16fb_par *par = info->par; in vga16fb_pan_var()
193 xoffset = var->xoffset; in vga16fb_pan_var()
194 if (info->var.bits_per_pixel == 8) { in vga16fb_pan_var()
195 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 2; in vga16fb_pan_var()
196 } else if (par->mode & MODE_TEXT) { in vga16fb_pan_var()
198 pos = (info->var.xres_virtual * (var->yoffset / fh) + xoffset) >> 3; in vga16fb_pan_var()
200 if (info->var.nonstd) in vga16fb_pan_var()
201 xoffset--; in vga16fb_pan_var()
202 pos = (info->var.xres_virtual * var->yoffset + xoffset) >> 3; in vga16fb_pan_var()
208 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_pan_var()
210 if (info->var.bits_per_pixel == 8) in vga16fb_pan_var()
220 if (info->var.bits_per_pixel == 4) { in vga16fb_update_fix()
221 if (info->var.nonstd) { in vga16fb_update_fix()
222 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
223 info->fix.line_length = info->var.xres_virtual / 2; in vga16fb_update_fix()
225 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
226 info->fix.type_aux = FB_AUX_VGA_PLANES_VGA4; in vga16fb_update_fix()
227 info->fix.line_length = info->var.xres_virtual / 8; in vga16fb_update_fix()
229 } else if (info->var.bits_per_pixel == 0) { in vga16fb_update_fix()
230 info->fix.type = FB_TYPE_TEXT; in vga16fb_update_fix()
231 info->fix.type_aux = FB_AUX_TEXT_CGA; in vga16fb_update_fix()
232 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
234 if (info->var.nonstd) { in vga16fb_update_fix()
235 info->fix.type = FB_TYPE_VGA_PLANES; in vga16fb_update_fix()
236 info->fix.type_aux = FB_AUX_VGA_PLANES_CFB8; in vga16fb_update_fix()
237 info->fix.line_length = info->var.xres_virtual / 4; in vga16fb_update_fix()
239 info->fix.type = FB_TYPE_PACKED_PIXELS; in vga16fb_update_fix()
240 info->fix.line_length = info->var.xres_virtual; in vga16fb_update_fix()
252 u8 misc; in vga16fb_clock_chip() member
264 err = *pixclock - best->pixclock; in vga16fb_clock_chip()
265 if (err < 0) err = -err; in vga16fb_clock_chip()
266 for (ptr = vgaclocks + 1; ptr->pixclock; ptr++) { in vga16fb_clock_chip()
269 tmp = *pixclock - ptr->pixclock; in vga16fb_clock_chip()
270 if (tmp < 0) tmp = -tmp; in vga16fb_clock_chip()
276 par->misc |= best->misc; in vga16fb_clock_chip()
277 par->clkdiv = best->seq_clock_mode; in vga16fb_clock_chip()
278 *pixclock = (best->pixclock * div) / mul; in vga16fb_clock_chip()
281 #define FAIL(X) return -EINVAL
285 struct vga16fb_par *par = info->par; in vga16fb_open()
287 if (!par->ref_count) { in vga16fb_open()
288 memset(&par->state, 0, sizeof(struct vgastate)); in vga16fb_open()
289 par->state.flags = VGA_SAVE_FONTS | VGA_SAVE_MODE | in vga16fb_open()
291 save_vga(&par->state); in vga16fb_open()
293 par->ref_count++; in vga16fb_open()
300 struct vga16fb_par *par = info->par; in vga16fb_release()
302 if (!par->ref_count) in vga16fb_release()
303 return -EINVAL; in vga16fb_release()
305 if (par->ref_count == 1) in vga16fb_release()
306 restore_vga(&par->state); in vga16fb_release()
307 par->ref_count--; in vga16fb_release()
315 struct vga16fb_par *par = info->par; in vga16fb_check_var()
325 par->pel_msk = 0xFF; in vga16fb_check_var()
327 if (var->bits_per_pixel == 4) { in vga16fb_check_var()
328 if (var->nonstd) { in vga16fb_check_var()
329 if (!par->isVGA) in vga16fb_check_var()
330 return -EINVAL; in vga16fb_check_var()
334 par->pel_msk = 0x0F; in vga16fb_check_var()
340 } else if (var->bits_per_pixel == 8) { in vga16fb_check_var()
341 if (!par->isVGA) in vga16fb_check_var()
342 return -EINVAL; /* no support on EGA */ in vga16fb_check_var()
344 if (var->nonstd) { in vga16fb_check_var()
352 return -EINVAL; in vga16fb_check_var()
354 xres = (var->xres + 7) & ~7; in vga16fb_check_var()
355 vxres = (var->xres_virtual + 0xF) & ~0xF; in vga16fb_check_var()
356 xoffset = (var->xoffset + 7) & ~7; in vga16fb_check_var()
357 left = (var->left_margin + 7) & ~7; in vga16fb_check_var()
358 right = (var->right_margin + 7) & ~7; in vga16fb_check_var()
359 hslen = (var->hsync_len + 7) & ~7; in vga16fb_check_var()
364 xoffset = vxres - xres; in vga16fb_check_var()
366 var->xres = xres; in vga16fb_check_var()
367 var->right_margin = right; in vga16fb_check_var()
368 var->hsync_len = hslen; in vga16fb_check_var()
369 var->left_margin = left; in vga16fb_check_var()
370 var->xres_virtual = vxres; in vga16fb_check_var()
371 var->xoffset = xoffset; in vga16fb_check_var()
385 par->crtc[VGA_CRTC_H_TOTAL] = xtotal - 5; in vga16fb_check_var()
386 par->crtc[VGA_CRTC_H_BLANK_START] = xres - 1; in vga16fb_check_var()
387 par->crtc[VGA_CRTC_H_DISP] = xres - 1; in vga16fb_check_var()
389 par->crtc[VGA_CRTC_H_SYNC_START] = pos; in vga16fb_check_var()
391 par->crtc[VGA_CRTC_H_SYNC_END] = pos & 0x1F; in vga16fb_check_var()
392 pos += left - 2; /* blank_end + 2 <= total + 5 */ in vga16fb_check_var()
393 par->crtc[VGA_CRTC_H_BLANK_END] = (pos & 0x1F) | 0x80; in vga16fb_check_var()
395 par->crtc[VGA_CRTC_H_SYNC_END] |= 0x80; in vga16fb_check_var()
397 yres = var->yres; in vga16fb_check_var()
398 lower = var->lower_margin; in vga16fb_check_var()
399 vslen = var->vsync_len; in vga16fb_check_var()
400 upper = var->upper_margin; in vga16fb_check_var()
401 vyres = var->yres_virtual; in vga16fb_check_var()
402 yoffset = var->yoffset; in vga16fb_check_var()
409 return -ENOMEM; in vga16fb_check_var()
412 yoffset = vyres - yres; in vga16fb_check_var()
413 var->yres = yres; in vga16fb_check_var()
414 var->lower_margin = lower; in vga16fb_check_var()
415 var->vsync_len = vslen; in vga16fb_check_var()
416 var->upper_margin = upper; in vga16fb_check_var()
417 var->yres_virtual = vyres; in vga16fb_check_var()
418 var->yoffset = yoffset; in vga16fb_check_var()
420 if (var->vmode & FB_VMODE_DOUBLE) { in vga16fb_check_var()
440 par->crtc[VGA_CRTC_V_TOTAL] = ytotal - 2; in vga16fb_check_var()
444 par->crtc[VGA_CRTC_PRESET_ROW] = 0; in vga16fb_check_var()
445 par->crtc[VGA_CRTC_MAX_SCAN] = 0x40; /* 1 scanline, no linecmp */ in vga16fb_check_var()
446 if (var->vmode & FB_VMODE_DOUBLE) in vga16fb_check_var()
447 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x80; in vga16fb_check_var()
448 par->crtc[VGA_CRTC_CURSOR_START] = 0x20; in vga16fb_check_var()
449 par->crtc[VGA_CRTC_CURSOR_END] = 0x00; in vga16fb_check_var()
451 xoffset--; in vga16fb_check_var()
453 par->crtc[VGA_CRTC_START_HI] = pos >> 8; in vga16fb_check_var()
454 par->crtc[VGA_CRTC_START_LO] = pos & 0xFF; in vga16fb_check_var()
455 par->crtc[VGA_CRTC_CURSOR_HI] = 0x00; in vga16fb_check_var()
456 par->crtc[VGA_CRTC_CURSOR_LO] = 0x00; in vga16fb_check_var()
457 pos = yres - 1; in vga16fb_check_var()
458 par->crtc[VGA_CRTC_V_DISP_END] = pos & 0xFF; in vga16fb_check_var()
459 par->crtc[VGA_CRTC_V_BLANK_START] = pos & 0xFF; in vga16fb_check_var()
461 r7 |= 0x0A; /* 0x02 -> DISP_END, 0x08 -> BLANK_START */ in vga16fb_check_var()
463 r7 |= 0x40; /* 0x40 -> DISP_END */ in vga16fb_check_var()
464 par->crtc[VGA_CRTC_MAX_SCAN] |= 0x20; /* BLANK_START */ in vga16fb_check_var()
467 par->crtc[VGA_CRTC_V_SYNC_START] = pos & 0xFF; in vga16fb_check_var()
473 par->crtc[VGA_CRTC_V_SYNC_END] = (pos & 0x0F) & ~0x10; /* disabled IRQ */ in vga16fb_check_var()
474 pos += upper - 1; /* blank_end + 1 <= ytotal + 2 */ in vga16fb_check_var()
475 par->crtc[VGA_CRTC_V_BLANK_END] = pos & 0xFF; /* 0x7F for original VGA, in vga16fb_check_var()
479 par->crtc[VGA_CRTC_OFFSET] = vxres >> 1; in vga16fb_check_var()
481 par->crtc[VGA_CRTC_UNDERLINE] = 0x5F; /* 256, cfb8 */ in vga16fb_check_var()
483 par->crtc[VGA_CRTC_UNDERLINE] = 0x1F; /* 16, vgap */ in vga16fb_check_var()
484 par->crtc[VGA_CRTC_MODE] = rMode | ((mode & MODE_TEXT) ? 0xA3 : 0xE3); in vga16fb_check_var()
485 par->crtc[VGA_CRTC_LINE_COMPARE] = 0xFF; in vga16fb_check_var()
486 par->crtc[VGA_CRTC_OVERFLOW] = r7; in vga16fb_check_var()
488 par->vss = 0x00; /* 3DA */ in vga16fb_check_var()
490 par->misc = 0xE3; /* enable CPU, ports 0x3Dx, positive sync */ in vga16fb_check_var()
491 if (var->sync & FB_SYNC_HOR_HIGH_ACT) in vga16fb_check_var()
492 par->misc &= ~0x40; in vga16fb_check_var()
493 if (var->sync & FB_SYNC_VERT_HIGH_ACT) in vga16fb_check_var()
494 par->misc &= ~0x80; in vga16fb_check_var()
496 par->mode = mode; in vga16fb_check_var()
500 vga16fb_clock_chip(par, &var->pixclock, info, 1, 2); in vga16fb_check_var()
503 vga16fb_clock_chip(par, &var->pixclock, info, 1, 1); in vga16fb_check_var()
505 var->red.offset = var->green.offset = var->blue.offset = in vga16fb_check_var()
506 var->transp.offset = 0; in vga16fb_check_var()
507 var->red.length = var->green.length = var->blue.length = in vga16fb_check_var()
508 (par->isVGA) ? 6 : 2; in vga16fb_check_var()
509 var->transp.length = 0; in vga16fb_check_var()
510 var->activate = FB_ACTIVATE_NOW; in vga16fb_check_var()
511 var->height = -1; in vga16fb_check_var()
512 var->width = -1; in vga16fb_check_var()
513 var->accel_flags = 0; in vga16fb_check_var()
520 struct vga16fb_par *par = info->par; in vga16fb_set_par()
526 seq[VGA_SEQ_CLOCK_MODE] = 0x01 | par->clkdiv; in vga16fb_set_par()
527 if (par->mode & MODE_TEXT) in vga16fb_set_par()
532 if (par->mode & MODE_TEXT) in vga16fb_set_par()
534 else if (par->mode & MODE_SKIP4) in vga16fb_set_par()
544 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
548 if (par->mode & MODE_CFB) in vga16fb_set_par()
559 if (par->mode & MODE_TEXT) in vga16fb_set_par()
561 else if (par->mode & MODE_8BPP) in vga16fb_set_par()
567 if (par->mode & MODE_8BPP) in vga16fb_set_par()
568 atc[VGA_ATC_PEL] = (info->var.xoffset & 3) << 1; in vga16fb_set_par()
570 atc[VGA_ATC_PEL] = info->var.xoffset & 7; in vga16fb_set_par()
573 if (par->mode & MODE_TEXT) { in vga16fb_set_par()
575 par->crtc[VGA_CRTC_MAX_SCAN] = (par->crtc[VGA_CRTC_MAX_SCAN] in vga16fb_set_par()
576 & ~0x1F) | (fh - 1); in vga16fb_set_par()
582 if (!par->isVGA) { in vga16fb_set_par()
587 /* update misc output register */ in vga16fb_set_par()
588 vga_io_w(VGA_MIS_W, par->misc); in vga16fb_set_par()
593 if (par->isVGA) in vga16fb_set_par()
594 vga_io_w(VGA_PEL_MSK, par->pel_msk); in vga16fb_set_par()
605 /* deprotect CRT registers 0-7 */ in vga16fb_set_par()
606 vga_io_wcrt(VGA_CRTC_V_SYNC_END, par->crtc[VGA_CRTC_V_SYNC_END]); in vga16fb_set_par()
610 vga_io_wcrt(i, par->crtc[i]); in vga16fb_set_par()
620 vga_io_r(VGA_IS1_RC); /* reset flip-flop */ in vga16fb_set_par()
662 struct vga16fb_par *par = info->par; in vga16fb_setcolreg()
675 gray = info->var.grayscale; in vga16fb_setcolreg()
681 if (par->isVGA) in vga16fb_setcolreg()
706 if(!par->vesa_blanked) { in vga_vesa_blank()
707 par->vga_state.CrtMiscIO = vga_io_r(VGA_MIS_R); in vga_vesa_blank()
710 par->vga_state.HorizontalTotal = vga_io_rcrt(0x00); /* HorizontalTotal */ in vga_vesa_blank()
711 par->vga_state.HorizDisplayEnd = vga_io_rcrt(0x01); /* HorizDisplayEnd */ in vga_vesa_blank()
712 par->vga_state.StartHorizRetrace = vga_io_rcrt(0x04); /* StartHorizRetrace */ in vga_vesa_blank()
713 par->vga_state.EndHorizRetrace = vga_io_rcrt(0x05); /* EndHorizRetrace */ in vga_vesa_blank()
714 par->vga_state.Overflow = vga_io_rcrt(0x07); /* Overflow */ in vga_vesa_blank()
715 par->vga_state.StartVertRetrace = vga_io_rcrt(0x10); /* StartVertRetrace */ in vga_vesa_blank()
716 par->vga_state.EndVertRetrace = vga_io_rcrt(0x11); /* EndVertRetrace */ in vga_vesa_blank()
717 par->vga_state.ModeControl = vga_io_rcrt(0x17); /* ModeControl */ in vga_vesa_blank()
718 par->vga_state.ClockingMode = vga_io_rseq(0x01); /* ClockingMode */ in vga_vesa_blank()
723 vga_io_wseq(0x01, par->vga_state.ClockingMode | 0x20); in vga_vesa_blank()
726 if ((par->vga_state.CrtMiscIO & 0x80) == 0x80) in vga_vesa_blank()
727 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO & 0xef); in vga_vesa_blank()
738 vga_io_wcrt(VGA_CRTC_OVERFLOW, par->vga_state.Overflow | 0x84); in vga_vesa_blank()
762 vga_io_w(VGA_MIS_W, par->vga_state.CrtMiscIO); in vga_vesa_unblank()
765 vga_io_wcrt(0x00, par->vga_state.HorizontalTotal); in vga_vesa_unblank()
767 vga_io_wcrt(0x01, par->vga_state.HorizDisplayEnd); in vga_vesa_unblank()
769 vga_io_wcrt(0x04, par->vga_state.StartHorizRetrace); in vga_vesa_unblank()
771 vga_io_wcrt(0x05, par->vga_state.EndHorizRetrace); in vga_vesa_unblank()
773 vga_io_wcrt(0x07, par->vga_state.Overflow); in vga_vesa_unblank()
775 vga_io_wcrt(0x10, par->vga_state.StartVertRetrace); in vga_vesa_unblank()
777 vga_io_wcrt(0x11, par->vga_state.EndVertRetrace); in vga_vesa_unblank()
779 vga_io_wcrt(0x17, par->vga_state.ModeControl); in vga_vesa_unblank()
781 vga_io_wseq(0x01, par->vga_state.ClockingMode); in vga_vesa_unblank()
803 struct vga16fb_par *par = info->par; in vga16fb_blank()
807 if (par->vesa_blanked) { in vga16fb_blank()
809 par->vesa_blanked = 0; in vga16fb_blank()
811 if (par->palette_blanked) { in vga16fb_blank()
812 par->palette_blanked = 0; in vga16fb_blank()
817 par->palette_blanked = 1; in vga16fb_blank()
821 par->vesa_blanked = 1; in vga16fb_blank()
829 u32 dx = rect->dx, width = rect->width; in vga_8planes_fillrect()
838 where = info->screen_base + dx + rect->dy * info->fix.line_length; in vga_8planes_fillrect()
840 if (rect->rop == ROP_COPY) { in vga_8planes_fillrect()
845 line_ofs = info->fix.line_length - width; in vga_8planes_fillrect()
848 height = rect->height; in vga_8planes_fillrect()
850 while (height--) { in vga_8planes_fillrect()
854 for (x = width; x > 0; --x) { in vga_8planes_fillrect()
855 writeb(rect->color, where); in vga_8planes_fillrect()
867 for (y = 0; y < rect->height; y++) { in vga_8planes_fillrect()
870 where += info->fix.line_length; in vga_8planes_fillrect()
886 vxres = info->var.xres_virtual; in vga16fb_fillrect()
887 vyres = info->var.yres_virtual; in vga16fb_fillrect()
889 if (!rect->width || !rect->height || rect->dx > vxres || rect->dy > vyres) in vga16fb_fillrect()
895 x2 = rect->dx + rect->width; in vga16fb_fillrect()
896 y2 = rect->dy + rect->height; in vga16fb_fillrect()
899 width = x2 - rect->dx; in vga16fb_fillrect()
901 switch (info->fix.type) { in vga16fb_fillrect()
903 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_fillrect()
905 height = y2 - rect->dy; in vga16fb_fillrect()
906 width = rect->width/8; in vga16fb_fillrect()
908 line_ofs = info->fix.line_length - width; in vga16fb_fillrect()
909 dst = info->screen_base + (rect->dx/8) + rect->dy * info->fix.line_length; in vga16fb_fillrect()
911 switch (rect->rop) { in vga16fb_fillrect()
916 setcolor(rect->color); in vga16fb_fillrect()
921 while (height--) { in vga16fb_fillrect()
937 while (height--) { in vga16fb_fillrect()
967 height = area->height; in vga_8planes_copyarea()
969 sx = area->sx / 4; in vga_8planes_copyarea()
970 dx = area->dx / 4; in vga_8planes_copyarea()
971 width = area->width / 4; in vga_8planes_copyarea()
973 if (area->dy < area->sy || (area->dy == area->sy && dx < sx)) { in vga_8planes_copyarea()
974 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
975 dest = info->screen_base + dx + area->dy * info->fix.line_length; in vga_8planes_copyarea()
976 src = info->screen_base + sx + area->sy * info->fix.line_length; in vga_8planes_copyarea()
977 while (height--) { in vga_8planes_copyarea()
988 line_ofs = info->fix.line_length - width; in vga_8planes_copyarea()
989 dest = info->screen_base + dx + width + in vga_8planes_copyarea()
990 (area->dy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
991 src = info->screen_base + sx + width + in vga_8planes_copyarea()
992 (area->sy + height - 1) * info->fix.line_length; in vga_8planes_copyarea()
993 while (height--) { in vga_8planes_copyarea()
995 --src; in vga_8planes_copyarea()
996 --dest; in vga_8planes_copyarea()
1000 src -= line_ofs; in vga_8planes_copyarea()
1001 dest -= line_ofs; in vga_8planes_copyarea()
1013 u32 dx = area->dx, dy = area->dy, sx = area->sx, sy = area->sy; in vga16fb_copyarea()
1019 vxres = info->var.xres_virtual; in vga16fb_copyarea()
1020 vyres = info->var.yres_virtual; in vga16fb_copyarea()
1022 if (area->dx > vxres || area->sx > vxres || area->dy > vyres || in vga16fb_copyarea()
1023 area->sy > vyres) in vga16fb_copyarea()
1027 old_dx = area->dx; in vga16fb_copyarea()
1028 old_dy = area->dy; in vga16fb_copyarea()
1034 x2 = area->dx + area->width; in vga16fb_copyarea()
1035 y2 = area->dy + area->height; in vga16fb_copyarea()
1036 dx = area->dx > 0 ? area->dx : 0; in vga16fb_copyarea()
1037 dy = area->dy > 0 ? area->dy : 0; in vga16fb_copyarea()
1040 width = x2 - dx; in vga16fb_copyarea()
1041 height = y2 - dy; in vga16fb_copyarea()
1047 sx += (dx - old_dx); in vga16fb_copyarea()
1048 sy += (dy - old_dy); in vga16fb_copyarea()
1054 switch (info->fix.type) { in vga16fb_copyarea()
1056 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga16fb_copyarea()
1058 line_ofs = info->fix.line_length - width; in vga16fb_copyarea()
1065 dst = info->screen_base + (dx/8) + dy * info->fix.line_length; in vga16fb_copyarea()
1066 src = info->screen_base + (sx/8) + sy * info->fix.line_length; in vga16fb_copyarea()
1067 while (height--) { in vga16fb_copyarea()
1078 dst = info->screen_base + (dx/8) + width + in vga16fb_copyarea()
1079 (dy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1080 src = info->screen_base + (sx/8) + width + in vga16fb_copyarea()
1081 (sy + height - 1) * info->fix.line_length; in vga16fb_copyarea()
1082 while (height--) { in vga16fb_copyarea()
1084 dst--; in vga16fb_copyarea()
1085 src--; in vga16fb_copyarea()
1089 src -= line_ofs; in vga16fb_copyarea()
1090 dst -= line_ofs; in vga16fb_copyarea()
1114 #error "Only __BIG_ENDIAN and __LITTLE_ENDIAN are supported in vga-planes"
1124 const unsigned char *cdat = image->data; in vga_8planes_imageblit()
1125 u32 dx = image->dx; in vga_8planes_imageblit()
1130 where = info->screen_base + dx + image->dy * info->fix.line_length; in vga_8planes_imageblit()
1133 writeb(image->bg_color, where); in vga_8planes_imageblit()
1136 setmask(image->fg_color ^ image->bg_color); in vga_8planes_imageblit()
1139 for (y = 0; y < image->height; y++, where += info->fix.line_length) in vga_8planes_imageblit()
1150 char __iomem *where = info->screen_base + (image->dx/8) + in vga_imageblit_expand()
1151 image->dy * info->fix.line_length; in vga_imageblit_expand()
1152 struct vga16fb_par *par = info->par; in vga_imageblit_expand()
1153 char *cdat = (char *) image->data; in vga_imageblit_expand()
1157 switch (info->fix.type) { in vga_imageblit_expand()
1159 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4) { in vga_imageblit_expand()
1160 if (par->isVGA) { in vga_imageblit_expand()
1164 setcolor(image->fg_color); in vga_imageblit_expand()
1168 writeb(image->bg_color, where); in vga_imageblit_expand()
1173 for (y = 0; y < image->height; y++) { in vga_imageblit_expand()
1175 for (x = image->width/8; x--;) in vga_imageblit_expand()
1177 where += info->fix.line_length; in vga_imageblit_expand()
1184 setcolor(image->bg_color); 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 setcolor(image->fg_color); in vga_imageblit_expand()
1199 where += info->fix.line_length; in vga_imageblit_expand()
1217 struct vga16fb_par *par = info->par; in vga_imageblit_color()
1219 info->screen_base + image->dy * info->fix.line_length + in vga_imageblit_color()
1220 image->dx/8; in vga_imageblit_color()
1221 const char *cdat = image->data; in vga_imageblit_color()
1225 switch (info->fix.type) { in vga_imageblit_color()
1227 if (info->fix.type_aux == FB_AUX_VGA_PLANES_VGA4 && in vga_imageblit_color()
1228 par->isVGA) { in vga_imageblit_color()
1233 for (y = 0; y < image->height; y++) { in vga_imageblit_color()
1234 for (x = 0; x < image->width; x++) { in vga_imageblit_color()
1239 setmask(1 << (7 - (x % 8))); in vga_imageblit_color()
1245 where += info->fix.line_length; in vga_imageblit_color()
1259 if (image->depth == 1) in vga16fb_imageblit()
1267 iounmap(info->screen_base); in vga16fb_destroy()
1268 fb_dealloc_cmap(&info->cmap); in vga16fb_destroy()
1311 info = framebuffer_alloc(sizeof(struct vga16fb_par), &dev->dev); in vga16fb_probe()
1314 ret = -ENOMEM; in vga16fb_probe()
1317 info->apertures = alloc_apertures(1); in vga16fb_probe()
1318 if (!info->apertures) { in vga16fb_probe()
1319 ret = -ENOMEM; in vga16fb_probe()
1324 info->screen_base = (void __iomem *)VGA_MAP_MEM(VGA_FB_PHYS, 0); in vga16fb_probe()
1326 if (!info->screen_base) { in vga16fb_probe()
1328 ret = -ENOMEM; in vga16fb_probe()
1332 printk(KERN_INFO "vga16fb: mapped to 0x%p\n", info->screen_base); in vga16fb_probe()
1333 par = info->par; in vga16fb_probe()
1335 par->isVGA = screen_info.orig_video_isVGA; in vga16fb_probe()
1336 par->palette_blanked = 0; in vga16fb_probe()
1337 par->vesa_blanked = 0; in vga16fb_probe()
1339 i = par->isVGA? 6 : 2; in vga16fb_probe()
1346 info->fbops = &vga16fb_ops; in vga16fb_probe()
1347 info->var = vga16fb_defined; in vga16fb_probe()
1348 info->fix = vga16fb_fix; in vga16fb_probe()
1350 info->pixmap.blit_x = 1 << 7 | 1 << 15 | 1 << 23 | 1 << 31; in vga16fb_probe()
1351 info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE | in vga16fb_probe()
1354 i = (info->var.bits_per_pixel == 8) ? 256 : 16; in vga16fb_probe()
1355 ret = fb_alloc_cmap(&info->cmap, i, 0); in vga16fb_probe()
1358 ret = -ENOMEM; in vga16fb_probe()
1362 if (vga16fb_check_var(&info->var, info)) { in vga16fb_probe()
1364 ret = -EINVAL; in vga16fb_probe()
1370 info->apertures->ranges[0].base = VGA_FB_PHYS; in vga16fb_probe()
1371 info->apertures->ranges[0].size = VGA_FB_PHYS_LEN; in vga16fb_probe()
1375 ret = -EINVAL; in vga16fb_probe()
1379 fb_info(info, "%s frame buffer device\n", info->fix.id); in vga16fb_probe()
1385 fb_dealloc_cmap(&info->cmap); in vga16fb_probe()
1387 iounmap(info->screen_base); in vga16fb_probe()
1421 return -ENODEV; in vga16fb_init()
1433 ret = -ENOMEM; in vga16fb_init()
1458 * ---------------------------------------------------------------------------
1460 * c-basic-offset: 8