Applied patch by Gerald Zajac:

* Fix for a problem of the ProSavage chip when VESA ran 32 bit before.
* Better error codes in SetDisplayMode().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28816 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2008-12-18 21:01:18 +00:00
parent 04a72492c0
commit 8fcbae95c7
2 changed files with 9 additions and 5 deletions

View File

@ -332,10 +332,10 @@ SetDisplayMode(display_mode* pMode)
uint32 maxPixelClock;
if ( ! gInfo.GetColorSpaceParams(mode.space, mode.bpp, maxPixelClock))
return B_ERROR;
return B_BAD_VALUE;
if (ProposeDisplayMode(&mode, pMode, pMode) != B_OK)
return B_ERROR;
return B_BAD_VALUE;
// Note that for some Savage chips, accelerated drawing is badly messed up
// when the display width is 1400 because 1400 is not evenly divisible by 32.
@ -357,7 +357,7 @@ SetDisplayMode(display_mode* pMode)
// Is there enough frame buffer memory for this mode?
if ( ! IsThereEnoughFBMemory(&mode, mode.bpp))
return B_ERROR;
return B_NO_MEMORY;
TRACE("Set display mode: %dx%d virtual size: %dx%d color depth: %d bpp\n",
mode.timing.h_display, mode.timing.v_display,

View File

@ -525,10 +525,14 @@ Savage_WriteMode(const DisplayModeEx& mode, const SavageRegRec& regRec)
WriteCrtcReg(0x67, regRec.CR67 & ~0x0e); // no STREAMS yet old and new
// Set register SR19 to zero so that the ProSavage chips will start up
// when booting under BeOS using the default boot screen.
// when booting under BeOS using the default boot screen, and set register
// CR5F to zero so that the ProSavage chips will start up when Haiku boot
// screen had a depth of 32 bits/pixel
if (si.chipType == S3_PROSAVAGE || si.chipType == S3_TWISTER)
if (si.chipType == S3_PROSAVAGE || si.chipType == S3_TWISTER) {
WriteSeqReg(0x19, 0);
WriteCrtcReg(0x5f, 0);
}
// Clear bit 3 in SR30 so that Savage MX chip will startup. If bit 3 is
// not cleared, it will startup only if booting under BeOS using the