diff --git a/system/dev/board/vim/vim.c b/system/dev/board/vim/vim.c
index e4e13a2..5fa33a1 100644
--- a/system/dev/board/vim/vim.c
+++ b/system/dev/board/vim/vim.c
@@ -23,6 +23,22 @@
 #include "vim.h"
 #include "vim-hw.h"
 
+static const pbus_mmio_t display_mmios[] = {
+    {
+        .base = 0x3d800000,
+        .length = 1920 * 1080 * 2,
+    },
+};
+
+static const pbus_dev_t display_dev = {
+    .name = "display",
+    .vid = PDEV_VID_KHADAS,
+    .pid = PDEV_PID_VIM,
+    .did = PDEV_PID_VIM_DISPLAY,
+    .mmios = display_mmios,
+    .mmio_count = countof(display_mmios),
+};
+
 static zx_status_t vim_bus_get_protocol(void* ctx, uint32_t proto_id, void* out) {
 //    vim_bus_t* bus = ctx;
 
@@ -98,11 +114,15 @@
     intf.ctx = bus;
     pbus_set_interface(&bus->pbus, &intf);
 
-printf("call vim_usb_init\n");
     if ((status = vim_usb_init(bus)) != ZX_OK) {
         zxlogf(ERROR, "vim_usb_init failed: %d\n", status);
     }
 
+    if ((status = pbus_device_add(&bus->pbus, &display_dev, 0)) != ZX_OK) {
+        zxlogf(ERROR, "vim_usb_init could not add display_dev: %d\n", status);
+        return status;
+    }
+
     return ZX_OK;
 
 fail:
diff --git a/system/dev/display/vim-display/rules.mk b/system/dev/display/vim-display/rules.mk
new file mode 100644
index 0000000..56b2ce1
--- /dev/null
+++ b/system/dev/display/vim-display/rules.mk
@@ -0,0 +1,18 @@
+# Copyright 2017 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+MODULE := $(LOCAL_DIR)
+
+MODULE_TYPE := driver
+
+MODULE_SRCS += \
+    $(LOCAL_DIR)/vim-display.c
+
+MODULE_STATIC_LIBS := system/ulib/ddk system/ulib/sync
+
+MODULE_LIBS := system/ulib/driver system/ulib/zircon system/ulib/c
+
+include make/module.mk
diff --git a/system/dev/display/vim-display/vim-display.c b/system/dev/display/vim-display/vim-display.c
new file mode 100644
index 0000000..1c48d74
--- /dev/null
+++ b/system/dev/display/vim-display/vim-display.c
@@ -0,0 +1,114 @@
+// Copyright 2017 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <assert.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <ddk/device.h>
+#include <ddk/driver.h>
+#include <ddk/binding.h>
+#include <ddk/io-buffer.h>
+#include <ddk/protocol/display.h>
+#include <ddk/protocol/platform-defs.h>
+#include <ddk/protocol/platform-device.h>
+
+#include <zircon/syscalls.h>
+#include <zircon/assert.h>
+
+typedef struct {
+    zx_display_info_t disp_info;
+    pdev_vmo_buffer_t buffer;
+} bcm_display_t;
+
+static zx_status_t vc_set_mode(void* ctx, zx_display_info_t* info) {
+    return ZX_OK;
+}
+
+static zx_status_t vc_get_mode(void* ctx, zx_display_info_t* info) {
+    bcm_display_t* display = ctx;
+    memcpy(info, &display->disp_info, sizeof(zx_display_info_t));
+    return ZX_OK;
+}
+
+static zx_status_t vc_get_framebuffer(void* ctx, void** framebuffer) {
+    if (!framebuffer) return ZX_ERR_INVALID_ARGS;
+    bcm_display_t* display = ctx;
+    *framebuffer = display->buffer.vaddr;
+    return ZX_OK;
+}
+
+static void vc_flush_framebuffer(void* ctx) {
+    bcm_display_t* display = ctx;
+    pdev_vmo_buffer_cache_flush(&display->buffer, 0, display->buffer.size);
+}
+
+static display_protocol_ops_t vc_display_proto = {
+    .set_mode = vc_set_mode,
+    .get_mode = vc_get_mode,
+    .get_framebuffer = vc_get_framebuffer,
+    .flush = vc_flush_framebuffer
+};
+
+static zx_protocol_device_t empty_device_proto = {
+    .version = DEVICE_OPS_VERSION,
+};
+
+zx_status_t bcm_display_bind(void* ctx, zx_device_t* parent) {
+    bcm_display_t* display = calloc(1, sizeof(bcm_display_t));
+    if (!display) {
+        return ZX_ERR_NO_MEMORY;
+    }
+
+   platform_device_protocol_t pdev;
+    zx_status_t status = device_get_protocol(parent, ZX_PROTOCOL_PLATFORM_DEV, &pdev);
+    if (status !=  ZX_OK) {
+        free(display);
+        return status;
+    }
+
+    status = pdev_map_mmio_buffer(&pdev, 0, ZX_CACHE_POLICY_CACHED, &display->buffer);
+    if (status != ZX_OK) {
+        return status;
+    }
+
+    display->disp_info.format = ZX_PIXEL_FORMAT_RGB_565;
+    display->disp_info.width = 1920;
+    display->disp_info.height = 1080;
+    display->disp_info.stride = 1920;
+
+    zx_set_framebuffer(get_root_resource(), display->buffer.vaddr,
+                       display->buffer.size, display->disp_info.format,
+                       display->disp_info.width, display->disp_info.height,
+                       display->disp_info.stride);
+
+    device_add_args_t vc_fbuff_args = {
+        .version = DEVICE_ADD_ARGS_VERSION,
+        .name = "vim-display",
+        .ctx = display,
+        .ops = &empty_device_proto,
+        .proto_id = ZX_PROTOCOL_DISPLAY,
+        .proto_ops = &vc_display_proto,
+    };
+
+    status = device_add(parent, &vc_fbuff_args, NULL);
+    if (status != ZX_OK) {
+        free(display);
+    }
+    return status;
+}
+
+static zx_driver_ops_t bcm_display_driver_ops = {
+    .version = DRIVER_OPS_VERSION,
+    .bind = bcm_display_bind,
+};
+
+ZIRCON_DRIVER_BEGIN(bcm_display, bcm_display_driver_ops, "zircon", "0.1", 4)
+    BI_ABORT_IF(NE, BIND_PROTOCOL, ZX_PROTOCOL_PLATFORM_DEV),
+    BI_ABORT_IF(NE, BIND_PLATFORM_DEV_VID, PDEV_VID_KHADAS),
+    BI_MATCH_IF(EQ, BIND_PLATFORM_DEV_PID, PDEV_PID_VIM),
+    BI_MATCH_IF(EQ, BIND_PLATFORM_DEV_DID, PDEV_PID_VIM_DISPLAY),
+ZIRCON_DRIVER_END(bcm_display)
diff --git a/system/ulib/ddk/include/ddk/protocol/platform-defs.h b/system/ulib/ddk/include/ddk/protocol/platform-defs.h
index 2f00514..9b25eb8 100644
--- a/system/ulib/ddk/include/ddk/protocol/platform-defs.h
+++ b/system/ulib/ddk/include/ddk/protocol/platform-defs.h
@@ -39,5 +39,6 @@
 // Khadas
 #define PDEV_VID_KHADAS             4
 #define PDEV_PID_VIM                1
+#define PDEV_PID_VIM_DISPLAY        1
 
 __END_CDECLS;
