From: Mark Yao Date: Wed, 1 Apr 2015 06:11:43 +0000 (+0800) Subject: rockchip: rk312x: vop: fix iommu crash when resume X-Git-Tag: firefly_0821_release~4222 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ac98211da0f2d98386dbf482467ec7310019f63b;p=firefly-linux-kernel-4.4.55.git rockchip: rk312x: vop: fix iommu crash when resume 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 --- diff --git a/drivers/video/rockchip/lcdc/rk312x_lcdc.c b/drivers/video/rockchip/lcdc/rk312x_lcdc.c index 26c4ca84eec2..652b62d2ce0e 100755 --- a/drivers/video/rockchip/lcdc/rk312x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk312x_lcdc.c @@ -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);