From e846d213ef4db50fe939e6694a8e95723b0a6738 Mon Sep 17 00:00:00 2001 From: yxj Date: Mon, 11 Mar 2013 14:48:28 +0800 Subject: [PATCH] =?utf8?q?rk3188=20lcdc:fix=20bug=20in=20rk3188=5Flcdc=5Fo?= =?utf8?q?pen/close=20=09before=20disable=20lcdc=20clk,we=20must=20make=20?= =?utf8?q?sure=20=09the=20lcdc=20enter=20stanby=20and=20finish=20read=20or?= =?utf8?q?=20write=20=09the=20lcdc=20register=E3=80=82=20=09Before=20this?= =?utf8?q?=20commit,some=20hdmi=20hotplug=20crash=20made=20=09by=20thie=20?= =?utf8?q?issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- drivers/video/rockchip/lcdc/rk3188_lcdc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk3188_lcdc.c b/drivers/video/rockchip/lcdc/rk3188_lcdc.c index 680df62918d8..5042067774f2 100644 --- a/drivers/video/rockchip/lcdc/rk3188_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk3188_lcdc.c @@ -65,7 +65,7 @@ static int rk3188_lcdc_clk_disable(struct rk3188_lcdc_device *lcdc_dev) spin_lock(&lcdc_dev->reg_lock); lcdc_dev->clk_on = 0; spin_unlock(&lcdc_dev->reg_lock); - + mdelay(25); clk_disable(lcdc_dev->dclk); clk_disable(lcdc_dev->hclk); clk_disable(lcdc_dev->aclk); @@ -310,6 +310,8 @@ static int rk3188_lcdc_open(struct rk_lcdc_device_driver *dev_drv,int layer_id,b if((!open) && (!lcdc_dev->atv_layer_cnt)) //when all layer closed,disable clk { + lcdc_msk_reg(lcdc_dev,INT_STATUS,m_FS_INT_CLEAR,v_FS_INT_CLEAR(1)); + rk3188_lcdc_reg_update(dev_drv); rk3188_lcdc_clk_disable(lcdc_dev); } @@ -927,7 +929,6 @@ static int rk3188_lcdc_early_suspend(struct rk_lcdc_device_driver *dev_drv) return 0; } - mdelay(25); rk3188_lcdc_clk_disable(lcdc_dev); return 0; } -- 2.34.1