|
@@ -517,25 +517,25 @@ void lx_set_palette_reg(struct fb_info *info, unsigned regno,
|
|
|
int lx_blank_display(struct fb_info *info, int blank_mode)
|
|
|
{
|
|
|
struct lxfb_par *par = info->par;
|
|
|
- u32 dcfg, fp_pm;
|
|
|
- int blank, hsync, vsync, crt;
|
|
|
+ u32 dcfg, misc, fp_pm;
|
|
|
+ int blank, hsync, vsync;
|
|
|
|
|
|
/* CRT power saving modes. */
|
|
|
switch (blank_mode) {
|
|
|
case FB_BLANK_UNBLANK:
|
|
|
- blank = 0; hsync = 1; vsync = 1; crt = 1;
|
|
|
+ blank = 0; hsync = 1; vsync = 1;
|
|
|
break;
|
|
|
case FB_BLANK_NORMAL:
|
|
|
- blank = 1; hsync = 1; vsync = 1; crt = 1;
|
|
|
+ blank = 1; hsync = 1; vsync = 1;
|
|
|
break;
|
|
|
case FB_BLANK_VSYNC_SUSPEND:
|
|
|
- blank = 1; hsync = 1; vsync = 0; crt = 1;
|
|
|
+ blank = 1; hsync = 1; vsync = 0;
|
|
|
break;
|
|
|
case FB_BLANK_HSYNC_SUSPEND:
|
|
|
- blank = 1; hsync = 0; vsync = 1; crt = 1;
|
|
|
+ blank = 1; hsync = 0; vsync = 1;
|
|
|
break;
|
|
|
case FB_BLANK_POWERDOWN:
|
|
|
- blank = 1; hsync = 0; vsync = 0; crt = 0;
|
|
|
+ blank = 1; hsync = 0; vsync = 0;
|
|
|
break;
|
|
|
default:
|
|
|
return -EINVAL;
|
|
@@ -545,15 +545,23 @@ int lx_blank_display(struct fb_info *info, int blank_mode)
|
|
|
dcfg &= ~(VP_DCFG_DAC_BL_EN | VP_DCFG_HSYNC_EN | VP_DCFG_VSYNC_EN |
|
|
|
VP_DCFG_CRT_EN);
|
|
|
if (!blank)
|
|
|
- dcfg |= VP_DCFG_DAC_BL_EN;
|
|
|
+ dcfg |= VP_DCFG_DAC_BL_EN | VP_DCFG_CRT_EN;
|
|
|
if (hsync)
|
|
|
dcfg |= VP_DCFG_HSYNC_EN;
|
|
|
if (vsync)
|
|
|
dcfg |= VP_DCFG_VSYNC_EN;
|
|
|
- if (crt)
|
|
|
- dcfg |= VP_DCFG_CRT_EN;
|
|
|
+
|
|
|
write_vp(par, VP_DCFG, dcfg);
|
|
|
|
|
|
+ misc = read_vp(par, VP_MISC);
|
|
|
+
|
|
|
+ if (vsync && hsync)
|
|
|
+ misc &= ~VP_MISC_DACPWRDN;
|
|
|
+ else
|
|
|
+ misc |= VP_MISC_DACPWRDN;
|
|
|
+
|
|
|
+ write_vp(par, VP_MISC, misc);
|
|
|
+
|
|
|
/* Power on/off flat panel */
|
|
|
|
|
|
if (par->output & OUTPUT_PANEL) {
|