diff --git a/src/mainboard/google/pit/mainboard.c b/src/mainboard/google/pit/mainboard.c
index 64783ad..67d3b5d 100644
--- a/src/mainboard/google/pit/mainboard.c
+++ b/src/mainboard/google/pit/mainboard.c
@@ -34,6 +34,7 @@
 #include <cpu/samsung/exynos5420/power.h>
 #include <cpu/samsung/exynos5420/i2c.h>
 #include <cpu/samsung/exynos5420/dp-core.h>
+#include <ec/google/chromeec/ec.h>
 
 #include "exynos5420.h"
 
@@ -57,8 +58,6 @@
 
 static void exynos_dp_bridge_setup(void)
 {
-	exynos_pinmux_dphpd();
-
 	gpio_set_value(dp_pd_l, 1);
 	gpio_cfg_pin(dp_pd_l, GPIO_OUTPUT);
 	gpio_set_pull(dp_pd_l, GPIO_PULL_NONE);
@@ -68,6 +67,8 @@
 	gpio_set_pull(dp_rst_l, GPIO_PULL_NONE);
 	udelay(10);
 	gpio_set_value(dp_rst_l, 1);
+
+	gpio_cfg_pin(dp_hpd, GPIO_INPUT);
 }
 
 static void exynos_dp_bridge_init(void)
@@ -170,6 +171,35 @@
 	exynos_pinmux_i2c10();
 }
 
+enum {
+	FET_CTRL_WAIT = 3 << 2,
+	FET_CTRL_ADENFET = 1 << 1,
+	FET_CTRL_ENFET = 1 << 0
+};
+
+static void tps65090_thru_ec_fet_set(int index)
+{
+	uint8_t value = FET_CTRL_ADENFET | FET_CTRL_WAIT | FET_CTRL_ENFET;
+
+	if (google_chromeec_i2c_xfer(0x48, 0xe + index, 1, &value, 1, 0)) {
+		printk(BIOS_ERR,
+		       "Error sending i2c pass through command to EC.\n");
+		return;
+	}
+}
+
+static void lcd_vdd(void)
+{
+	/* Enable FET6, lcd panel */
+	tps65090_thru_ec_fet_set(6);
+}
+
+static void backlight_vdd(void)
+{
+	/* Enable FET1, backlight */
+	tps65090_thru_ec_fet_set(1);
+}
+
 /* this happens after cpu_init where exynos resources are set */
 static void mainboard_init(device_t dev)
 {
@@ -193,7 +223,7 @@
 	fb_addr = cbmem_find(CBMEM_ID_CONSOLE);
 	set_vbe_mode_info_valid(&edid, (uintptr_t)fb_addr);
 
-	// XXX Turn on the LCD power here.
+	lcd_vdd();
 
 	// FIXME: should timeout
 	do {
@@ -204,6 +234,7 @@
 	for (dp_tries = 1; dp_tries <= MAX_DP_TRIES; dp_tries++) {
 		exynos_dp_bridge_init();
 		if (exynos_dp_hotplug()) {
+			printk(BIOS_ERR, "Hotplug detect failed.\n");
 			exynos_dp_reset();
 			continue;
 		}
@@ -213,7 +244,7 @@
 
 		udelay(LCD_T3_DELAY_MS * 1000);
 
-		// XXX Turn on the backlight power here.
+		backlight_vdd();
 		backlight_pwm();
 		backlight_en();
 		/* if we're here, we're successful */
