From owner-freebsd-current Mon Aug 3 06:23:13 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id GAA23825 for freebsd-current-outgoing; Mon, 3 Aug 1998 06:23:13 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from outmail.utsunomiya-u.ac.jp (outmail.utsunomiya-u.ac.jp [160.12.196.3]) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id GAA23807 for ; Mon, 3 Aug 1998 06:23:11 -0700 (PDT) (envelope-from yokota@zodiac.mech.utsunomiya-u.ac.jp) Received: by outmail.utsunomiya-u.ac.jp id AA11385; Mon, 3 Aug 1998 22:23:03 +0900 Received: from zodiac.mech.utsunomiya-u.ac.jp (zodiac.mech.utsunomiya-u.ac.jp [160.12.42.1]) by zodiac.mech.utsunomiya-u.ac.jp (8.7.6+2.6Wbeta7/3.4W/zodiac-May96) with ESMTP id WAA19278; Mon, 3 Aug 1998 22:32:20 +0900 (JST) Message-Id: <199808031332.WAA19278@zodiac.mech.utsunomiya-u.ac.jp> To: freebsd-current@FreeBSD.ORG Cc: yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: screen flicker in 3.0-CURRENT Date: Mon, 03 Aug 1998 22:32:19 +0900 From: Kazutaka YOKOTA Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I would be grateful if anybody who are having the following problem would apply the attached patch to /sys/i386/isa/syscons.c and report the result to me. There have been reports that the screen flicker is so bad when the mouse pointer is moved in 3.0-CURRENT and 2.2.7. 2.2.6 saw less of the problem. It has been observed that the problem is most apparent: a) in notebook computers, b) and/or in the systems with a C&T video chip. A possible workaround is to eliminate some I/O access to the chip. But, as I am not sure if this is OK with other VGA chip sets, we shall use a new configuration option SC_BAD_FLICKER. Define this option in the kernel configuration file to remove outb()/outw() calls in question. Thank you for your cooperation. Kazu yokota@freebsd.org --- syscons.c.orig Sun Aug 2 16:30:51 1998 +++ syscons.c Mon Aug 3 18:01:35 1998 @@ -4734,18 +4734,26 @@ outb(ATC, 0x20); /* enable palette */ #if SLOW_VGA +#ifndef SC_BAD_FLICKER outb(TSIDX, 0x00); outb(TSREG, 0x01); +#endif outb(TSIDX, 0x02); outb(TSREG, 0x04); outb(TSIDX, 0x04); outb(TSREG, 0x07); +#ifndef SC_BAD_FLICKER outb(TSIDX, 0x00); outb(TSREG, 0x03); +#endif outb(GDCIDX, 0x04); outb(GDCREG, 0x02); outb(GDCIDX, 0x05); outb(GDCREG, 0x00); outb(GDCIDX, 0x06); outb(GDCREG, 0x04); #else +#ifndef SC_BAD_FLICKER outw(TSIDX, 0x0100); +#endif outw(TSIDX, 0x0402); outw(TSIDX, 0x0704); +#ifndef SC_BAD_FLICKER outw(TSIDX, 0x0300); +#endif outw(GDCIDX, 0x0204); outw(GDCIDX, 0x0005); outw(GDCIDX, 0x0406); /* addr = a0000, 64kb */ @@ -4766,10 +4774,14 @@ outb(ATC, 0x20); /* enable palette */ #if SLOW_VGA +#ifndef SC_BAD_FLICKER outb(TSIDX, 0x00); outb(TSREG, 0x01); +#endif outb(TSIDX, 0x02); outb(TSREG, buf[0]); outb(TSIDX, 0x04); outb(TSREG, buf[1]); +#ifndef SC_BAD_FLICKER outb(TSIDX, 0x00); outb(TSREG, 0x03); +#endif outb(GDCIDX, 0x04); outb(GDCREG, buf[2]); outb(GDCIDX, 0x05); outb(GDCREG, buf[3]); if (crtc_addr == MONO_BASE) { @@ -4778,10 +4790,14 @@ outb(GDCIDX, 0x06); outb(GDCREG,(buf[4] & 0x03) | 0x0c); } #else +#ifndef SC_BAD_FLICKER outw(TSIDX, 0x0100); +#endif outw(TSIDX, 0x0002 | (buf[0] << 8)); outw(TSIDX, 0x0004 | (buf[1] << 8)); +#ifndef SC_BAD_FLICKER outw(TSIDX, 0x0300); +#endif outw(GDCIDX, 0x0004 | (buf[2] << 8)); outw(GDCIDX, 0x0005 | (buf[3] << 8)); if (crtc_addr == MONO_BASE) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message