platform: msm_shared: configure HDMI GPIOs

Call target specific API to configure the HDMI GPIOs.

Change-Id: I568b505a07b6f8e187489df070fa2e7bf11b8c98
diff --git a/platform/msm_shared/mdss_hdmi.c b/platform/msm_shared/mdss_hdmi.c
index b0f060e..e030410 100644
--- a/platform/msm_shared/mdss_hdmi.c
+++ b/platform/msm_shared/mdss_hdmi.c
@@ -261,25 +261,40 @@
 	return target_hdmi_panel_clock(enable, pinfo);
 }
 
-static int mdss_hdmi_enable_power(uint8_t enable)
+static int mdss_hdmi_enable_power(uint8_t enable, struct msm_panel_info *pinfo)
 {
         int ret = NO_ERROR;
 
-        ret = target_ldo_ctrl(enable);
+        ret = target_ldo_ctrl(enable, pinfo);
         if (ret) {
-                dprintf(CRITICAL, "LDO control enable failed\n");
-                return ret;
+		dprintf(CRITICAL, "LDO control enable failed\n");
+		goto bail_ldo_fail;
         }
 
         ret = target_hdmi_regulator_ctrl(enable);
         if (ret) {
-                dprintf(CRITICAL, "hdmi regulator control enable failed\n");
-                return ret;
+		dprintf(CRITICAL, "hdmi regulator control enable failed\n");
+		goto bail_regulator_fail;
         }
 
-        dprintf(SPEW, "HDMI Panel power %s done\n", enable ? "on" : "off");
+	ret = target_hdmi_gpio_ctrl(enable);
+	if (ret) {
+		dprintf(CRITICAL, "hdmi gpio control enable failed\n");
+		goto bail_gpio_fail;
+        }
 
-        return ret;
+	dprintf(SPEW, "HDMI Panel power %s done\n", enable ? "on" : "off");
+
+	return ret;
+
+bail_gpio_fail:
+	target_hdmi_regulator_ctrl(0);
+
+bail_regulator_fail:
+	target_ldo_ctrl(0, pinfo);
+
+bail_ldo_fail:
+	return ret;
 }
 
 static void mdss_hdmi_set_mode(bool on)
diff --git a/target/target_display.c b/target/target_display.c
index a4e15e2..4b07cc8 100644
--- a/target/target_display.c
+++ b/target/target_display.c
@@ -105,3 +105,8 @@
 {
 	return 0;
 }
+
+__WEAK int target_hdmi_gpio_ctrl(bool enable)
+{
+	return 0;
+}