summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/core/root.c8
-rw-r--r--include/dm/root.h13
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 4f9c7e708a..393dd98b9d 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 33f951b0cc..c7f0c1d5ca 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,
OpenPOWER on IntegriCloud