diff options
Diffstat (limited to 'drivers/video/neofb.c')
-rw-r--r-- | drivers/video/neofb.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/video/neofb.c b/drivers/video/neofb.c index b85e2b180a44..a2e201dc40f7 100644 --- a/drivers/video/neofb.c +++ b/drivers/video/neofb.c | |||
@@ -843,6 +843,9 @@ static int neofb_set_par(struct fb_info *info) | |||
843 | 843 | ||
844 | par->SysIfaceCntl2 = 0xc0; /* VESA Bios sets this to 0x80! */ | 844 | par->SysIfaceCntl2 = 0xc0; /* VESA Bios sets this to 0x80! */ |
845 | 845 | ||
846 | /* Initialize: by default, we want display config register to be read */ | ||
847 | par->PanelDispCntlRegRead = 1; | ||
848 | |||
846 | /* Enable any user specified display devices. */ | 849 | /* Enable any user specified display devices. */ |
847 | par->PanelDispCntlReg1 = 0x00; | 850 | par->PanelDispCntlReg1 = 0x00; |
848 | if (par->internal_display) | 851 | if (par->internal_display) |
@@ -1334,11 +1337,17 @@ static int neofb_blank(int blank_mode, struct fb_info *info) | |||
1334 | struct neofb_par *par = info->par; | 1337 | struct neofb_par *par = info->par; |
1335 | int seqflags, lcdflags, dpmsflags, reg; | 1338 | int seqflags, lcdflags, dpmsflags, reg; |
1336 | 1339 | ||
1340 | |||
1337 | /* | 1341 | /* |
1338 | * Reload the value stored in the register, might have been changed via | 1342 | * Reload the value stored in the register, if sensible. It might have |
1339 | * FN keystroke | 1343 | * been changed via FN keystroke. |
1340 | */ | 1344 | */ |
1341 | par->PanelDispCntlReg1 = vga_rgfx(NULL, 0x20) & 0x03; | 1345 | if (par->PanelDispCntlRegRead) { |
1346 | neoUnlock(); | ||
1347 | par->PanelDispCntlReg1 = vga_rgfx(NULL, 0x20) & 0x03; | ||
1348 | neoLock(&par->state); | ||
1349 | } | ||
1350 | par->PanelDispCntlRegRead = !blank_mode; | ||
1342 | 1351 | ||
1343 | switch (blank_mode) { | 1352 | switch (blank_mode) { |
1344 | case FB_BLANK_POWERDOWN: /* powerdown - both sync lines down */ | 1353 | case FB_BLANK_POWERDOWN: /* powerdown - both sync lines down */ |