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