From: Simon Glass Date: Wed, 23 Jul 2014 12:55:23 +0000 (-0600) Subject: dm: Add dm_scan_other() to locate board-specific devices X-Git-Tag: v2014.10-rc1~48 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bb58503d80808b973950ca425c7fb0bc6172a2bd;p=oweals%2Fu-boot.git 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 --- 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 @@ -61,6 +61,19 @@ int dm_scan_fdt(const void *blob, bool pre_reloc_only); 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 *