diff options
author | Simon Glass <sjg@chromium.org> | 2014-07-23 06:55:23 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-07-23 14:08:37 +0100 |
commit | bb58503d80808b973950ca425c7fb0bc6172a2bd (patch) | |
tree | 17b2a394ddedda9e0b3096447522a2f56f30493e | |
parent | 9b0ba067f96c2bbd4bcdf0128906877271eab548 (diff) | |
download | u-boot-imx-bb58503d80808b973950ca425c7fb0bc6172a2bd.zip u-boot-imx-bb58503d80808b973950ca425c7fb0bc6172a2bd.tar.gz u-boot-imx-bb58503d80808b973950ca425c7fb0bc6172a2bd.tar.bz2 |
dm: Add dm_scan_other() to locate board-specific devices
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>
-rw-r--r-- | drivers/core/root.c | 8 | ||||
-rw-r--r-- | include/dm/root.h | 13 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/core/root.c b/drivers/core/root.c index 4f9c7e7..393dd98 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, |