[vim][led2472g] Move led driver from top level board driver

TEST: manual boot up on vim2
Change-Id: Ife799fceccfa6ff5c18029310cd29ba19ba93d65
diff --git a/system/dev/board/vim/rules.mk b/system/dev/board/vim/rules.mk
index 2052d82..44003ef 100644
--- a/system/dev/board/vim/rules.mk
+++ b/system/dev/board/vim/rules.mk
@@ -22,6 +22,7 @@
     $(LOCAL_DIR)/vim-mailbox.c \
     $(LOCAL_DIR)/vim-display.c \
     $(LOCAL_DIR)/vim-video.c \
+    $(LOCAL_DIR)/vim-led2472g.c \
 
 MODULE_STATIC_LIBS := \
     system/ulib/ddk \
diff --git a/system/dev/board/vim/vim-led2472g.c b/system/dev/board/vim/vim-led2472g.c
new file mode 100644
index 0000000..9b025bf
--- /dev/null
+++ b/system/dev/board/vim/vim-led2472g.c
@@ -0,0 +1,37 @@
+// 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 "vim.h"
+
+static const pbus_i2c_channel_t led2472g_channels[] = {
+    {
+        .bus_id = 0,
+        .address = 0x46,
+    },
+};
+
+static const pbus_dev_t led2472g_dev = {
+    .name = "led2472g",
+    .vid = PDEV_VID_GENERIC,
+    .pid = PDEV_PID_GENERIC,
+    .did = PDEV_DID_LED2472G,
+    .i2c_channels = led2472g_channels,
+    .i2c_channel_count = countof(led2472g_channels),
+};
+
+zx_status_t vim_led2472g_init(vim_bus_t* bus) {
+    zx_status_t status;
+    if ((status = pbus_device_add(&bus->pbus, &led2472g_dev, 0)) != ZX_OK) {
+        zxlogf(ERROR, "vim_led2472g_init: pbus_device_add() failed for led2472g: %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 dce517f..bf964bd 100644
--- a/system/dev/board/vim/vim.c
+++ b/system/dev/board/vim/vim.c
@@ -38,22 +38,6 @@
     .release = vim_bus_release,
 };
 
-static const pbus_i2c_channel_t led2472g_channels[] = {
-  {
-    .bus_id = 0,
-    .address = 0x46,
-  },
-};
-
-static const pbus_dev_t led2472g_dev = {
-  .name = "led2472g",
-  .vid = PDEV_VID_GENERIC,
-  .pid = PDEV_PID_GENERIC,
-  .did = PDEV_DID_LED2472G,
-  .i2c_channels = led2472g_channels,
-  .i2c_channel_count = countof(led2472g_channels),
-};
-
 static int vim_start_thread(void* arg) {
     vim_bus_t* bus = arg;
     zx_status_t status;
@@ -111,9 +95,9 @@
         goto fail;
     }
 
-    if ((status = pbus_device_add(&bus->pbus, &led2472g_dev, 0)) != ZX_OK) {
-      zxlogf(ERROR, "vim_start_thread could not add led2472g_dev: %d\n", status);
-      goto fail;
+    if ((status = vim_led2472g_init(bus)) != ZX_OK) {
+        zxlogf(ERROR, "vim_led2472g_init failed: %d\n", status);
+        goto fail;
     }
 
     if ((status = vim_eth_init(bus)) != ZX_OK) {
diff --git a/system/dev/board/vim/vim.h b/system/dev/board/vim/vim.h
index 12f6e70..0ce40aa 100644
--- a/system/dev/board/vim/vim.h
+++ b/system/dev/board/vim/vim.h
@@ -72,3 +72,6 @@
 
 // vim-video.c
 zx_status_t vim_video_init(vim_bus_t* bus);
+
+// vim-led2472g.c
+zx_status_t vim_led2472g_init(vim_bus_t* bus);