From d0abb3685d76414ada539f670baebe17258c14a2 Mon Sep 17 00:00:00 2001 From: Jayant Shekhar Date: Fri, 30 Jan 2015 11:01:59 +0530 Subject: [PATCH] msm: mdss: Add extra panel info element in the fb_data_type Dynamically allocating memory and using can cause overhead while the memory is getting allocated and de-allocated for every update for recovery use-cases. Hence, add one more instance of struct panel info element in the fb_data_type and use it. Change-Id: Ic26b73bd779e21b008093cab1cb3decc28a95587 Signed-off-by: Jayant Shekhar (cherry picked from commit b2110a1e44c030cbdc715a18af2adc5f37da2411) [veeras@codeaurora.org: Resolve merge conflict in mdss_fb.c] Signed-off-by: Veera Sundaram Sankaran --- drivers/video/fbdev/msm/mdss_fb.c | 14 ++++---------- drivers/video/fbdev/msm/mdss_fb.h | 1 + 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index a0acde96c554..3d11bd4f8bd2 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -3076,19 +3076,13 @@ static int mdss_fb_check_var(struct fb_var_screeninfo *var, return -EINVAL; if (mfd->panel_info) { - struct mdss_panel_info *pinfo; int rc; - pinfo = kmalloc(sizeof(struct mdss_panel_info), GFP_KERNEL); - if (!pinfo) { - pr_err("unable to allocate memory for pinfo\n"); - return -ENOMEM; - } - memcpy(pinfo, mfd->panel_info, sizeof(*pinfo)); - mdss_fb_var_to_panelinfo(var, pinfo); + memcpy(&mfd->reconfig_panel_info, mfd->panel_info, + sizeof(mfd->reconfig_panel_info)); + mdss_fb_var_to_panelinfo(var, &mfd->reconfig_panel_info); rc = mdss_fb_send_panel_event(mfd, MDSS_EVENT_CHECK_PARAMS, - pinfo); - kfree(pinfo); + &mfd->reconfig_panel_info); if (IS_ERR_VALUE(rc)) return rc; mfd->panel_reconfig = rc; diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h index 114aac2eb820..b8609b3b1c0d 100644 --- a/drivers/video/fbdev/msm/mdss_fb.h +++ b/drivers/video/fbdev/msm/mdss_fb.h @@ -249,6 +249,7 @@ struct msm_fb_data_type { struct panel_id panel; struct mdss_panel_info *panel_info; + struct mdss_panel_info reconfig_panel_info; int split_mode; int split_fb_left; int split_fb_right;