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>
This commit is contained in:
@@ -45,6 +45,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
|
||||
*
|
||||
|
||||
@@ -155,6 +155,15 @@ int testfdt_ping(struct udevice *dev, int pingval, int *pingret);
|
||||
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
|
||||
*
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user