summaryrefslogtreecommitdiff
path: root/include/dm
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-07-23 06:55:18 -0600
committerSimon Glass <sjg@chromium.org>2014-07-23 14:08:36 +0100
commit1ca7e2062b4e8c3b211753dcb19c063b5b9b73ca (patch)
tree09873667a133ba84aed32e5b44cfcd08353d1138 /include/dm
parent0040b9442947d00a540f6e93742384a14453c37e (diff)
downloadu-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.h16
-rw-r--r--include/dm/test.h9
-rw-r--r--include/dm/uclass-id.h1
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 */