video: rockchip_fb: synchronous win state
authorMark Yao <mark.yao@rock-chips.com>
Wed, 6 Jan 2016 07:33:26 +0000 (15:33 +0800)
committerHuang Jiachai <hjc@rock-chips.com>
Thu, 14 Jan 2016 05:59:48 +0000 (13:59 +0800)
We enable win0 for uboot display, but win last_state is 0,
when we update win config from config_done ioctl, the state judge
is wrong.

Change-Id: I9955bed1683586254a908cb9395d27585e234b10
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/video/rockchip/lcdc/rk312x_lcdc.c
drivers/video/rockchip/lcdc/rk3288_lcdc.c
drivers/video/rockchip/lcdc/rk3368_lcdc.c
drivers/video/rockchip/rk_fb.c

index f8cb796a2a4e95586e43330f641a3be8990ae35c..c1721b3c48175f48c9479d1eafe1bc15d6cd2da0 100755 (executable)
@@ -1157,6 +1157,7 @@ static int rk312x_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
 {
        struct lcdc_device *lcdc_dev = container_of(dev_drv,
                                                    struct lcdc_device, driver);
+       struct rk_lcdc_win *win = dev_drv->win[0];
        u32 val, mask;
 
        mask = m_WIN0_FORMAT;
@@ -1171,6 +1172,8 @@ static int rk312x_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
        lcdc_writel(lcdc_dev, WIN0_YRGB_MST, rgb_mst);
 
        lcdc_cfg_done(lcdc_dev);
+       win->state = 1;
+       win->last_state = 1;
 
        return 0;
 }
index 8cd84a4d984a2fd024c395e52894b529b9abd42c..a90c8cb00416c6eeda2181499a7e7c58aff3e2e7 100755 (executable)
@@ -1187,6 +1187,7 @@ static int rk3288_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
        struct lcdc_device *lcdc_dev = container_of(dev_drv,
                                                    struct lcdc_device, driver);
        u32 val, mask;
+       struct rk_lcdc_win *win = dev_drv->win[0];
        int swap = (format == RGB888) ? 1 : 0;
 
        mask = m_WIN0_DATA_FMT | m_WIN0_RB_SWAP;
@@ -1201,6 +1202,8 @@ static int rk3288_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
        lcdc_writel(lcdc_dev, WIN0_YRGB_MST, rgb_mst);
 
        lcdc_cfg_done(lcdc_dev);
+       win->state = 1;
+       win->last_state = 1;
 
        return 0;
 }
index 307c1599abb59000b08edfc7a915c4733807321b..8c47829ba5efe03b78fb62cd550e28454d95f85e 100644 (file)
@@ -1835,6 +1835,7 @@ static int rk3368_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
        struct lcdc_device *lcdc_dev = container_of(dev_drv,
                                                    struct lcdc_device, driver);
        u32 val, mask;
+       struct rk_lcdc_win *win = dev_drv->win[0];
        int swap = (format == RGB888) ? 1 : 0;
 
        mask = m_WIN0_DATA_FMT | m_WIN0_RB_SWAP | m_WIN0_Y_MIRROR;
@@ -1850,6 +1851,8 @@ static int rk3368_post_dspbuf(struct rk_lcdc_driver *dev_drv, u32 rgb_mst,
        lcdc_writel(lcdc_dev, WIN0_YRGB_MST, rgb_mst);
 
        lcdc_cfg_done(lcdc_dev);
+       win->state = 1;
+       win->last_state = 1;
 
        return 0;
 }
index 82fa78426fd6df0d9af329a0fa7c466b8441f282..bc1a178160f777f2fc888fcf0738443de794598b 100644 (file)
@@ -3157,6 +3157,8 @@ static int rk_fb_set_par(struct fb_info *info)
        win->area[0].yvir = var->yres_virtual;
        win->area[0].xoff = xoffset;
        win->area[0].yoff = yoffset;
+       win->state = 1;
+       win->last_state = 1;
 
        win->area_num = 1;
        win->alpha_mode = 4;    /* AB_SRC_OVER; */