return !strcmp(object_get_typename(OBJECT(sbdev)), entry->typename);
}
-#define TYPE_BINDING(type, add_fn) {(type), NULL, (add_fn), type_match}
+#define TYPE_BINDING(type, add_fn) {(type), NULL, (add_fn), NULL}
/* list of supported dynamic sysbus bindings */
static const BindingEntry bindings[] = {
for (i = 0; i < ARRAY_SIZE(bindings); i++) {
const BindingEntry *iter = &bindings[i];
- if (iter->match_fn(sbdev, iter)) {
- ret = iter->add_fn(sbdev, opaque);
- assert(!ret);
- return;
+ if (type_match(sbdev, iter)) {
+ if (!iter->match_fn || iter->match_fn(sbdev, iter)) {
+ ret = iter->add_fn(sbdev, opaque);
+ assert(!ret);
+ return;
+ }
}
}
error_report("Device %s can not be dynamically instantiated",