summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/device/device_util.c12
-rw-r--r--src/device/root_device.c2
-rw-r--r--src/include/device/device.h1
-rw-r--r--src/include/device/path.h11
4 files changed, 24 insertions, 2 deletions
diff --git a/src/device/device_util.c b/src/device/device_util.c
index b538212a83..56afefdc87 100644
--- a/src/device/device_util.c
+++ b/src/device/device_util.c
@@ -222,6 +222,9 @@ u32 dev_path_encode(device_t dev)
case DEVICE_PATH_IOAPIC:
ret |= dev->path.ioapic.ioapic_id;
break;
+ case DEVICE_PATH_GENERIC:
+ ret |= dev->path.generic.subid << 8 | dev->path.generic.id;
+ break;
case DEVICE_PATH_NONE:
default:
break;
@@ -286,6 +289,11 @@ const char *dev_path(device_t dev)
snprintf(buffer, sizeof (buffer),
"CPU_BUS: %02x", dev->path.cpu_bus.id);
break;
+ case DEVICE_PATH_GENERIC:
+ snprintf(buffer, sizeof (buffer),
+ "GENERIC: %d.%d", dev->path.generic.id,
+ dev->path.generic.subid);
+ break;
default:
printk(BIOS_ERR, "Unknown device path type: %d\n",
dev->path.type);
@@ -353,6 +361,10 @@ int path_eq(struct device_path *path1, struct device_path *path2)
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;
default:
printk(BIOS_ERR, "Unknown device type: %d\n", path1->type);
break;
diff --git a/src/device/root_device.c b/src/device/root_device.c
index 6b961005f9..7ff10ae844 100644
--- a/src/device/root_device.c
+++ b/src/device/root_device.c
@@ -43,7 +43,7 @@ const char mainboard_name[] = CONFIG_MAINBOARD_VENDOR " " CONFIG_MAINBOARD_PART_
* @param bus Pointer to the device to which the static buses are attached to.
*/
-static void scan_static_bus(device_t bus)
+void scan_static_bus(device_t bus)
{
device_t child;
struct bus *link;
diff --git a/src/include/device/device.h b/src/include/device/device.h
index 62460aea6a..d9af64adf5 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -232,6 +232,7 @@ void fixed_mem_resource(device_t dev, unsigned long index,
unsigned long basek, unsigned long sizek, unsigned long type);
void scan_smbus(device_t bus);
+void scan_static_bus(device_t bus);
void scan_lpc_bus(device_t bus);
/* It is the caller's responsibility to adjust regions such that ram_resource()
diff --git a/src/include/device/path.h b/src/include/device/path.h
index 8421a38473..9d7fb38d42 100644
--- a/src/include/device/path.h
+++ b/src/include/device/path.h
@@ -13,6 +13,7 @@ enum device_path_type {
DEVICE_PATH_CPU,
DEVICE_PATH_CPU_BUS,
DEVICE_PATH_IOAPIC,
+ DEVICE_PATH_GENERIC,
/*
* When adding path types to this table, please also update the
@@ -31,7 +32,8 @@ enum device_path_type {
"DEVICE_PATH_CPU_CLUSTER", \
"DEVICE_PATH_CPU", \
"DEVICE_PATH_CPU_BUS", \
- "DEVICE_PATH_IOAPIC" \
+ "DEVICE_PATH_IOAPIC", \
+ "DEVICE_PATH_GENERIC" \
}
struct domain_path
@@ -85,6 +87,12 @@ struct cpu_bus_path
unsigned id;
};
+struct generic_path
+{
+ unsigned id;
+ unsigned subid;
+};
+
struct device_path {
enum device_path_type type;
@@ -98,6 +106,7 @@ struct device_path {
struct cpu_cluster_path cpu_cluster;
struct cpu_path cpu;
struct cpu_bus_path cpu_bus;
+ struct generic_path generic;
};
};