diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c
index dc6e261..33a3d71 100644
--- a/lib/efi_loader/efi_gop.c
+++ b/lib/efi_loader/efi_gop.c
@@ -7,10 +7,12 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <efi_loader.h>
 #include <inttypes.h>
 #include <lcd.h>
 #include <malloc.h>
+#include <video.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -24,6 +26,8 @@
 	/* The only mode we support */
 	struct efi_gop_mode_info info;
 	struct efi_gop_mode mode;
+	/* Fields we only have acces to during init */
+	u32 bpix;
 };
 
 static efi_status_t EFIAPI gop_query_mode(struct efi_gop *this, u32 mode_number,
@@ -57,6 +61,7 @@
 				   unsigned long dy, unsigned long width,
 				   unsigned long height, unsigned long delta)
 {
+	struct efi_gop_obj *gopobj = container_of(this, struct efi_gop_obj, ops);
 	int i, j, line_len16, line_len32;
 	void *fb;
 
@@ -67,13 +72,17 @@
 		return EFI_EXIT(EFI_INVALID_PARAMETER);
 
 	fb = (void*)gd->fb_base;
-	line_len16 = panel_info.vl_col * sizeof(u16);
-	line_len32 = panel_info.vl_col * sizeof(u32);
+	line_len16 = gopobj->info.width * sizeof(u16);
+	line_len32 = gopobj->info.width * sizeof(u32);
 
 	/* Copy the contents line by line */
 
-	switch (panel_info.vl_bpix) {
+	switch (gopobj->bpix) {
+#ifdef CONFIG_DM_VIDEO
+	case VIDEO_BPP32:
+#else
 	case LCD_COLOR32:
+#endif
 		for (i = 0; i < height; i++) {
 			u32 *dest = fb + ((i + dy)  * line_len32) +
 					 (dx * sizeof(u32));
@@ -84,7 +93,11 @@
 			memcpy(dest, src, width * sizeof(u32));
 		}
 		break;
+#ifdef CONFIG_DM_VIDEO
+	case VIDEO_BPP16:
+#else
 	case LCD_COLOR16:
+#endif
 		for (i = 0; i < height; i++) {
 			u16 *dest = fb + ((i + dy)  * line_len16) +
 					 (dx * sizeof(u16));
@@ -102,7 +115,11 @@
 		break;
 	}
 
+#ifdef CONFIG_DM_VIDEO
+	video_sync_all();
+#else
 	lcd_sync();
+#endif
 
 	return EFI_EXIT(EFI_SUCCESS);
 }
@@ -111,10 +128,34 @@
 int efi_gop_register(void)
 {
 	struct efi_gop_obj *gopobj;
+	u32 bpix, col, row;
 
-	switch (panel_info.vl_bpix) {
+#ifdef CONFIG_DM_VIDEO
+	struct udevice *vdev;
+
+	/* We only support a single video output device for now */
+	if (uclass_first_device(UCLASS_VIDEO, &vdev))
+		return -1;
+
+	struct video_priv *priv = dev_get_uclass_priv(vdev);
+	bpix = priv->bpix;
+	col = video_get_xsize(vdev);
+	row = video_get_ysize(vdev);
+#else
+
+	bpix = panel_info.vl_bpix;
+	col = panel_info.vl_col;
+	row = panel_info.vl_row;
+#endif
+
+	switch (bpix) {
+#ifdef CONFIG_DM_VIDEO
+	case VIDEO_BPP16:
+	case VIDEO_BPP32:
+#else
 	case LCD_COLOR32:
 	case LCD_COLOR16:
+#endif
 		break;
 	default:
 		/* So far, we only work in 16 or 32 bit mode */
@@ -137,10 +178,12 @@
 	gopobj->mode.info_size = sizeof(gopobj->info);
 
 	gopobj->info.version = 0;
-	gopobj->info.width = panel_info.vl_col;
-	gopobj->info.height = panel_info.vl_row;
+	gopobj->info.width = col;
+	gopobj->info.height = row;
 	gopobj->info.pixel_format = EFI_GOT_RGBA8;
-	gopobj->info.pixels_per_scanline = panel_info.vl_col;
+	gopobj->info.pixels_per_scanline = col;
+
+	gopobj->bpix = bpix;
 
 	/* Hook up to the device list */
 	list_add_tail(&gopobj->parent.link, &efi_obj_list);
