Rev 4348 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4348 | Rev 4691 | ||
---|---|---|---|
Line 148... | Line 148... | ||
148 | byte *p; |
148 | byte *p; |
149 | int id1 = 0, id2 = 0, id3 = 0, id4 = 0; |
149 | int id1 = 0, id2 = 0, id3 = 0, id4 = 0; |
150 | int cat = -1; |
150 | int cat = -1; |
151 | int nest; |
151 | int nest; |
152 | static const char parse_error[] = "Parse error"; |
152 | static const char parse_error[] = "Parse error"; |
153 | int i; |
153 | size_t i; |
154 | 154 | ||
155 | *lino = 0; |
155 | *lino = 0; |
156 | for (i = 0; i < sizeof(pci_ids) / sizeof(char *); i++) { |
156 | for (i = 0; i < sizeof(pci_ids) / sizeof(char *); i++) { |
157 | line = (byte *) pci_ids[i]; |
157 | line = (byte *) pci_ids[i]; |
158 | (*lino)++; |
158 | (*lino)++; |
Line 328... | Line 328... | ||
328 | switch (flags) { |
328 | switch (flags) { |
329 | case PCI_LOOKUP_VENDOR: |
329 | case PCI_LOOKUP_VENDOR: |
330 | iv = va_arg(args, int); |
330 | iv = va_arg(args, int); |
331 | if (num) |
331 | if (num) |
332 | res = snprintf(buf, size, "%04x", iv); |
332 | res = snprintf(buf, size, "%04x", iv); |
333 | else if (v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0)) |
333 | else if ((v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0)) != 0) |
334 | return (char *) v->name; |
334 | return (char *) v->name; |
335 | else |
335 | else |
336 | res = snprintf(buf, size, "Unknown vendor %04x", iv); |
336 | res = snprintf(buf, size, "Unknown vendor %04x", iv); |
337 | break; |
337 | break; |
338 | case PCI_LOOKUP_DEVICE: |
338 | case PCI_LOOKUP_DEVICE: |
339 | iv = va_arg(args, int); |
339 | iv = va_arg(args, int); |
340 | id = va_arg(args, int); |
340 | id = va_arg(args, int); |
341 | if (num) |
341 | if (num) |
342 | res = snprintf(buf, size, "%04x", id); |
342 | res = snprintf(buf, size, "%04x", id); |
343 | else if (d = id_lookup(a, ID_DEVICE, iv, id, 0, 0)) |
343 | else if ((d = id_lookup(a, ID_DEVICE, iv, id, 0, 0)) != 0) |
344 | return (char *) d->name; |
344 | return (char *) d->name; |
345 | else if (synth) |
345 | else if (synth) |
346 | res = snprintf(buf, size, "Unknown device %04x", id); |
346 | res = snprintf(buf, size, "Unknown device %04x", id); |
347 | else |
347 | else |
348 | return NULL; |
348 | return NULL; |
Line 368... | Line 368... | ||
368 | break; |
368 | break; |
369 | case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR: |
369 | case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR: |
370 | isv = va_arg(args, int); |
370 | isv = va_arg(args, int); |
371 | if (num) |
371 | if (num) |
372 | res = snprintf(buf, size, "%04x", isv); |
372 | res = snprintf(buf, size, "%04x", isv); |
373 | else if (v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0)) |
373 | else if ((v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0)) != 0) |
374 | return (char *) v->name; |
374 | return (char *) v->name; |
375 | else if (synth) |
375 | else if (synth) |
376 | res = snprintf(buf, size, "Unknown vendor %04x", isv); |
376 | res = snprintf(buf, size, "Unknown vendor %04x", isv); |
377 | else |
377 | else |
378 | return NULL; |
378 | return NULL; |
Line 382... | Line 382... | ||
382 | id = va_arg(args, int); |
382 | id = va_arg(args, int); |
383 | isv = va_arg(args, int); |
383 | isv = va_arg(args, int); |
384 | isd = va_arg(args, int); |
384 | isd = va_arg(args, int); |
385 | if (num) |
385 | if (num) |
386 | res = snprintf(buf, size, "%04x", isd); |
386 | res = snprintf(buf, size, "%04x", isd); |
387 | else if (d = id_lookup_subsys(a, iv, id, isv, isd)) |
387 | else if ((d = id_lookup_subsys(a, iv, id, isv, isd)) != 0) |
388 | return (char *) d->name; |
388 | return (char *) d->name; |
389 | else if (synth) |
389 | else if (synth) |
390 | res = snprintf(buf, size, "Unknown device %04x", isd); |
390 | res = snprintf(buf, size, "Unknown device %04x", isd); |
391 | else |
391 | else |
392 | return NULL; |
392 | return NULL; |
Line 413... | Line 413... | ||
413 | break; |
413 | break; |
414 | case PCI_LOOKUP_CLASS: |
414 | case PCI_LOOKUP_CLASS: |
415 | icls = va_arg(args, int); |
415 | icls = va_arg(args, int); |
416 | if (num) |
416 | if (num) |
417 | res = snprintf(buf, size, "%04x", icls); |
417 | res = snprintf(buf, size, "%04x", icls); |
418 | else if (cls = id_lookup(a, ID_SUBCLASS, icls >> 8, icls & 0xff, 0, 0)) |
418 | else if ((cls = id_lookup(a, ID_SUBCLASS, icls >> 8, icls & 0xff, 0, 0)) != 0) |
419 | return (char *) cls->name; |
419 | return (char *) cls->name; |
420 | else if (cls = id_lookup(a, ID_CLASS, icls, 0, 0, 0)) |
420 | else if ((cls = id_lookup(a, ID_CLASS, icls, 0, 0, 0)) != 0) |
421 | res = snprintf(buf, size, "%s [%04x]", cls->name, icls); |
421 | res = snprintf(buf, size, "%s [%04x]", cls->name, icls); |
422 | else if (synth) |
422 | else if (synth) |
423 | res = snprintf(buf, size, "Class %04x", icls); |
423 | res = snprintf(buf, size, "Class %04x", icls); |
424 | else |
424 | else |
425 | return NULL; |
425 | return NULL; |
Line 427... | Line 427... | ||
427 | case PCI_LOOKUP_PROGIF: |
427 | case PCI_LOOKUP_PROGIF: |
428 | icls = va_arg(args, int); |
428 | icls = va_arg(args, int); |
429 | ipif = va_arg(args, int); |
429 | ipif = va_arg(args, int); |
430 | if (num) |
430 | if (num) |
431 | res = snprintf(buf, size, "%02x", ipif); |
431 | res = snprintf(buf, size, "%02x", ipif); |
432 | else if (pif = id_lookup(a, ID_PROGIF, icls >> 8, icls & 0xff, ipif, 0)) |
432 | else if ((pif = id_lookup(a, ID_PROGIF, icls >> 8, icls & 0xff, ipif, 0)) != 0) |
433 | return (char *) pif->name; |
433 | return (char *) pif->name; |
434 | else if (icls == 0x0101 && !(ipif & 0x70)) { |
434 | else if (icls == 0x0101 && !(ipif & 0x70)) { |
435 | /* IDE controllers have complex prog-if semantics */ |
435 | /* IDE controllers have complex prog-if semantics */ |
436 | res = snprintf(buf, size, "%s%s%s%s%s", |
436 | res = snprintf(buf, size, "%s%s%s%s%s", |
437 | (ipif & 0x80) ? "Master " : "", |
437 | (ipif & 0x80) ? "Master " : "", |