diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 42b6d0c..a0ea7cf 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4230,6 +4230,27 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
     state->pll2.pll_cntl = INREG(AVIVO_P2PLL_CNTL);
     state->pll2.int_ss_cntl = INREG(AVIVO_P2PLL_INT_SS_CNTL);
 
+    state->vga25_ppll.ref_div_src = INREG(AVIVO_VGA25_PPLL_REF_DIV_SRC);
+    state->vga25_ppll.ref_div = INREG(AVIVO_VGA25_PPLL_REF_DIV);
+    state->vga25_ppll.fb_div = INREG(AVIVO_VGA25_PPLL_FB_DIV);
+    state->vga25_ppll.post_div_src = INREG(AVIVO_VGA25_PPLL_POST_DIV_SRC);
+    state->vga25_ppll.post_div = INREG(AVIVO_VGA25_PPLL_POST_DIV);
+    state->vga25_ppll.pll_cntl = INREG(AVIVO_VGA25_PPLL_CNTL);
+
+    state->vga28_ppll.ref_div_src = INREG(AVIVO_VGA28_PPLL_REF_DIV_SRC);
+    state->vga28_ppll.ref_div = INREG(AVIVO_VGA28_PPLL_REF_DIV);
+    state->vga28_ppll.fb_div = INREG(AVIVO_VGA28_PPLL_FB_DIV);
+    state->vga28_ppll.post_div_src = INREG(AVIVO_VGA28_PPLL_POST_DIV_SRC);
+    state->vga28_ppll.post_div = INREG(AVIVO_VGA28_PPLL_POST_DIV);
+    state->vga28_ppll.pll_cntl = INREG(AVIVO_VGA28_PPLL_CNTL);
+
+    state->vga41_ppll.ref_div_src = INREG(AVIVO_VGA41_PPLL_REF_DIV_SRC);
+    state->vga41_ppll.ref_div = INREG(AVIVO_VGA41_PPLL_REF_DIV);
+    state->vga41_ppll.fb_div = INREG(AVIVO_VGA41_PPLL_FB_DIV);
+    state->vga41_ppll.post_div_src = INREG(AVIVO_VGA41_PPLL_POST_DIV_SRC);
+    state->vga41_ppll.post_div = INREG(AVIVO_VGA41_PPLL_POST_DIV);
+    state->vga41_ppll.pll_cntl = INREG(AVIVO_VGA41_PPLL_CNTL);
+
     state->crtc1.pll_source = INREG(AVIVO_PCLK_CRTC1_CNTL);
 
     state->crtc1.h_total = INREG(AVIVO_D1CRTC_H_TOTAL);
@@ -4600,6 +4621,28 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
     OUTREG(AVIVO_PCLK_CRTC1_CNTL, state->crtc1.pll_source);
     OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source);
 
