From e846d213ef4db50fe939e6694a8e95723b0a6738 Mon Sep 17 00:00:00 2001 From: yxj Date: Mon, 11 Mar 2013 14:48:28 +0800 Subject: [PATCH] =?UTF-8?q?rk3188=20lcdc:fix=20bug=20in=20rk3188=5Flcdc=5F?= =?UTF-8?q?open/close=20=09before=20disable=20lcdc=20clk,we=20must=20make?= =?UTF-8?q?=20sure=20=09the=20lcdc=20enter=20stanby=20and=20finish=20read?= =?UTF-8?q?=20or=20write=20=09the=20lcdc=20register=E3=80=82=20=09Before?= =?UTF-8?q?=20this=20commit,some=20hdmi=20hotplug=20crash=20made=20=09by?= =?UTF-8?q?=20thie=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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; }