close win0 when no addr
authorzyw <zyw@rock-chips.com>
Wed, 15 Dec 2010 06:55:50 +0000 (14:55 +0800)
committerzyw <zyw@rock-chips.com>
Wed, 15 Dec 2010 06:55:50 +0000 (14:55 +0800)
drivers/video/rk29_fb.c

index c3e913ba35be6aff61e42232ebc71282c0668eaa..f10945b9330c482464ec8ba14c6f87271fa05b9c 100755 (executable)
@@ -1019,7 +1019,7 @@ static int win0fb_set_par(struct fb_info *info)
     fix->smem_len = smem_len;
     fix->mmio_start = uv_addr;
 
-    par->addr_seted = ((-1==(int)y_addr)&&(-1==(int)uv_addr)) ? 0 : 1;
+    par->addr_seted = (((-1==(int)y_addr)&&(-1==(int)uv_addr))||((0==(int)y_addr)&&(0==(int)uv_addr))) ? 0 : 1;
     fbprintk("buffer alloced by user fix->smem_start = %8x, fix->smem_len = %8x, fix->mmio_start = %8x \n", (u32)fix->smem_start, (u32)fix->smem_len, (u32)fix->mmio_start);
 
        // calculate the display phy address
@@ -1056,7 +1056,7 @@ static int win0fb_set_par(struct fb_info *info)
     LcdWrReg(inf, WIN0_YRGB_MST, y_addr);
     LcdWrReg(inf, WIN0_CBR_MST, uv_addr);
 
-    LcdMskReg(inf, SYS_CONFIG, m_W0_ENABLE | m_W0_FORMAT, v_W0_ENABLE(win0_en) | v_W0_FORMAT(format));
+    LcdMskReg(inf, SYS_CONFIG, m_W0_ENABLE | m_W0_FORMAT, v_W0_ENABLE(win0_en && par->addr_seted) | v_W0_FORMAT(format));
 
     LcdMskReg(inf, WIN0_VIR, m_WORDLO | m_WORDHI, v_VIRWIDTH(xvir) | v_VIRHEIGHT((yvir)) );
     LcdMskReg(inf, WIN0_ACT_INFO, m_WORDLO | m_WORDHI, v_WORDLO(xact) | v_WORDHI(yact));