platform: msm_shared: send the i2c commands to dsi hdmi bridge chip

If i2c commands are set then this change will send them across to
the dsi bridge chip.

Change-Id: I9ea12af5c17766fbfd9f4362860224964dc08f58
diff --git a/dev/gcdb/display/gcdb_display.c b/dev/gcdb/display/gcdb_display.c
index 066fd13..23479ee 100755
--- a/dev/gcdb/display/gcdb_display.c
+++ b/dev/gcdb/display/gcdb_display.c
@@ -543,6 +543,11 @@
 	return ret;
 }
 
+static int mdss_dsi2HDMI_config (struct msm_panel_info *pinfo)
+{
+	return target_display_dsi2hdmi_config(pinfo);
+}
+
 int gcdb_display_init(const char *panel_name, uint32_t rev, void *base)
 {
 	int ret = NO_ERROR;
@@ -566,6 +571,7 @@
 		panel.power_func = mdss_dsi_panel_power;
 		panel.pre_init_func = mdss_dsi_panel_pre_init;
 		panel.bl_func = mdss_dsi_bl_enable;
+		panel.dsi2HDMI_config = mdss_dsi2HDMI_config;
 		/*
 		 * If dfps enabled, reserve fb memory to store pll
 		 * codes and pass pll codes values to kernel.
diff --git a/platform/msm_shared/display.c b/platform/msm_shared/display.c
index 0897b58..3bf5621 100644
--- a/platform/msm_shared/display.c
+++ b/platform/msm_shared/display.c
@@ -331,6 +331,12 @@
 
 	fbcon_setup(&(panel->fb));
 	display_image_on_screen();
+
+	if (panel->dsi2HDMI_config)
+		ret = panel->dsi2HDMI_config(&(panel->panel_info));
+	if (ret)
+		goto msm_display_init_out;
+
 	ret = msm_display_config();
 	if (ret)
 		goto msm_display_init_out;
diff --git a/platform/msm_shared/include/mipi_dsi.h b/platform/msm_shared/include/mipi_dsi.h
index b4d81a4..81c4612 100644
--- a/platform/msm_shared/include/mipi_dsi.h
+++ b/platform/msm_shared/include/mipi_dsi.h
@@ -201,6 +201,13 @@
 	int wait;
 };
 
+struct mipi_dsi_i2c_cmd {
+	uint8_t i2c_addr;
+	uint8_t reg;
+	uint8_t val;
+	int sleep_in_ms;
+};
+
 struct mipi_dsi_panel_config {
 	char mode;
 	char num_of_lanes;
diff --git a/platform/msm_shared/include/msm_panel.h b/platform/msm_shared/include/msm_panel.h
index ff99ba3..7a3b014 100755
--- a/platform/msm_shared/include/msm_panel.h
+++ b/platform/msm_shared/include/msm_panel.h
@@ -267,6 +267,13 @@
 	unsigned long max_link_clk;
 };
 
+struct dsi2HDMI_panel_info {
+	struct mipi_dsi_i2c_cmd *dsi_tg_i2c_cmd;
+	struct mipi_dsi_i2c_cmd *dsi_setup_cfg_i2c_cmd;
+	int num_of_tg_i2c_cmds;
+	int num_of_cfg_i2c_cmds;
+};
+
 enum lvds_mode {
 	LVDS_SINGLE_CHANNEL_MODE,
 	LVDS_DUAL_CHANNEL_MODE,
@@ -315,6 +322,7 @@
 	struct lvds_panel_info lvds;
 	struct hdmi_panel_info hdmi;
 	struct edp_panel_info edp;
+	struct dsi2HDMI_panel_info adv7533;
 
 	struct dfps_info dfps;
 
@@ -345,6 +353,7 @@
 	int (*post_power_func)(int enable);
 	int (*pre_init_func)(void);
 	int (*update_panel_info) (void);
+	int (*dsi2HDMI_config) (struct msm_panel_info *);
 };
 
 #endif