summaryrefslogtreecommitdiffstats
path: root/usb.c
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2002-07-30 19:03:35 +0000
committerPascal Rigaux <pixel@mandriva.com>2002-07-30 19:03:35 +0000
commit97fb4f576c1731a2d2e73240d77a928039451deb (patch)
tree946fdff1088c60acdaa06eb71e86907593996e2f /usb.c
parent907038ee11571fc8dda6fc0acee48d70dc0649fa (diff)
downloadldetect-97fb4f576c1731a2d2e73240d77a928039451deb.tar
ldetect-97fb4f576c1731a2d2e73240d77a928039451deb.tar.gz
ldetect-97fb4f576c1731a2d2e73240d77a928039451deb.tar.bz2
ldetect-97fb4f576c1731a2d2e73240d77a928039451deb.tar.xz
ldetect-97fb4f576c1731a2d2e73240d77a928039451deb.zip
fill in pci_bus and pci_device for USB
Diffstat (limited to 'usb.c')
-rw-r--r--usb.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/usb.c b/usb.c
index a92b871..73c5a8a 100644
--- a/usb.c
+++ b/usb.c
@@ -42,14 +42,26 @@ extern struct pciusb_entries usb_probe(void) {
return r;
}
- for(r.nb = line = 0; fgets(buf, sizeof(buf) - 1, f) && r.nb < psizeof(t); line++) {
- if (buf[0] == 'P') {
+ for(r.nb = 0, line = 1; fgets(buf, sizeof(buf) - 1, f) && r.nb < psizeof(t); line++) {
+ if (buf[0] == 'T') {
+ unsigned short pci_bus, pci_device;
e = &t[r.nb++];
pciusb_initialize(e);
- if (sscanf(buf, "P: Vendor=%hx ProdID=%hx", &e->vendor, &e->device) != 2) {
+ if (sscanf(buf, "T: Bus=%02hd Lev=%*02d Prnt=%*02d Port=%*02d Cnt=%*02d Dev#=%3hd Spd=%*3s MxCh=%*2d", &pci_bus, &pci_device) == 2) {
+ e->pci_bus = pci_bus;
+ e->pci_device = pci_device;
+ } else {
+ fprintf(stderr, "%s %d: unknown ``T'' line\n", proc_usb_path, line);
+ }
+
+ } else if (buf[0] == 'P') {
+ unsigned short vendor, device;
+ if (sscanf(buf, "P: Vendor=%hx ProdID=%hx", &vendor, &device) == 2) {
+ e->vendor = vendor;
+ e->device = device;
+ } else {
fprintf(stderr, "%s %d: unknown ``P'' line\n", proc_usb_path, line);
- pciusb_initialize(e);
}
} else if (e && buf[0] == 'I' && e->class_ == 0) {
int class_, sub, prot = 0;