Date: Mon, 03 Aug 1998 22:32:19 +0900 From: Kazutaka YOKOTA <yokota@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 Message-ID: <199808031332.WAA19278@zodiac.mech.utsunomiya-u.ac.jp>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808031332.WAA19278>
