diff --git a/system/dev/board/vim/rules.mk b/system/dev/board/vim/rules.mk
index 9c0fbc8..e06a5b7 100644
--- a/system/dev/board/vim/rules.mk
+++ b/system/dev/board/vim/rules.mk
@@ -20,6 +20,7 @@
     $(LOCAL_DIR)/vim-eth.c \
     $(LOCAL_DIR)/vim-thermal.c \
     $(LOCAL_DIR)/vim-mailbox.c \
+    $(LOCAL_DIR)/vim-display.c \
 
 MODULE_STATIC_LIBS := \
     system/ulib/ddk \
diff --git a/system/dev/board/vim/vim-display.c b/system/dev/board/vim/vim-display.c
new file mode 100644
index 0000000..ae34ab2
--- /dev/null
+++ b/system/dev/board/vim/vim-display.c
@@ -0,0 +1,89 @@
+// Copyright 2018 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 <ddk/debug.h>
+#include <ddk/device.h>
+#include <ddk/protocol/platform-bus.h>
+#include <ddk/protocol/platform-defs.h>
+#include <soc/aml-s912/s912-hw.h>
+#include <soc/aml-s912/s912-gpio.h>
+#include "vim.h"
+
+// DMC MMIO for display driver
+static pbus_mmio_t vim_display_mmios[] = {
+    {
+        .base =     S912_PRESET_BASE,
+        .length =   S912_PRESET_LENGTH,
+    },
+    {
+        .base =     S912_HDMITX_BASE,
+        .length =   S912_HDMITX_LENGTH,
+    },
+    {
+        .base =     S912_HIU_BASE,
+        .length =   S912_HIU_LENGTH,
+    },
+    {
+        .base =     S912_VPU_BASE,
+        .length =   S912_VPU_LENGTH,
+    },
+    {
+        .base =     S912_HDMITX_SEC_BASE,
+        .length =   S912_HDMITX_SEC_LENGTH,
+    },
+    {
+        .base =     S912_DMC_REG_BASE,
+        .length =   S912_DMC_REG_LENGTH,
+    },
+    {
+        .base =     S912_CBUS_REG_BASE,
+        .length =   S912_CBUS_REG_LENGTH,
+    },
+};
+
+const pbus_gpio_t vim_display_gpios[] = {
+    {
+        // HPD
+        .gpio = S912_GPIOH(0),
+    },
+};
+
+static const pbus_irq_t vim_display_irqs[] = {
+    {
+        .irq = S912_VIU1_VSYNC_IRQ,
+        .mode = ZX_INTERRUPT_MODE_EDGE_HIGH,
+    },
+};
+
+static const pbus_bti_t vim_display_btis[] = {
+    {
+        .iommu_index = 0,
+        .bti_id = BTI_DISPLAY,
+    },
+};
+
+static const pbus_dev_t display_dev = {
+    .name = "display",
+    .vid = PDEV_VID_KHADAS,
+    .pid = PDEV_PID_VIM2,
+    .did = PDEV_DID_VIM_DISPLAY,
+    .mmios = vim_display_mmios,
+    .mmio_count = countof(vim_display_mmios),
+    .gpios = vim_display_gpios,
+    .gpio_count = countof(vim_display_gpios),
+    .irqs = vim_display_irqs,
+    .irq_count = countof(vim_display_irqs),
+    .btis = vim_display_btis,
+    .bti_count = countof(vim_display_btis),
+};
+
+zx_status_t vim_display_init(vim_bus_t* bus) {
+    zx_status_t status;
+    if ((status = pbus_device_add(&bus->pbus, &display_dev, 0)) != ZX_OK) {
+        zxlogf(ERROR, "vim_display_init: pbus_device_add() failed for display: %d\n", status);
+        return status;
+    }
+
+    return ZX_OK;
+}
diff --git a/system/dev/board/vim/vim.c b/system/dev/board/vim/vim.c
index 1ec0954..c4e6870 100644
--- a/system/dev/board/vim/vim.c
+++ b/system/dev/board/vim/vim.c
@@ -20,7 +20,6 @@
 #include <hw/reg.h>
 
 #include <soc/aml-s912/s912-hw.h>
