RS/6000 860 portable - display problem fixed
baccala at freesoft.org
baccala at freesoft.org
Sun Jan 17 21:16:24 EST 1999
Hi -
OK, I had a bit of a "breakthrough" with this code, and while it still
doesn't do everything I want (the "BIG_SCREEN" mode doesn't display
externally on my VGA display, only on the LCD), it's a far sight better
than 24 hours ago. Basically, I took out everything that changed the
VGA controller's clock settings, reasoning that they were already set
correctly by the boot ROM, and ended up with a display I can finally
read.
Patch is attached, relative to arch/ppc/boot. What's the chain of
command for ppc? Should I commit this code to vger.rutgers.edu in the
expectation that it'll find it way into Linus' tree?
--
-bwb
Brent Baccala
baccala at freesoft.org
-------------------------------------------------------------------------
To receive periodic news about what's happening at freesoft.org, send
email to "announce at freesoft.org", with "SUBSCRIBE" as the message, i.e:
echo SUBSCRIBE | mail announce at freesoft.org
-------------------------------------------------------------------------
-------------- next part --------------
*** vreset.c 1998/06/10 07:21:33 1.6
--- vreset.c 1999/01/17 10:07:12
***************
*** 613,620 ****
unlockS3(void)
{
int s3_device_id;
! outw(0x3d4, 0x3848);
! outw(0x3d4, 0x39a5);
outb(0x3d4, 0x2d);
s3_device_id = inb(0x3d5) << 8;
outb(0x3d4, 0x2e);
--- 613,620 ----
unlockS3(void)
{
int s3_device_id;
! outw(0x3d4, 0x3848); /* Unlock registers CR2D - CR3F */
! outw(0x3d4, 0x39a5); /* Unlock registers CR40 - CRFF */
outb(0x3d4, 0x2d);
s3_device_id = inb(0x3d5) << 8;
outb(0x3d4, 0x2e);
***************
*** 667,686 ****
outb(0x3D4, 0x32);
outb(0x3D5, inb(0x3D5)&~0x10);
} else {
! outw(0x3c4, 0x0806); /* IBM Portable 860 */
! outw(0x3c4, 0x1041);
! outw(0x3c4, 0x1128);
! outw(0x3d4, 0x4000);
! outw(0x3d4, 0x3100);
! outw(0x3d4, 0x3a05);
! outw(0x3d4, 0x6688);
! outw(0x3d4, 0x5800); /* disable linear addressing */
! outw(0x3d4, 0x4500); /* disable H/W cursor */
! outw(0x3c4, 0x5410); /* enable auto-centering */
outw(0x3c4, 0x561f);
! outw(0x3c4, 0x1b80); /* lock DCLK selection */
! outw(0x3d4, 0x3900); /* lock S3 registers */
! outw(0x3d4, 0x3800);
} /* endif */
}
--- 667,694 ----
outb(0x3D4, 0x32);
outb(0x3D5, inb(0x3D5)&~0x10);
} else {
! /* S3 86CM65 Aurora 64V+ (s3_device_id 0x8812)
! *
! * Dual display LCD/CRT chip used in IBM RS/6000 portable 860s
! */
! outw(0x3c4, 0x0806); /* SR8 - unlock registers SR9 - SR6F */
! outw(0x3d4, 0x3100); /* CR31 - normal mode */
! outw(0x3d4, 0x3a05); /* CR3A - 2 refresh cycles/horz line */
! outw(0x3d4, 0x6688); /* CR66 - PCI bus disconnect enable */
! outw(0x3d4, 0x5800); /* CR58 - disable linear addressing */
! outw(0x3d4, 0x4500); /* CR45 - disable H/W cursor */
! #ifdef SMALL_SCREEN
! outw(0x3c4, 0x5410); /* SR54/56 - enable centering */
outw(0x3c4, 0x561f);
! #else
! outw(0x3c4, 0x541f); /* SR54-57 - enable expansion */
! outw(0x3c4, 0x551f);
! outw(0x3c4, 0x561f);
! outw(0x3c4, 0x577f);
! #endif
! outw(0x3d4, 0x3900); /* CR39 - lock registers CR40 - CRFF */
! outw(0x3d4, 0x3800); /* CR38 - lock registers CR2D - CR3F */
! outw(0x3c4, 0x0800); /* SR8 - lock registers SR9 - SR6F */
} /* endif */
}
More information about the Linuxppc-dev
mailing list