Lines Matching +full:mode +full:-
1 /* -*- linux-c -*- ------------------------------------------------------- *
4 * Copyright 2007-2008 rPath, Inc. - All Rights Reserved
9 * ----------------------------------------------------------------------- */
12 * arch/i386/boot/video-mode.c
14 * Set the video mode. This is separated out into a different
29 int do_restore; /* Screen contents changed during mode flip */
30 int graphic_mode; /* Graphic mode with linear frame buffer */
32 /* Probe the video drivers and have them generate their mode lists. */
44 if (card->unsafe == unsafe) { in probe_cards()
45 if (card->probe) in probe_cards()
46 card->nmodes = card->probe(); in probe_cards()
48 card->nmodes = 0; in probe_cards()
53 /* Test if a mode is defined */
54 int mode_defined(u16 mode) in mode_defined() argument
61 mi = card->modes; in mode_defined()
62 for (i = 0; i < card->nmodes; i++, mi++) { in mode_defined()
63 if (mi->mode == mode) in mode_defined()
71 /* Set mode (without recalc) */
72 static int raw_set_mode(u16 mode, u16 *real_mode) in raw_set_mode() argument
79 mode &= ~VIDEO_RECALC; in raw_set_mode()
81 /* Scan for mode based on fixed ID, position, or resolution */ in raw_set_mode()
84 mi = card->modes; in raw_set_mode()
85 for (i = 0; i < card->nmodes; i++, mi++) { in raw_set_mode()
86 int visible = mi->x || mi->y; in raw_set_mode()
88 if ((mode == nmode && visible) || in raw_set_mode()
89 mode == mi->mode || in raw_set_mode()
90 mode == (mi->y << 8)+mi->x) { in raw_set_mode()
91 *real_mode = mi->mode; in raw_set_mode()
92 return card->set_mode(mi); in raw_set_mode()
100 /* Nothing found? Is it an "exceptional" (unprobed) mode? */ in raw_set_mode()
102 if (mode >= card->xmode_first && in raw_set_mode()
103 mode < card->xmode_first+card->xmode_n) { in raw_set_mode()
105 *real_mode = mix.mode = mode; in raw_set_mode()
107 return card->set_mode(&mix); in raw_set_mode()
112 return -1; in raw_set_mode()
129 rows--; /* ... minus one */ in vga_recalc_vertical()
134 pt &= ~0x80; /* Unlock CR0-7 */ in vga_recalc_vertical()
141 ov |= (rows >> (8-1)) & 0x02; in vga_recalc_vertical()
142 ov |= (rows >> (9-6)) & 0x40; in vga_recalc_vertical()
146 /* Set mode (with recalc if specified) */
147 int set_mode(u16 mode) in set_mode() argument
152 /* Very special mode numbers... */ in set_mode()
153 if (mode == VIDEO_CURRENT_MODE) in set_mode()
155 else if (mode == NORMAL_VGA) in set_mode()
156 mode = VIDEO_80x25; in set_mode()
157 else if (mode == EXTENDED_VGA) in set_mode()
158 mode = VIDEO_8POINT; in set_mode()
160 rv = raw_set_mode(mode, &real_mode); in set_mode()
164 if (mode & VIDEO_RECALC) in set_mode()
167 /* Save the canonical mode number for the kernel, not in set_mode()