[U-Boot] [PATCH 01/57] dm: Add an init() method to the LPC uclass
Simon Glass
sjg at chromium.org
Tue Dec 8 04:38:20 CET 2015
Add a method for setting up the LPC device after it has been probed. This
is needed because the device cannot fully init until other parts of the
system are ready.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
arch/x86/lib/lpc-uclass.c | 11 +++++++++++
include/lpc.h | 32 ++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
create mode 100644 include/lpc.h
diff --git a/arch/x86/lib/lpc-uclass.c b/arch/x86/lib/lpc-uclass.c
index c6e8f73..399e3db 100644
--- a/arch/x86/lib/lpc-uclass.c
+++ b/arch/x86/lib/lpc-uclass.c
@@ -7,10 +7,21 @@
#include <common.h>
#include <dm.h>
+#include <lpc.h>
#include <dm/root.h>
DECLARE_GLOBAL_DATA_PTR;
+int lpc_init(struct udevice *dev)
+{
+ struct lpc_ops *ops = lpc_get_ops(dev);
+
+ if (!ops->init)
+ return -ENOSYS;
+
+ return ops->init(dev);
+}
+
static int lpc_uclass_post_bind(struct udevice *bus)
{
/*
diff --git a/include/lpc.h b/include/lpc.h
new file mode 100644
index 0000000..9bd2c72
--- /dev/null
+++ b/include/lpc.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ * Written by Simon Glass <sjg at chromium.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __lpc_h
+#define __lpc_h
+
+struct lpc_ops {
+ /**
+ * init() - set up the LPC device
+ *
+ * Complete any init needed to bring the LPC fully into operation.
+ */
+ int (*init)(struct udevice *dev);
+};
+
+#define lpc_get_ops(dev) ((struct lpc_ops *)(dev)->driver->ops)
+
+/**
+ * lpc_init() - init a LPC
+ *
+ * Complete any init needed to bring the LPC fully into operation.
+ *
+ * @dev: LPC device to init
+ * @return 0 if OK, -ve on error
+ */
+int lpc_init(struct udevice *dev);
+
+#endif
--
2.6.0.rc2.230.g3dd15c0
More information about the U-Boot
mailing list