diff options
author | Simon Glass <sjg@chromium.org> | 2014-07-23 06:55:18 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-07-23 14:08:36 +0100 |
commit | 1ca7e2062b4e8c3b211753dcb19c063b5b9b73ca (patch) | |
tree | 09873667a133ba84aed32e5b44cfcd08353d1138 /include/dm | |
parent | 0040b9442947d00a540f6e93742384a14453c37e (diff) | |
download | u-boot-imx-1ca7e2062b4e8c3b211753dcb19c063b5b9b73ca.zip u-boot-imx-1ca7e2062b4e8c3b211753dcb19c063b5b9b73ca.tar.gz u-boot-imx-1ca7e2062b4e8c3b211753dcb19c063b5b9b73ca.tar.bz2 |
dm: Provide a function to scan child FDT nodes
At present only root nodes in the device tree are scanned for devices.
But some devices can have children. For example a SPI bus may have
several children for each of its chip selects.
Add a function which scans subnodes and binds devices for each one. This
can be used for the root node scan also, so change it.
A device can call this function in its bind() or probe() methods to bind
its children.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/dm')
-rw-r--r-- | include/dm/root.h | 16 | ||||
-rw-r--r-- | include/dm/test.h | 9 | ||||
-rw-r--r-- | include/dm/uclass-id.h | 1 |
3 files changed, 26 insertions, 0 deletions
diff --git a/include/dm/root.h b/include/dm/root.h index 02c7788..33f951b 100644 --- a/include/dm/root.h +++ b/include/dm/root.h @@ -46,6 +46,22 @@ int dm_scan_platdata(bool pre_reloc_only); int dm_scan_fdt(const void *blob, bool pre_reloc_only); /** + * dm_scan_fdt_node() - Scan the device tree and bind drivers for a node + * + * This scans the subnodes of a device tree node and and creates a driver + * for each one. + * + * @parent: Parent device for the devices that will be created + * @blob: Pointer to device tree blob + * @offset: Offset of node to scan + * @pre_reloc_only: If true, bind only drivers with the DM_FLAG_PRE_RELOC + * flag. If false bind all drivers. + * @return 0 if OK, -ve on error + */ +int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset, + 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, diff --git a/include/dm/test.h b/include/dm/test.h index 409f1a3..e8e1c0b 100644 --- a/include/dm/test.h +++ b/include/dm/test.h @@ -156,6 +156,15 @@ int dm_check_operations(struct dm_test_state *dms, struct udevice *dev, uint32_t base, struct dm_test_priv *priv); /** + * dm_check_devices() - check the devices respond to operations correctly + * + * @dms: Overall test state + * @num_devices: Number of test devices to check + * @return 0 if OK, -ve on error + */ +int dm_check_devices(struct dm_test_state *dms, int num_devices); + +/** * dm_test_main() - Run all the tests * * This runs all available driver model tests diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index 77ff9ea..dd95fca 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -17,6 +17,7 @@ enum uclass_id { UCLASS_DEMO, UCLASS_TEST, UCLASS_TEST_FDT, + UCLASS_TEST_BUS, /* U-Boot uclasses start here */ UCLASS_GPIO, /* Bank of general-purpose I/O pins */ |