diff options
Diffstat (limited to 'src/device')
-rw-r--r-- | src/device/device_const.c | 83 | ||||
-rw-r--r-- | src/device/device_util.c | 80 |
2 files changed, 83 insertions, 80 deletions
diff --git a/src/device/device_const.c b/src/device/device_const.c index 084d2ac385..ee64bd13e6 100644 --- a/src/device/device_const.c +++ b/src/device/device_const.c @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include <console/console.h> #include <device/device.h> #include <device/path.h> #include <device/pci.h> @@ -89,6 +90,88 @@ DEVTREE_CONST struct device *dev_find_next_pci_device( return dev_find_path(previous_dev, DEVICE_PATH_PCI); } +static int path_eq(const struct device_path *path1, + const struct device_path *path2) +{ + int equal = 0; + + if (path1->type != path2->type) + return 0; + + switch (path1->type) { + case DEVICE_PATH_NONE: + break; + case DEVICE_PATH_ROOT: + equal = 1; + break; + case DEVICE_PATH_PCI: + equal = (path1->pci.devfn == path2->pci.devfn); + break; + case DEVICE_PATH_PNP: + equal = (path1->pnp.port == path2->pnp.port) && + (path1->pnp.device == path2->pnp.device); + break; + case DEVICE_PATH_I2C: + equal = (path1->i2c.device == path2->i2c.device) && + (path1->i2c.mode_10bit == path2->i2c.mode_10bit); + break; + case DEVICE_PATH_APIC: + equal = (path1->apic.apic_id == path2->apic.apic_id); + break; + case DEVICE_PATH_DOMAIN: + equal = (path1->domain.domain == path2->domain.domain); + break; + case DEVICE_PATH_CPU_CLUSTER: + equal = (path1->cpu_cluster.cluster + == path2->cpu_cluster.cluster); + break; + case DEVICE_PATH_CPU: + equal = (path1->cpu.id == path2->cpu.id); + break; + case DEVICE_PATH_CPU_BUS: + equal = (path1->cpu_bus.id == path2->cpu_bus.id); + break; + case DEVICE_PATH_GENERIC: + equal = (path1->generic.id == path2->generic.id) && + (path1->generic.subid == path2->generic.subid); + break; + case DEVICE_PATH_SPI: + equal = (path1->spi.cs == path2->spi.cs); + break; + case DEVICE_PATH_USB: + equal = (path1->usb.port_type == path2->usb.port_type) && + (path1->usb.port_id == path2->usb.port_id); + break; + case DEVICE_PATH_MMIO: + equal = (path1->mmio.addr == path2->mmio.addr); + break; + default: + printk(BIOS_ERR, "Unknown device type: %d\n", path1->type); + break; + } + + return equal; +} + +/** + * See if a device structure exists for path. + * + * @param parent The bus to find the device on. + * @param path The relative path from the bus to the appropriate device. + * @return Pointer to a device structure for the device on bus at path + * or 0/NULL if no device is found. + */ +DEVTREE_CONST struct device *find_dev_path( + const struct bus *parent, const struct device_path *path) +{ + DEVTREE_CONST struct device *child; + for (child = parent->children; child; child = child->sibling) { + if (path_eq(path, &child->path)) + break; + } + return child; +} + /** * Given an SMBus bus and a device number, find the device structure. * diff --git a/src/device/device_util.c b/src/device/device_util.c index 4275d6e256..2a26a55bd4 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -26,24 +26,6 @@ #include <string.h> /** - * See if a device structure exists for path. - * - * @param parent The bus to find the device on. - * @param path The relative path from the bus to the appropriate device. - * @return Pointer to a device structure for the device on bus at path - * or 0/NULL if no device is found. - */ -struct device *find_dev_path(struct bus *parent, struct device_path *path) -{ - struct device *child; - for (child = parent->children; child; child = child->sibling) { - if (path_eq(path, &child->path)) - break; - } - return child; -} - -/** * Given a Local APIC ID, find the device structure. * * @param apic_id The Local APIC ID number. @@ -277,68 +259,6 @@ const char *bus_path(struct bus *bus) return buffer; } -int path_eq(struct device_path *path1, struct device_path *path2) -{ - int equal = 0; - - if (path1->type != path2->type) - return 0; - - switch (path1->type) { - case DEVICE_PATH_NONE: - break; - case DEVICE_PATH_ROOT: - equal = 1; - break; - case DEVICE_PATH_PCI: - equal = (path1->pci.devfn == path2->pci.devfn); - break; - case DEVICE_PATH_PNP: - equal = (path1->pnp.port == path2->pnp.port) && - (path1->pnp.device == path2->pnp.device); - break; - case DEVICE_PATH_I2C: - equal = (path1->i2c.device == path2->i2c.device) && - (path1->i2c.mode_10bit == path2->i2c.mode_10bit); - break; - case DEVICE_PATH_APIC: - equal = (path1->apic.apic_id == path2->apic.apic_id); - break; - case DEVICE_PATH_DOMAIN: - equal = (path1->domain.domain == path2->domain.domain); - break; - case DEVICE_PATH_CPU_CLUSTER: - equal = (path1->cpu_cluster.cluster - == path2->cpu_cluster.cluster); - break; - case DEVICE_PATH_CPU: - equal = (path1->cpu.id == path2->cpu.id); - break; - case DEVICE_PATH_CPU_BUS: - equal = (path1->cpu_bus.id == path2->cpu_bus.id); - break; - case DEVICE_PATH_GENERIC: - equal = (path1->generic.id == path2->generic.id) && - (path1->generic.subid == path2->generic.subid); - break; - case DEVICE_PATH_SPI: - equal = (path1->spi.cs == path2->spi.cs); - break; - case DEVICE_PATH_USB: - equal = (path1->usb.port_type == path2->usb.port_type) && - (path1->usb.port_id == path2->usb.port_id); - break; - case DEVICE_PATH_MMIO: - equal = (path1->mmio.addr == path2->mmio.addr); - break; - default: - printk(BIOS_ERR, "Unknown device type: %d\n", path1->type); - break; - } - - return equal; -} - /** * Allocate 64 more resources to the free list. * |