diff mbox

[U-Boot,v2,28/29] dm: Add dm_scan_other() to locate board-specific devices

Message ID 1404877099-7314-29-git-send-email-sjg@chromium.org
State Superseded
Delegated to: Simon Glass
Headers show

Commit Message

Simon Glass July 9, 2014, 3:38 a.m. UTC
Some boards will have devices which are not in the device tree and do not
have platform data. They may be programnatically created, for example.
Add a hook which boards can use to bind those devices early in boot.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2: None

 drivers/core/root.c |  8 ++++++++
 include/dm/root.h   | 13 +++++++++++++
 2 files changed, 21 insertions(+)
diff mbox

Patch

diff --git a/drivers/core/root.c b/drivers/core/root.c
index bb535e0..1ad6c54 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -108,6 +108,11 @@  int dm_scan_fdt(const void *blob, bool pre_reloc_only)
 }
 #endif
 
+__weak int dm_scan_other(bool pre_reloc_only)
+{
+	return 0;
+}
+
 int dm_init_and_scan(bool pre_reloc_only)
 {
 	int ret;
@@ -129,6 +134,9 @@  int dm_init_and_scan(bool pre_reloc_only)
 		return ret;
 	}
 #endif
+	ret = dm_scan_other(pre_reloc_only);
+	if (ret)
+		return ret;
 
 	return 0;
 }
diff --git a/include/dm/root.h b/include/dm/root.h
index 33f951b..c7f0c1d 100644
--- a/include/dm/root.h
+++ b/include/dm/root.h
@@ -62,6 +62,19 @@  int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset,
 		     bool pre_reloc_only);
 
 /**
+ * dm_scan_other() - Scan for other devices
+ *
+ * Some devices may not be visible to Driver Model. This weak function can
+ * be provided by boards which wish to create their own devices
+ * programmaticaly. They should do this by calling device_bind() on each
+ * device.
+ *
+ * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC
+ * flag. If false bind all drivers.
+ */
+int dm_scan_other(bool pre_reloc_only);
+
+/**
  * dm_init_and_scan() - Initialise Driver Model structures and scan for devices
  *
  * This function initialises the roots of the driver tree and uclass trees,