diff options
-rw-r--r-- | msm/dsi/dsi_defs.h | 1 | ||||
-rw-r--r-- | msm/dsi/dsi_panel.c | 18 |
2 files changed, 12 insertions, 7 deletions
diff --git a/msm/dsi/dsi_defs.h b/msm/dsi/dsi_defs.h index 30fb2206..476a84e1 100644 --- a/msm/dsi/dsi_defs.h +++ b/msm/dsi/dsi_defs.h @@ -626,6 +626,7 @@ struct dsi_display_mode_priv_info { struct msm_display_topology topology; struct msm_display_dsc_info dsc; bool dsc_enabled; + bool pps_created; struct msm_roi_caps roi_caps; void *switch_data; diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index ef6605b0..9e9b9cfb 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -4575,12 +4575,17 @@ int dsi_panel_update_pps(struct dsi_panel *panel) set = &priv_info->cmd_sets[DSI_CMD_SET_PPS]; - dsi_dsc_create_pps_buf_cmd(&priv_info->dsc, panel->dsc_pps_cmd, 0); - rc = dsi_panel_create_cmd_packets(panel->dsc_pps_cmd, - DSI_CMD_PPS_SIZE, 1, set->cmds); - if (rc) { - DSI_ERR("failed to create cmd packets, rc=%d\n", rc); - goto error; + if (!priv_info->pps_created) { + dsi_dsc_create_pps_buf_cmd(&priv_info->dsc, panel->dsc_pps_cmd, 0); + rc = dsi_panel_create_cmd_packets(panel->dsc_pps_cmd, + DSI_CMD_PPS_SIZE, 1, set->cmds); + if (rc) { + DSI_ERR("failed to create cmd packets, rc=%d\n", rc); + goto error; + } + else { + priv_info->pps_created = true; + } } rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_PPS); @@ -4589,7 +4594,6 @@ int dsi_panel_update_pps(struct dsi_panel *panel) panel->name, rc); } - dsi_panel_destroy_cmd_packets(set); error: mutex_unlock(&panel->panel_lock); return rc; |