device: add child traversal helper function
Add a function, dev_bus_each_child(), which walks through all the children for a given bus of a device. This helper allows one to walk through all the children of a given device's bus. BUG=b:111808427,b:111743717 TEST=built Change-Id: Iedceb0d19c05b7abd5a48f8dc30f85461bef5ec6 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/27636 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Justin TerAvest <teravest@chromium.org>
This commit is contained in:
parent
8c2852420c
commit
a0dabd1848
|
@ -216,3 +216,27 @@ DEVTREE_CONST struct device *dev_find_slot_pnp(u16 port, u16 device)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a device and previous match iterate through all the children.
|
||||||
|
*
|
||||||
|
* @param bus parent device's bus holding all the children
|
||||||
|
* @param prev_child previous child already traversed, if NULL start at
|
||||||
|
* children of parent bus.
|
||||||
|
* @return pointer to child or NULL when no more children
|
||||||
|
*/
|
||||||
|
DEVTREE_CONST struct device *dev_bus_each_child(const struct bus *parent,
|
||||||
|
DEVTREE_CONST struct device *prev_child)
|
||||||
|
{
|
||||||
|
DEVTREE_CONST struct device *dev;
|
||||||
|
|
||||||
|
if (parent == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (prev_child == NULL)
|
||||||
|
dev = parent->children;
|
||||||
|
else
|
||||||
|
dev = prev_child->sibling;
|
||||||
|
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#ifndef DEVICE_H
|
#ifndef DEVICE_H
|
||||||
|
|
||||||
#define DEVICE_H
|
#define DEVICE_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -275,6 +276,8 @@ DEVTREE_CONST struct device *dev_find_next_pci_device(
|
||||||
DEVTREE_CONST struct device *dev_find_slot_on_smbus(unsigned int bus,
|
DEVTREE_CONST struct device *dev_find_slot_on_smbus(unsigned int bus,
|
||||||
unsigned int addr);
|
unsigned int addr);
|
||||||
DEVTREE_CONST struct device *dev_find_slot_pnp(u16 port, u16 device);
|
DEVTREE_CONST struct device *dev_find_slot_pnp(u16 port, u16 device);
|
||||||
|
DEVTREE_CONST struct device *dev_bus_each_child(const struct bus *parent,
|
||||||
|
DEVTREE_CONST struct device *prev_child);
|
||||||
|
|
||||||
void scan_smbus(struct device *bus);
|
void scan_smbus(struct device *bus);
|
||||||
void scan_generic_bus(struct device *bus);
|
void scan_generic_bus(struct device *bus);
|
||||||
|
|
Loading…
Reference in New Issue