+    /* Set the vga PLL */
+    OUTREG(AVIVO_VGA25_PPLL_REF_DIV_SRC, state->vga25_ppll.ref_div_src);
+    OUTREG(AVIVO_VGA25_PPLL_REF_DIV, state->vga25_ppll.ref_div);
+    OUTREG(AVIVO_VGA25_PPLL_FB_DIV, state->vga25_ppll.fb_div);
+    OUTREG(AVIVO_VGA25_PPLL_POST_DIV_SRC, state->vga25_ppll.post_div_src);
+    OUTREG(AVIVO_VGA25_PPLL_POST_DIV, state->vga25_ppll.post_div);
+    OUTREG(AVIVO_VGA25_PPLL_CNTL, state->vga25_ppll.pll_cntl);
+
+    OUTREG(AVIVO_VGA28_PPLL_REF_DIV_SRC, state->vga28_ppll.ref_div_src);
+    OUTREG(AVIVO_VGA28_PPLL_REF_DIV, state->vga28_ppll.ref_div);
+    OUTREG(AVIVO_VGA28_PPLL_FB_DIV, state->vga28_ppll.fb_div);
+    OUTREG(AVIVO_VGA28_PPLL_POST_DIV_SRC, state->vga28_ppll.post_div_src);
+    OUTREG(AVIVO_VGA28_PPLL_POST_DIV, state->vga28_ppll.post_div);
+    OUTREG(AVIVO_VGA28_PPLL_CNTL, state->vga28_ppll.pll_cntl);
+
+    OUTREG(AVIVO_VGA41_PPLL_REF_DIV_SRC, state->vga41_ppll.ref_div_src);
+    OUTREG(AVIVO_VGA41_PPLL_REF_DIV, state->vga41_ppll.ref_div);
+    OUTREG(AVIVO_VGA41_PPLL_FB_DIV, state->vga41_ppll.fb_div);
+    OUTREG(AVIVO_VGA41_PPLL_POST_DIV_SRC, state->vga41_ppll.post_div_src);
+    OUTREG(AVIVO_VGA41_PPLL_POST_DIV, state->vga41_ppll.post_div);
+    OUTREG(AVIVO_VGA41_PPLL_CNTL, state->vga41_ppll.pll_cntl);
+
     /* Set the CRTC */
     OUTREG(AVIVO_D1CRTC_H_TOTAL, state->crtc1.h_total);
     OUTREG(AVIVO_D1CRTC_H_BLANK_START_END, state->crtc1.h_blank_start_end);
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index ce4ba93..d03f306 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -333,6 +333,10 @@ struct avivo_state
     struct avivo_pll_state pll1;
     struct avivo_pll_state pll2;
 
+    struct avivo_pll_state vga25_ppll;
+    struct avivo_pll_state vga28_ppll;
+    struct avivo_pll_state vga41_ppll;
+
     struct avivo_crtc_state crtc1;
     struct avivo_crtc_state crtc2;
 
diff --git a/src/radeon_reg.h b/src/radeon_reg.h
index 19f9869..44d21fe 100644
--- a/src/radeon_reg.h
+++ b/src/radeon_reg.h
@@ -3477,6 +3477,25 @@
 #       define AVIVO_DVGA_CONTROL_ROTATE (1<<24)
 #define AVIVO_D2VGA_CONTROL					0x0338
 
+#define AVIVO_VGA25_PPLL_REF_DIV_SRC				0x0360
+#define AVIVO_VGA25_PPLL_REF_DIV				0x0364
+#define AVIVO_VGA28_PPLL_REF_DIV_SRC				0x0368
+#define AVIVO_VGA28_PPLL_REF_DIV				0x036c
+#define AVIVO_VGA41_PPLL_REF_DIV_SRC				0x0370
+#define AVIVO_VGA41_PPLL_REF_DIV				0x0374
+#define AVIVO_VGA25_PPLL_FB_DIV				0x0378
+#define AVIVO_VGA28_PPLL_FB_DIV				0x037c
+#define AVIVO_VGA41_PPLL_FB_DIV				0x0380
+#define AVIVO_VGA25_PPLL_POST_DIV_SRC				0x0384
+#define AVIVO_VGA25_PPLL_POST_DIV				0x0388
+#define AVIVO_VGA28_PPLL_POST_DIV_SRC				0x038c
+#define AVIVO_VGA28_PPLL_POST_DIV				0x0390
+#define AVIVO_VGA41_PPLL_POST_DIV_SRC				0x0394
+#define AVIVO_VGA41_PPLL_POST_DIV				0x0398
+#define AVIVO_VGA25_PPLL_CNTL					0x039c
+#define AVIVO_VGA28_PPLL_CNTL					0x03a0
+#define AVIVO_VGA41_PPLL_CNTL					0x03a4
+
 #define AVIVO_EXT1_PPLL_REF_DIV_SRC                             0x400
 #define AVIVO_EXT1_PPLL_REF_DIV                                 0x404
 #define AVIVO_EXT1_PPLL_UPDATE_LOCK                             0x408
