platform: msm_shared: add delay to make sure FB ready before backlight on

Add SPI cmd post function for SPI panel to make sure FB ready
before backlight on.

Change-Id: Ibee25415634863aea0f6fb7ea2809f7348ac9952
Signed-off-by: Wenjun Zhang <wjzhan@codeaurora.org>
diff --git a/platform/msm_shared/display.c b/platform/msm_shared/display.c
index cf4db48..780ecfc 100644
--- a/platform/msm_shared/display.c
+++ b/platform/msm_shared/display.c
@@ -257,6 +257,9 @@
 		ret = mdss_spi_on(pinfo, &(panel->fb));
 		if (ret)
 			goto msm_display_on_out;
+		ret = mdss_spi_cmd_post_on(pinfo);
+		if (ret)
+			goto msm_display_on_out;
 		break;
 #endif
 #ifdef DISPLAY_TYPE_QPIC
diff --git a/platform/msm_shared/include/mdp4.h b/platform/msm_shared/include/mdp4.h
index 8bbb3a7..b27e363 100644
--- a/platform/msm_shared/include/mdp4.h
+++ b/platform/msm_shared/include/mdp4.h
@@ -128,4 +128,5 @@
 int mdss_spi_init(void);
 int mdss_spi_panel_init(struct msm_panel_info *pinfo);
 int mdss_spi_on(struct msm_panel_info *pinfo, struct fbcon_config *fb);
+int mdss_spi_cmd_post_on(struct msm_panel_info *pinfo);
 #endif
diff --git a/platform/msm_shared/mdss_spi.c b/platform/msm_shared/mdss_spi.c
index 4819478..4cd5d4b 100644
--- a/platform/msm_shared/mdss_spi.c
+++ b/platform/msm_shared/mdss_spi.c
@@ -171,3 +171,32 @@
 
 	return ret;
 }
+
+int mdss_spi_cmd_post_on(struct msm_panel_info *pinfo)
+{
+	int cmd_count = 0;
+	char *payload;
+
+	if (!dev) {
+		dprintf(CRITICAL, "SPI has not been initialized\n");
+		return -ENODEV;
+	}
+
+	while (cmd_count < pinfo->spi.num_of_panel_cmds) {
+		if (pinfo->spi.panel_cmds[cmd_count].cmds_post_tg){
+			payload = pinfo->spi.panel_cmds[cmd_count].payload;
+			mdss_spi_write_cmd(payload);
+			if (pinfo->spi.panel_cmds[cmd_count].size > 1)
+				mdss_spi_write_data(payload + 1,
+					pinfo->spi.panel_cmds[cmd_count].size
+						- 1);
+
+			if (pinfo->spi.panel_cmds[cmd_count].wait)
+				mdelay(pinfo->spi.panel_cmds[cmd_count].wait);
+		}
+
+		cmd_count ++;
+	}
+
+	return SUCCESS;
+}