Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec47ff8f authored by Sandeep Panda's avatar Sandeep Panda
Browse files

msm: mdss: do not update panel backlight before commit



This change ensures the enabling of panel backlight only
when the first frame is sent to panel during device resume.

Change-Id: I9006f93014a378cfbf10d54bca2ab262954333f0
Signed-off-by: default avatarSandeep Panda <spanda@codeaurora.org>
parent 4515d68c
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
 * Core MDSS framebuffer driver.
 *
 * Copyright (C) 2007 Google Incorporated
 * Copyright (c) 2008-2014, The Linux Foundation. All rights reserved.
 * Copyright (c) 2008-2015, The Linux Foundation. All rights reserved.
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
@@ -1103,13 +1103,13 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl)
		 * as well as setting bl_level to bkl_lvl even though the
		 * backlight has been set to the scaled value.
		 */
		if (mfd->bl_level_scaled == temp) {
		if (mfd->bl_level_old == temp) {
			mfd->bl_level = bkl_lvl;
		} else {
			pr_debug("backlight sent to panel :%d\n", temp);
			pdata->set_backlight(pdata, temp);
			mfd->bl_level = bkl_lvl;
			mfd->bl_level_scaled = temp;
			mfd->bl_level_old = temp;
			bl_notify_needed = true;
		}
		if (bl_notify_needed)
@@ -1145,7 +1145,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd)
				}
			}
			pdata->set_backlight(pdata, temp);
			mfd->bl_level_scaled = mfd->unset_bl_level;
			mfd->bl_level_old = mfd->unset_bl_level;
			mfd->bl_updated = 1;
			mdss_fb_bl_update_notify(mfd);
		}
@@ -1221,17 +1221,6 @@ static int mdss_fb_unblank_sub(struct msm_fb_data_type *mfd)
			schedule_delayed_work(&mfd->idle_notify_work,
				msecs_to_jiffies(mfd->idle_time));
	}

	/* Reset the backlight only if the panel was off */
	if (mdss_panel_is_power_off(cur_power_state)) {
		mutex_lock(&mfd->bl_lock);
		if (!mfd->bl_updated) {
			mfd->bl_updated = 1;
			mdss_fb_set_backlight(mfd, mfd->unset_bl_level);
		}
		mutex_unlock(&mfd->bl_lock);
	}

error:
	return ret;
}
@@ -1315,7 +1304,6 @@ static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info,
				/* Stop Display thread */
				if (mfd->disp_thread)
					mdss_fb_stop_disp_thread(mfd);
				mdss_fb_set_backlight(mfd, 0);
				mfd->bl_updated = 0;
			}
			mfd->panel_power_state = req_power_state;
+2 −2
Original line number Diff line number Diff line
/* Copyright (c) 2008-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -243,7 +243,7 @@ struct msm_fb_data_type {
	u32 bl_min_lvl;
	u32 unset_bl_level;
	u32 bl_updated;
	u32 bl_level_scaled;
	u32 bl_level_old;
	struct mutex bl_lock;

	struct platform_device *pdev;