-#include <soc/aml-s912/s912-gpio.h>
 
 #include <zircon/assert.h>
 #include <zircon/process.h>
@@ -29,74 +28,6 @@
 
 #include "vim.h"
 
-// DMC MMIO for display driver
-static pbus_mmio_t vim_display_mmios[] = {
-    {
-        .base =     S912_PRESET_BASE,
-        .length =   S912_PRESET_LENGTH,
-    },
-    {
-        .base =     S912_HDMITX_BASE,
-        .length =   S912_HDMITX_LENGTH,
-    },
-    {
-        .base =     S912_HIU_BASE,
-        .length =   S912_HIU_LENGTH,
-    },
-    {
-        .base =     S912_VPU_BASE,
-        .length =   S912_VPU_LENGTH,
-    },
-    {
-        .base =     S912_HDMITX_SEC_BASE,
-        .length =   S912_HDMITX_SEC_LENGTH,
-    },
-    {
-        .base =     S912_DMC_REG_BASE,
-        .length =   S912_DMC_REG_LENGTH,
-    },
-    {
-        .base =     S912_CBUS_REG_BASE,
-        .length =   S912_CBUS_REG_LENGTH,
-    },
-};
-
-const pbus_gpio_t vim_display_gpios[] = {
-    {
-        // HPD
-        .gpio = S912_GPIOH(0),
-    },
-};
-
-static const pbus_irq_t vim_display_irqs[] = {
-    {
-        .irq = S912_VIU1_VSYNC_IRQ,
-        .mode = ZX_INTERRUPT_MODE_EDGE_HIGH,
-    },
-};
-
-static const pbus_bti_t vim_display_btis[] = {
-    {
-        .iommu_index = 0,
-        .bti_id = BTI_DISPLAY,
-    },
-};
-
-static const pbus_dev_t display_dev = {
-    .name = "display",
-    .vid = PDEV_VID_KHADAS,
-    .pid = PDEV_PID_VIM2,
-    .did = PDEV_DID_VIM_DISPLAY,
-    .mmios = vim_display_mmios,
-    .mmio_count = countof(vim_display_mmios),
-    .gpios = vim_display_gpios,
-    .gpio_count = countof(vim_display_gpios),
-    .irqs = vim_display_irqs,
-    .irq_count = countof(vim_display_irqs),
-    .btis = vim_display_btis,
-    .bti_count = countof(vim_display_btis),
-};
-
 static void vim_bus_release(void* ctx) {
     vim_bus_t* bus = ctx;
     free(bus);
@@ -230,13 +161,14 @@
         zxlogf(ERROR, "vim2_mailbox_init failed: %d\n", status);
         goto fail;
     }
+
     if ((status = vim2_thermal_init(bus)) != ZX_OK) {
         zxlogf(ERROR, "vim2_thermal_init failed: %d\n", status);
         goto fail;
     }
 
-    if ((status = pbus_device_add(&bus->pbus, &display_dev, 0)) != ZX_OK) {
-        zxlogf(ERROR, "vim_start_thread could not add display_dev: %d\n", status);
+    if ((status = vim_display_init(bus)) != ZX_OK) {
+        zxlogf(ERROR, "vim_display_init failed: %d\n", status);
         goto fail;
     }
 
diff --git a/system/dev/board/vim/vim.h b/system/dev/board/vim/vim.h
index f29b17e..2e02443 100644
--- a/system/dev/board/vim/vim.h
+++ b/system/dev/board/vim/vim.h
@@ -66,3 +66,6 @@
 
 // vim-mailbox.c
 zx_status_t vim2_mailbox_init(vim_bus_t* bus);
+
+// vim-display.c
+zx_status_t vim_display_init(vim_bus_t* bus);
