diff --git a/src/i810_reg.h b/src/i810_reg.h index d97780f..9da258a 100644 --- a/src/i810_reg.h +++ b/src/i810_reg.h @@ -2105,6 +2105,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define DSPARB 0x70030 #define DSPARB_CSTART_SHIFT 7 #define DSPARB_BSTART_SHIFT 0 +#define DSPARB_BEND_SHIFT 9 /* on 855 */ +#define DSPARB_AEND_SHIFT 0 #define DSPFW1 0x70034 #define DSPFW2 0x70038 #define DSPFW3 0x7003c diff --git a/src/i830_driver.c b/src/i830_driver.c index 1b07064..1041fe3 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -1963,7 +1963,16 @@ SetHWOperatingState(ScrnInfoPtr pScrn) * we don't use plane C at all so we can allocate all but one of the 96 * FIFO RAM entries equally between planes A and B. */ - OUTREG(DSPARB, (95 << DSPARB_CSTART_SHIFT) | (48 << DSPARB_BSTART_SHIFT)); + if (IS_I9XX(pI830)) { + if (IS_I915GM(pI830) || IS_I915G(pI830)) + OUTREG(DSPARB, (95 << DSPARB_CSTART_SHIFT) | + (48 << DSPARB_BSTART_SHIFT)); + else + OUTREG(DSPARB, (127 << DSPARB_CSTART_SHIFT) | + (64 << DSPARB_BSTART_SHIFT)); + } else { + OUTREG(DSPARB, 254 << DSPARB_BEND_SHIFT | 128 << DSPARB_AEND_SHIFT); + } } enum pipe {