rockchip: rk312x: vop: fix iommu crash when resume
authorMark Yao <mark.yao@rock-chips.com>
Wed, 1 Apr 2015 06:11:43 +0000 (14:11 +0800)
committerMark Yao <mark.yao@rock-chips.com>
Wed, 1 Apr 2015 06:12:14 +0000 (14:12 +0800)
Maybe win is enabled and H/W address is not a vaild
iommu mapped addr, So we need delay to ensure H/W
switch done before enable iommu.

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/video/rockchip/lcdc/rk312x_lcdc.c

index 26c4ca84eec2958725358e46ee8b9d2e376b7299..652b62d2ce0e71bd5d17bd81b87b7a22fa6523d7 100755 (executable)
@@ -1884,8 +1884,15 @@ static int rk312x_lcdc_early_resume(struct rk_lcdc_driver *dev_drv)
        lcdc_cfg_done(lcdc_dev);
 
        if (dev_drv->iommu_enabled) {
-               if (dev_drv->mmu_dev)
+               if (dev_drv->mmu_dev) {
+                       /*
+                        * At here, maybe win is enabled and buffer address
+                        * is not a vaild iommu mapped addr, incase crash,
+                        * delay 30ms to ensure H/W switch done.
+                        */
+                       mdelay(30);
                        rockchip_iovmm_activate(dev_drv->dev);
+               }
        }
 
        spin_unlock(&lcdc_dev->reg_lock);