# $Id: xfree86-powerbook_radeon_fix.diff,v 1.3 2005/10/07 02:26:25 jcs Exp $ # # make the radeon driver work on a new 15" apple powerbook # # http://bugs.xfree86.org/show_bug.cgi?id=798 # # by joshua stein # Index: radeon_driver.c =================================================================== RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v retrieving revision 1.116 diff -u -r1.116 radeon_driver.c --- radeon_driver.c 19 Nov 2003 02:08:15 -0000 1.116 +++ radeon_driver.c 2 Dec 2003 04:29:10 -0000 @@ -1810,7 +1810,7 @@ break; default: pll->reference_freq = 2700; - pll->reference_div = 67; + pll->reference_div = 12; pll->xclk = 16615; break; } @@ -4842,9 +4842,9 @@ OUTREGP(RADEON_CRTC_EXT_CNTL, restore->crtc_ext_cntl, - RADEON_CRTC_VSYNC_DIS | + ~(RADEON_CRTC_VSYNC_DIS | RADEON_CRTC_HSYNC_DIS | - RADEON_CRTC_DISPLAY_DIS); + RADEON_CRTC_DISPLAY_DIS)); OUTREGP(RADEON_DAC_CNTL, restore->dac_cntl, @@ -4914,6 +4914,7 @@ RADEONInfoPtr info = RADEONPTR(pScrn); unsigned char *RADEONMMIO = info->MMIO; unsigned long tmp; + int i; OUTREG(RADEON_FP_CRTC_H_TOTAL_DISP, restore->fp_crtc_h_total_disp); OUTREG(RADEON_FP_CRTC_V_TOTAL_DISP, restore->fp_crtc_v_total_disp); @@ -4925,6 +4926,12 @@ OUTREG(RADEON_FP_VERT_STRETCH, restore->fp_vert_stretch); OUTREG(RADEON_FP_GEN_CNTL, restore->fp_gen_cntl); + for (i = 0; i < 8; i++) { + OUTREG(RADEON_SURFACE0_LOWER_BOUND + 0x10*i, 0); + OUTREG(RADEON_SURFACE0_UPPER_BOUND + 0x10*i, 0x1f); + OUTREG(RADEON_SURFACE0_INFO + 0x10*i, 0); + } + /* old AIW Radeon has some BIOS initialization problem * with display buffer underflow, only occurs to DFP */ @@ -5930,8 +5937,6 @@ static Bool RADEONInitCrtcRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save, DisplayModePtr mode, RADEONInfoPtr info) { - unsigned char *RADEONMMIO = info->MMIO; - int format; int hsync_start; int hsync_wid; @@ -6042,7 +6047,7 @@ : 0)); save->crtc_offset = 0; - save->crtc_offset_cntl = INREG(RADEON_CRTC_OFFSET_CNTL); + save->crtc_offset_cntl = 0; save->crtc_pitch = (((pScrn->displayWidth * pScrn->bitsPerPixel) + ((pScrn->bitsPerPixel * 8) -1)) /