diff options
| -rw-r--r-- | sys/src/cmd/nusb/audio/audio.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/src/cmd/nusb/audio/audio.c b/sys/src/cmd/nusb/audio/audio.c index 08d9f9fc6..0261f3b57 100644 --- a/sys/src/cmd/nusb/audio/audio.c +++ b/sys/src/cmd/nusb/audio/audio.c @@ -193,7 +193,7 @@ main(int argc, char *argv[]) parsedescr(d->usb->ddesc[i]); for(i = 0; i < nelem(d->usb->ep); i++){ e = d->usb->ep[i]; - if(e && e->iface && e->iface->csp == CSP(Claudio, 2, 0)){ + if(e != nil && e->type == Eiso && e->iface != nil && e->iface->csp == CSP(Claudio, 2, 0)){ switch(e->dir){ case Ein: if(audioepin != nil) @@ -214,8 +214,15 @@ main(int argc, char *argv[]) audioepout = e; break; } - if((ed = setupep(audiodev, e, audiofreq)) == nil) - sysfatal("setupep: %r"); + if((ed = setupep(audiodev, e, audiofreq)) == nil){ + fprint(2, "setupep: %r\n"); + + if(e == audioepin) + audioepin = nil; + if(e == audioepout) + audioepout = nil; + continue; + } closedev(ed); } } |
