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