@@ -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;
}
@@ -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,
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(+)