Restoring this subset of the CRT registers is required for the video overlay to work after resume on the VX855/XO1.5 -- without the patch, the overlay remains black. (OLPC Trac #10068.)
Signed-off-by: Chris Ball <[email protected]> --- drivers/video/via/viafbdev.c | 13 +++++++++++++ drivers/video/via/viafbdev.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index 767b026..0efc6e1 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c @@ -2042,12 +2042,17 @@ static void viafb_remove_proc(struct proc_dir_entry *viafb_entry) #ifdef CONFIG_PM static int viafb_suspend(void *unused) { + u8 i; acquire_console_sem(); memcpy_fromio((void *)&viaparinfo->saved_video_regs, viaparinfo->io_virt + 0x200, sizeof(video_via_regs)); + /* CR00-CR06 need to be preserved for the video overlay. */ + for (i = 0; i <= 6; i++) + viaparinfo->saved_crt_regs[i] = viafb_read_reg(VIACR, i); + fb_set_suspend(viafbinfo, 1); viafb_sync(viafbinfo); release_console_sem(); @@ -2057,6 +2062,7 @@ static int viafb_suspend(void *unused) static int viafb_resume(void *unused) { + u8 i; volatile video_via_regs *viaVidEng = (volatile video_via_regs *)(viaparinfo->io_virt + 0x200); video_via_regs *localVidEng = &viaparinfo->saved_video_regs; @@ -2126,6 +2132,13 @@ static int viafb_resume(void *unused) fb_set_suspend(viafbinfo, 0); release_console_sem(); + + /* Restore CR00-CR06 */ + viafb_unlock_crt(); + for (i = 0; i <= 6; i++) + viafb_write_reg(i, VIACR, viaparinfo->saved_crt_regs[i]); + viafb_lock_crt(); + return 0; } diff --git a/drivers/video/via/viafbdev.h b/drivers/video/via/viafbdev.h index ca60452..bc72f15 100644 --- a/drivers/video/via/viafbdev.h +++ b/drivers/video/via/viafbdev.h @@ -151,6 +151,7 @@ struct viafb_par { /* For suspend/resume */ video_via_regs saved_video_regs; + u8 saved_crt_regs[7]; }; struct viafb_modeinfo { -- 1.6.2.5 _______________________________________________ Devel mailing list [email protected] http://lists.laptop.org/listinfo/devel
