- res = compound_name(a, num, buf, size, NL_VENDOR, arg1, arg2);
- break;
- case PCI_LOOKUP_VENDOR | PCI_LOOKUP_SUBSYSTEM:
- if (n = nl_lookup(a, num, NL_SUBSYSTEM_VENDOR, arg1, 0))
- return n->name;
- else
- res = snprintf(buf, size, "%04x", arg1);
- break;
- case PCI_LOOKUP_DEVICE | PCI_LOOKUP_SUBSYSTEM:
- if (n = nl_lookup(a, num, NL_SUBSYSTEM_DEVICE, arg1, arg2))
- return n->name;
- else
- res = snprintf(buf, size, "%04x", arg2);
- break;
+ iv = va_arg(args, int);
+ id = va_arg(args, int);
+ sprintf(numbuf, "%04x:%04x", iv, id);
+ v = id_lookup(a, flags, ID_VENDOR, iv, 0, 0, 0);
+ d = id_lookup(a, flags, ID_DEVICE, iv, id, 0, 0);
+ va_end(args);
+ return format_name_pair(buf, size, flags, v, d, numbuf);
+ case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR:
+ isv = va_arg(args, int);
+ sprintf(numbuf, "%04x", isv);
+ v = id_lookup(a, flags, ID_VENDOR, isv, 0, 0, 0);
+ va_end(args);
+ return format_name(buf, size, flags, v, numbuf, "Unknown vendor");
+ case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE:
+ iv = va_arg(args, int);
+ id = va_arg(args, int);
+ isv = va_arg(args, int);
+ isd = va_arg(args, int);
+ sprintf(numbuf, "%04x", isd);
+ va_end(args);
+ return format_name(buf, size, flags, id_lookup_subsys(a, flags, iv, id, isv, isd), numbuf, "Device");