rk fb: add switch enable status when send uevent
authorhjc <hjc@rock-chips.com>
Tue, 14 Apr 2015 07:42:26 +0000 (15:42 +0800)
committerhjc <hjc@rock-chips.com>
Sat, 9 May 2015 07:09:08 +0000 (15:09 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
drivers/video/rockchip/rk_fb.c

index 8baf8f94e430d81276faf868c94bd2b2ba4d0f93..1cbacdff2f93df24090daf10345c0b02fd2152b6 100644 (file)
@@ -3177,16 +3177,14 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                return 0;
        hdmi_switch_state = 0;
        dev_drv->hdmi_switch = 1;
-#ifdef CONFIG_SWITCH
+
        envp[0] = "switch screen";
        envp[1] = kmalloc(32, GFP_KERNEL);
        if (envp[1] == NULL)
                return 0;
-       sprintf(envp[1], "SCREEN=%d", screen->type);
+       sprintf(envp[1], "SCREEN=%d,ENABLE=%d", screen->type, enable);
        envp[2] = NULL;
-       kobject_uevent_env(&dev_drv->dev->kobj, KOBJ_CHANGE, envp);
-       kfree(envp[1]);
-#endif
+
        if ((rk_fb->disp_mode == ONE_DUAL) ||
            (rk_fb->disp_mode == NO_DUAL)) {
                if ((dev_drv->ops->backlight_close) &&
@@ -3214,7 +3212,6 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                    (rk_fb->disp_policy != DISPLAY_POLICY_BOX))) {
                        dev_drv->cur_screen = dev_drv->screen0;
                        dev_drv->ops->load_screen(dev_drv, 1);
-
                        /* force modify dsp size */
                        info = rk_fb->fb[dev_drv->fb_index_base];
                        info->var.grayscale &= 0xff;
@@ -3242,6 +3239,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
                                        dev_drv->ops->open(dev_drv, i, 0);
                        }
                }
+                kobject_uevent_env(&dev_drv->dev->kobj, KOBJ_CHANGE, envp);
+                kfree(envp[1]);
 
                hdmi_switch_state = 0;
                dev_drv->hdmi_switch = 0;
@@ -3291,6 +3290,9 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id)
        }else {
                dev_drv->uboot_logo = 0;
        }
+        kobject_uevent_env(&dev_drv->dev->kobj, KOBJ_CHANGE, envp);
+        kfree(envp[1]);
+
        hdmi_switch_state = 1;
        dev_drv->hdmi_switch = 0;
        if ((rk_fb->disp_mode == ONE_DUAL) || (rk_fb->disp_mode == NO_DUAL)) {