[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);