rk312x lcdc: fix fb_par->state error.
authorhjc <hjc@rock-chips.com>
Tue, 25 Nov 2014 03:44:25 +0000 (11:44 +0800)
committerhjc <hjc@rock-chips.com>
Tue, 25 Nov 2014 03:44:25 +0000 (11:44 +0800)
drivers/video/rockchip/lcdc/rk312x_lcdc.c
drivers/video/rockchip/rk_fb.c

index a7076a3d86cf2d44ff1c7f294e0215c8250124c3..66795a6e36b69b175836e9e503958a675e609e1c 100755 (executable)
@@ -531,9 +531,9 @@ static void lcdc_layer_enable(struct lcdc_device *lcdc_dev, unsigned int win_id,
                                         "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) {
index 78ccdba29fffb7a50b451315740bb6b7af5ed6b3..e707198ea4485438a7b8b8b1a24432d847bd5546 100755 (executable)
@@ -2707,6 +2707,10 @@ static int rk_fb_ioctl(struct fb_info *info, unsigned int cmd,
        case RK_FBIOSET_ENABLE:
                if (copy_from_user(&enable, argp, sizeof(enable)))
                        return -EFAULT;
+                               if (enable)
+                                       fb_par->state++;
+                               else
+                                       fb_par->state--;
                dev_drv->ops->open(dev_drv, win_id, enable);
                break;
        case RK_FBIOGET_ENABLE: