|
@@ -610,10 +610,15 @@ static void lx_save_regs(struct lxfb_par *par)
|
|
|
memcpy(par->vp, par->vp_regs, sizeof(par->vp));
|
|
|
memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp));
|
|
|
|
|
|
- /* save the palette */
|
|
|
+ /* save the display controller palette */
|
|
|
write_dc(par, DC_PAL_ADDRESS, 0);
|
|
|
- for (i = 0; i < ARRAY_SIZE(par->pal); i++)
|
|
|
- par->pal[i] = read_dc(par, DC_PAL_DATA);
|
|
|
+ for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
|
|
|
+ par->dc_pal[i] = read_dc(par, DC_PAL_DATA);
|
|
|
+
|
|
|
+ /* save the video processor palette */
|
|
|
+ write_vp(par, VP_PAR, 0);
|
|
|
+ for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
|
|
|
+ par->vp_pal[i] = read_vp(par, VP_PDR);
|
|
|
|
|
|
/* save the horizontal filter coefficients */
|
|
|
filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
|
|
@@ -706,8 +711,8 @@ static void lx_restore_display_ctlr(struct lxfb_par *par)
|
|
|
|
|
|
/* restore the palette */
|
|
|
write_dc(par, DC_PAL_ADDRESS, 0);
|
|
|
- for (i = 0; i < ARRAY_SIZE(par->pal); i++)
|
|
|
- write_dc(par, DC_PAL_DATA, par->pal[i]);
|
|
|
+ for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
|
|
|
+ write_dc(par, DC_PAL_DATA, par->dc_pal[i]);
|
|
|
|
|
|
/* restore the horizontal filter coefficients */
|
|
|
filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
|
|
@@ -751,6 +756,11 @@ static void lx_restore_video_proc(struct lxfb_par *par)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* restore video processor palette */
|
|
|
+ write_vp(par, VP_PAR, 0);
|
|
|
+ for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
|
|
|
+ write_vp(par, VP_PDR, par->vp_pal[i]);
|
|
|
+
|
|
|
/* restore video coeff ram */
|
|
|
memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff));
|
|
|
}
|