summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--msm/dsi/dsi_defs.h1
-rw-r--r--msm/dsi/dsi_panel.c18
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;