From: hjc <hjc@rock-chips.com>
Date: Sat, 28 Feb 2015 07:09:28 +0000 (+0800)
Subject: rk3368 lcdc: fix fbdc addr config error
X-Git-Tag: firefly_0821_release~4158^2~434
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bec9e91374e9686093f56916961d3b7d027f2438;p=firefly-linux-kernel-4.4.55.git

rk3368 lcdc: fix fbdc addr config error

Signed-off-by: hjc <hjc@rock-chips.com>
---

diff --git a/drivers/video/rockchip/lcdc/rk3368_lcdc.c b/drivers/video/rockchip/lcdc/rk3368_lcdc.c
index 69e87441035a..43f267417ff0 100755
--- a/drivers/video/rockchip/lcdc/rk3368_lcdc.c
+++ b/drivers/video/rockchip/lcdc/rk3368_lcdc.c
@@ -886,10 +886,6 @@ static int rk3368_fbdc_reg_update(struct rk_lcdc_driver *dev_drv, int win_id)
 	val = v_IFBDC_TILES_NUM(win->area[0].fbdc_num_tiles);
 	lcdc_msk_reg(lcdc_dev, IFBDC_TILES_NUM, mask, val);
 
-	mask = m_IFBDC_BASE_ADDR;
-	val = v_IFBDC_BASE_ADDR(win->area[0].y_addr);
-	lcdc_msk_reg(lcdc_dev, IFBDC_BASE_ADDR, mask, val);
-
 	mask = m_IFBDC_MB_SIZE_WIDTH | m_IFBDC_MB_SIZE_HEIGHT;
 	val = v_IFBDC_MB_SIZE_WIDTH(win->area[0].fbdc_mb_width) |
 	    v_IFBDC_MB_SIZE_HEIGHT(win->area[0].fbdc_mb_height);
@@ -2099,7 +2095,9 @@ static int win_0_1_display(struct lcdc_device *lcdc_dev,
 		win->area[0].uv_addr = uv_addr;
 		lcdc_writel(lcdc_dev, WIN0_YRGB_MST + off, win->area[0].y_addr);
 		lcdc_writel(lcdc_dev, WIN0_CBR_MST + off, win->area[0].uv_addr);
-		/*lcdc_cfg_done(lcdc_dev); */
+                if (win->area[0].fbdc_en == 1)
+                        lcdc_writel(lcdc_dev, IFBDC_BASE_ADDR,
+                                        win->area[0].y_addr);
 	}
 	spin_unlock(&lcdc_dev->reg_lock);
 
@@ -2128,6 +2126,9 @@ static int win_2_3_display(struct lcdc_device *lcdc_dev,
 		lcdc_writel(lcdc_dev, WIN2_MST1 + off, win->area[1].y_addr);
 		lcdc_writel(lcdc_dev, WIN2_MST2 + off, win->area[2].y_addr);
 		lcdc_writel(lcdc_dev, WIN2_MST3 + off, win->area[3].y_addr);
+                if (win->area[0].fbdc_en == 1)
+                        lcdc_writel(lcdc_dev, IFBDC_BASE_ADDR,
+                                        win->area[0].y_addr);
 	}
 	spin_unlock(&lcdc_dev->reg_lock);
 	return 0;