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>
This commit is contained in:
Simon Glass 2014-07-23 06:55:23 -06:00
parent 9b0ba067f9
commit bb58503d80
2 changed files with 21 additions and 0 deletions

View file

@ -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;
}

View file

@ -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
*