diff options
| author | Kazutaka YOKOTA <yokota@FreeBSD.org> | 1997-10-04 04:24:18 +0000 |
|---|---|---|
| committer | Kazutaka YOKOTA <yokota@FreeBSD.org> | 1997-10-04 04:24:18 +0000 |
| commit | 0de89efe5c443f213c7ea28773ef2dc6cf3af2ed (patch) | |
| tree | 217b572ad0cd94a9b38d527797466d9fe2336b98 /sys/modules/syscons/fade | |
| parent | b7536ed531c9d7cbe4e1916cf8729a4f7b006db9 (diff) | |
Notes
Diffstat (limited to 'sys/modules/syscons/fade')
| -rw-r--r-- | sys/modules/syscons/fade/fade_saver.c | 84 |
1 files changed, 65 insertions, 19 deletions
diff --git a/sys/modules/syscons/fade/fade_saver.c b/sys/modules/syscons/fade/fade_saver.c index d68bba93959f..341f7e8d240c 100644 --- a/sys/modules/syscons/fade/fade_saver.c +++ b/sys/modules/syscons/fade/fade_saver.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $ + * $Id: fade_saver.c,v 1.11 1997/07/15 14:49:25 yokota Exp $ */ #include <sys/param.h> @@ -48,34 +48,80 @@ fade_saver(int blank) if (blank) { scrn_blanked = 1; - if (count < 64) { - outb(PIXMASK, 0xFF); /* no pixelmask */ - outb(PALWADR, 0x00); - outb(PALDATA, 0); - outb(PALDATA, 0); - outb(PALDATA, 0); - for (i = 3; i < 768; i++) { - if (palette[i] - count > 15) - outb(PALDATA, palette[i]-count); - else - outb(PALDATA, 15); + switch (crtc_type) { + case KD_VGA: + if (count < 64) { + outb(PIXMASK, 0xFF); /* no pixelmask */ + outb(PALWADR, 0x00); + outb(PALDATA, 0); + outb(PALDATA, 0); + outb(PALDATA, 0); + for (i = 3; i < 768; i++) { + if (palette[i] - count > 15) + outb(PALDATA, palette[i]-count); + else + outb(PALDATA, 15); + } + inb(crtc_addr+6); /* reset flip/flop */ + outb(ATC, 0x20); /* enable palette */ + count++; } - inb(crtc_addr+6); /* reset flip/flop */ - outb(ATC, 0x20); /* enable palette */ - count++; + break; + case KD_EGA: + /* not yet done XXX */ + break; + case KD_CGA: + outb(crtc_addr + 4, 0x25); + break; + case KD_MONO: + case KD_HERCULES: + outb(crtc_addr + 4, 0x21); + break; + default: + break; } } else { - load_palette(palette); - count = scrn_blanked = 0; + switch (crtc_type) { + case KD_VGA: + load_palette(palette); + count = 0; + break; + case KD_EGA: + /* not yet done XXX */ + break; + case KD_CGA: + outb(crtc_addr + 4, 0x2d); + break; + case KD_MONO: + case KD_HERCULES: + outb(crtc_addr + 4, 0x29); + break; + default: + break; + } + scrn_blanked = 0; } } static int fade_saver_load(struct lkm_table *lkmtp, int cmd) { - if (!crtc_vga) - return EINVAL; + switch (crtc_type) { + case KD_MONO: + case KD_HERCULES: + case KD_CGA: + /* + * `fade' saver is not fully implemented for MDA and CGA. + * It simply blanks the display instead. + */ + case KD_VGA: + break; + case KD_EGA: + /* EGA is yet to be supported */ + default: + return ENODEV; + } return add_scrn_saver(fade_saver); } |
