summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-07-13 15:45:27 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-07-13 15:45:27 -0700
commitf3b676e8180961e0f38b1f92e5340a0cf009f5ce (patch)
treea24a41b493243faf291f4b466c8e188aa96488b4 /drivers/video/fbdev
parent71d280d4b3793ee9743aeda6dbfffb30c79a22fd (diff)
parent3ab4d68a502b9e11731c68ad0613933ad46bfd3c (diff)
Merge "ARM: dts: msm: Enabling ESD detection support for msmcobalt"
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_panel.c63
1 files changed, 33 insertions, 30 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c
index cd770eaac639..9548ea471385 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_panel.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c
@@ -1681,6 +1681,38 @@ static void mdss_dsi_parse_esd_params(struct device_node *np,
if (!pinfo->esd_check_enabled)
return;
+ ctrl->status_mode = ESD_MAX;
+ rc = of_property_read_string(np,
+ "qcom,mdss-dsi-panel-status-check-mode", &string);
+ if (!rc) {
+ if (!strcmp(string, "bta_check")) {
+ ctrl->status_mode = ESD_BTA;
+ } else if (!strcmp(string, "reg_read")) {
+ ctrl->status_mode = ESD_REG;
+ ctrl->check_read_status =
+ mdss_dsi_gen_read_status;
+ } else if (!strcmp(string, "reg_read_nt35596")) {
+ ctrl->status_mode = ESD_REG_NT35596;
+ ctrl->status_error_count = 0;
+ ctrl->check_read_status =
+ mdss_dsi_nt35596_read_status;
+ } else if (!strcmp(string, "te_signal_check")) {
+ if (pinfo->mipi.mode == DSI_CMD_MODE) {
+ ctrl->status_mode = ESD_TE;
+ } else {
+ pr_err("TE-ESD not valid for video mode\n");
+ goto error;
+ }
+ } else {
+ pr_err("No valid panel-status-check-mode string\n");
+ goto error;
+ }
+ }
+
+ if ((ctrl->status_mode == ESD_BTA) || (ctrl->status_mode == ESD_TE) ||
+ (ctrl->status_mode == ESD_MAX))
+ return;
+
mdss_dsi_parse_dcs_cmds(np, &ctrl->status_cmds,
"qcom,mdss-dsi-panel-status-command",
"qcom,mdss-dsi-panel-status-command-state");
@@ -1736,43 +1768,14 @@ static void mdss_dsi_parse_esd_params(struct device_node *np,
memset(ctrl->status_value, 0, ctrl->groups * status_len);
}
- ctrl->status_mode = ESD_MAX;
- rc = of_property_read_string(np,
- "qcom,mdss-dsi-panel-status-check-mode", &string);
- if (!rc) {
- if (!strcmp(string, "bta_check")) {
- ctrl->status_mode = ESD_BTA;
- } else if (!strcmp(string, "reg_read")) {
- ctrl->status_mode = ESD_REG;
- ctrl->check_read_status =
- mdss_dsi_gen_read_status;
- } else if (!strcmp(string, "reg_read_nt35596")) {
- ctrl->status_mode = ESD_REG_NT35596;
- ctrl->status_error_count = 0;
- ctrl->check_read_status =
- mdss_dsi_nt35596_read_status;
- } else if (!strcmp(string, "te_signal_check")) {
- if (pinfo->mipi.mode == DSI_CMD_MODE) {
- ctrl->status_mode = ESD_TE;
- } else {
- pr_err("TE-ESD not valid for video mode\n");
- goto error;
- }
- } else {
- pr_err("No valid panel-status-check-mode string\n");
- goto error;
- }
- }
-
return;
-error:
- kfree(ctrl->return_buf);
error2:
kfree(ctrl->status_value);
error1:
kfree(ctrl->status_valid_params);
kfree(ctrl->status_cmds_rlen);
+error:
pinfo->esd_check_enabled = false;
}