NUBUS_SLOT_NB);
}
+static char *nubus_get_dev_path(DeviceState *dev)
+{
+ NubusDevice *nd = NUBUS_DEVICE(dev);
+ BusState *bus = qdev_get_parent_bus(dev);
+ char *p = qdev_get_dev_path(bus->parent);
+
+ if (p) {
+ char *ret = g_strdup_printf("%s/%s/%02x", p, bus->name, nd->slot);
+ g_free(p);
+ return ret;
+ } else {
+ return g_strdup_printf("%s/%02x", bus->name, nd->slot);
+ }
+}
+
static bool nubus_check_address(BusState *bus, DeviceState *dev, Error **errp)
{
NubusDevice *nd = NUBUS_DEVICE(dev);
bc->realize = nubus_realize;
bc->check_address = nubus_check_address;
+ bc->get_dev_path = nubus_get_dev_path;
}
static const TypeInfo nubus_bus_info = {