From e2487cf114d37d0d1721c487a46bfb4d92f1ebff Mon Sep 17 00:00:00 2001 From: zhanggb Date: Tue, 3 Dec 2019 12:33:13 +0800 Subject: [PATCH] Kernel/Display: mot extend code: get lcd para Use below command to get current dsi panel command: adb shell "cat /sys/devices/platform/soc/soc:qcom,dsi-display-primary/ dsi_display_parse_para" Change-Id: I7d3624da8cffc4ae4b42054c323d9ecfa6caa5c3 Reviewed-on: https://gerrit.mot.com/1464821 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Guobin Zhang Submit-Approved: Jira Key Reviewed-on: https://gerrit.mot.com/1509820 Reviewed-by: Hua Tan --- msm/dsi/dsi_display_mot_ext.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/msm/dsi/dsi_display_mot_ext.c b/msm/dsi/dsi_display_mot_ext.c index 12b7a510fa4f..46c355845a91 100644 --- a/msm/dsi/dsi_display_mot_ext.c +++ b/msm/dsi/dsi_display_mot_ext.c @@ -1056,7 +1056,7 @@ static void dsi_display_show_para(char* buf, char* pbuf, enum dsi_cmd_set_type t int count = priv_info->cmd_sets[type].count; memset(pbuf, 0, PAGE_SIZE); - rc = snprintf(pbuf, PAGE_SIZE, "## count:%d ====\n", count); + rc = snprintf(pbuf, PAGE_SIZE, "##Command for %s: count:%d ====\n", cmd_set_prop_map[type], count); strcat(buf, pbuf); memset(pbuf, 0, PAGE_SIZE); for (i=0; imodes[index].priv_info; mode_timing = &display->modes[index].timing; - pbuf = kmalloc(PAGE_SIZE, GFP_KERNEL); + pbuf = kzalloc(PAGE_SIZE*4, GFP_KERNEL); if (pbuf) { - rc = snprintf(buf, PAGE_SIZE, "panel horz active:%d front_portch:%d back_porch:%d pulse_width:%d h_skew:%d\n", + psubbuf = kzalloc(PAGE_SIZE, GFP_KERNEL); + if (!psubbuf) + return rc; + rc = snprintf(psubbuf, PAGE_SIZE, "panel horz active:%d front_portch:%d back_porch:%d pulse_width:%d h_skew:%d\n", mode_timing->h_active, mode_timing->h_front_porch, mode_timing->h_back_porch, mode_timing->h_sync_width, mode_timing->h_skew); - memset(pbuf, 0, PAGE_SIZE); - rc = snprintf(pbuf, PAGE_SIZE, "panel vert active:%d front_portch:%d back_porch:%d pulse_width:%d\n", + strcat(pbuf, psubbuf); + memset(psubbuf, 0, PAGE_SIZE); + rc = snprintf(psubbuf, PAGE_SIZE, "panel vert active:%d front_portch:%d back_porch:%d pulse_width:%d\n", mode_timing->v_active, mode_timing->v_front_porch, mode_timing->v_back_porch, mode_timing->v_sync_width); - strcat(buf, pbuf); - memset(pbuf, 0, PAGE_SIZE); - rc = snprintf(pbuf, PAGE_SIZE, "panel clk rate:%d mdp_transfer_time_us:%d refresh_rate:%d\n", + strcat(pbuf, psubbuf); + memset(psubbuf, 0, PAGE_SIZE); + rc = snprintf(psubbuf, PAGE_SIZE, "panel clk rate:%d mdp_transfer_time_us:%d refresh_rate:%d\n", display_mode->priv_info->clk_rate_hz , display_mode->priv_info->mdp_transfer_time_us, mode_timing->refresh_rate); - strcat(buf, pbuf); - dsi_display_show_para(buf, pbuf, DSI_CMD_SET_ON, priv_info); - dsi_display_show_para(buf, pbuf, DSI_CMD_SET_OFF, priv_info); - dsi_display_show_para(buf, pbuf, DSI_CMD_SET_TIMING_SWITCH, priv_info); + strcat(pbuf, psubbuf); + memset(psubbuf, 0, PAGE_SIZE); + dsi_display_show_para(pbuf, psubbuf, DSI_CMD_SET_ON, priv_info); + dsi_display_show_para(pbuf, psubbuf, DSI_CMD_SET_OFF, priv_info); + dsi_display_show_para(pbuf, psubbuf, DSI_CMD_SET_TIMING_SWITCH, priv_info); + rc = snprintf(buf, PAGE_SIZE, "%s\n", pbuf); printk("%s\n", buf); } else { pr_warn("kmalloc failed\n" ); } + if (psubbuf) + kfree(psubbuf); if (pbuf) kfree(pbuf); return rc;