diff --git a/src/add-ons/accelerants/matrox/SetDisplayMode.c b/src/add-ons/accelerants/matrox/SetDisplayMode.c index b8150ad7a2..2b79155c24 100644 --- a/src/add-ons/accelerants/matrox/SetDisplayMode.c +++ b/src/add-ons/accelerants/matrox/SetDisplayMode.c @@ -396,12 +396,11 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set) } else { + gx00_maven_shutoff_vid_pll(); gx00_crtc_set_timing(target); } - - //fixme: shut-off the videoPLL when applicable, if it exists... } - + /* update driver's mode store */ si->dm = target; diff --git a/src/add-ons/accelerants/matrox/engine/mga_maven.c b/src/add-ons/accelerants/matrox/engine/mga_maven.c index 21afadf3c4..f14178c7c3 100644 --- a/src/add-ons/accelerants/matrox/engine/mga_maven.c +++ b/src/add-ons/accelerants/matrox/engine/mga_maven.c @@ -2,7 +2,7 @@ /* Authors: Mark Watson 6/2000, - Rudolf Cornelissen 1/2003-12/2003 + Rudolf Cornelissen 1/2003-5/2006 Thanx to Petr Vandrovec for writing matroxfb. */ @@ -226,6 +226,21 @@ status_t gx00_maven_mode(int mode,float brightness) return B_OK; } +void gx00_maven_shutoff_vid_pll() +{ + switch (si->ps.card_type) + { + case G100: + case G200: + case G400: + case G400MAX: + MAVW(PIXPLLP, ((MAVR(PIXPLLP)) & ~0x80)); + break; + default: + break; + } +} + status_t gx00_maven_set_vid_pll(display_mode target) { switch (si->ps.card_type) diff --git a/src/add-ons/accelerants/matrox/engine/mga_proto.h b/src/add-ons/accelerants/matrox/engine/mga_proto.h index b8921592b3..a7482073d3 100644 --- a/src/add-ons/accelerants/matrox/engine/mga_proto.h +++ b/src/add-ons/accelerants/matrox/engine/mga_proto.h @@ -70,6 +70,7 @@ status_t g100_g400max_maven_vid_pll_find(display_mode target,float * calc_pclk, uint8 * m_result,uint8 * n_result,uint8 * p_result); status_t g450_g550_maven_vid_pll_find(display_mode target,float * calc_pclk, uint8 * m_result,uint8 * n_result,uint8 * p_result, uint8 test); +void gx00_maven_shutoff_vid_pll(void); status_t gx00_maven_set_vid_pll(display_mode target); /*MAVENTV functions*/