summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tvignaud@mandriva.org>2002-08-15 21:23:41 +0000
committerThierry Vignaud <tvignaud@mandriva.org>2002-08-15 21:23:41 +0000
commit1398804b467ce1057db65d1628b1b9e79e099c4b (patch)
treed794c9d25c0ee162ab6965bc32b067e7afbfd43d
parent59f18f9a4b3bce15226c2270f27b357e386da992 (diff)
downloadldetect-1398804b467ce1057db65d1628b1b9e79e099c4b.tar
ldetect-1398804b467ce1057db65d1628b1b9e79e099c4b.tar.gz
ldetect-1398804b467ce1057db65d1628b1b9e79e099c4b.tar.bz2
ldetect-1398804b467ce1057db65d1628b1b9e79e099c4b.tar.xz
ldetect-1398804b467ce1057db65d1628b1b9e79e099c4b.zip
usb audio devices can use new alsa modules snd-usb-audio
-rw-r--r--pciusb.c4
-rw-r--r--usb.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/pciusb.c b/pciusb.c
index 010da59..31953b8 100644
--- a/pciusb.c
+++ b/pciusb.c
@@ -122,7 +122,9 @@ extern int pciusb_find_modules(struct pciusb_entries *entries, const char *fpciu
p = buf + offset + 1;
q = strchr(p, '\t');
}
- e->module = strcmp(p, "unknown") ? strndup(p,q-p-1) : NULL;
+ if (!e->module || (e->module && strcmp(e->module, "snd-usb-audio")))
+ e->module = strcmp(p, "unknown") ? strndup(p,q-p-1) : NULL;
+
ifree(e->text); /* usb.c set it so that we display something when usbtable doesn't refer that hw*/
e->text = strndup(q+2, strlen(q)-4);
if (e->subvendor != 0xffff && e->subdevice != 0xffff &&
diff --git a/usb.c b/usb.c
index 73c5a8a..75712b4 100644
--- a/usb.c
+++ b/usb.c
@@ -67,6 +67,9 @@ extern struct pciusb_entries usb_probe(void) {
int class_, sub, prot = 0;
if (sscanf(buf, "I: If#=%*2d Alt=%*2d #EPs=%*2d Cls=%02x(%*5c) Sub=%02x Prot=%02x", &class_, &sub, &prot) == 3) {
e->class_ = (class_ * 0x100 + sub) * 0x100 + prot;
+ if (e->class_ == (0x1*0x100+ 0x01)) /* USB_AUDIO_CLASS*0x100 + USB_SUBCLASS_AUDIO_CONTROL*/
+ e->module = "snd-usb-audio";
+
} else {
fprintf(stderr, "%s %d: unknown ``I'' line\n", proc_usb_path, line);
}