From: Zheng Yang Date: Tue, 18 Nov 2014 03:07:02 +0000 (+0800) Subject: rk3036 lcdc: X-Git-Tag: firefly_0821_release~4461 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c4a062eff71ec319d672052ec7b29fdbc9f6127a;p=firefly-linux-kernel-4.4.55.git rk3036 lcdc: If same layer is closed twice, atv_layer_cnt may be set to zero, so vop go to standy. Now win0、win1、hwc is mapped to atv_layer_cnt bit[0-2]. When open/close layer, set coresponding atv_layer_cnt bit to one/zero. --- diff --git a/drivers/video/rockchip/lcdc/rk3036_lcdc.c b/drivers/video/rockchip/lcdc/rk3036_lcdc.c index c278bb51d82f..aeb0b353af5b 100755 --- a/drivers/video/rockchip/lcdc/rk3036_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk3036_lcdc.c @@ -349,9 +349,9 @@ static void lcdc_layer_enable(struct lcdc_device *lcdc_dev, "wakeup from standby!\n"); lcdc_dev->standby = 0; } - lcdc_dev->atv_layer_cnt++; - } else if ((lcdc_dev->atv_layer_cnt > 0) && (!open)) { - lcdc_dev->atv_layer_cnt--; + lcdc_dev->atv_layer_cnt |= (1 << win_id); + } else if ((lcdc_dev->atv_layer_cnt & (1 << win_id)) && (!open)) { + lcdc_dev->atv_layer_cnt &= ~(1 << win_id); } lcdc_dev->driver.win[win_id]->state = open; if (!open) {