diff options
| author | ment <thement@ibawizard.net> | 2011-06-28 22:17:49 +0200 |
|---|---|---|
| committer | ment <thement@ibawizard.net> | 2011-06-28 22:17:49 +0200 |
| commit | b3ad2a853a4236cdd8f82bf5836df890a724d0f4 (patch) | |
| tree | 50a224a709735adf36bc9d843e6a4638c6201f7b | |
| parent | 2f1a0685ea31bfa8da10bb077312451042c77324 (diff) | |
| download | plan9front-b3ad2a853a4236cdd8f82bf5836df890a724d0f4.tar.xz | |
audio/hda: ignore replies with invalid codec number
| -rw-r--r-- | sys/src/9/pc/audiohda.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/9/pc/audiohda.c b/sys/src/9/pc/audiohda.c index 88d8fa3c6..a3b10ec6e 100644 --- a/sys/src/9/pc/audiohda.c +++ b/sys/src/9/pc/audiohda.c @@ -441,7 +441,7 @@ hdacmd(Ctlr *ctlr, uint request, uint reply[2]) if(csr16(ctlr, Rirbwp) != re){ re = (re + 1) % ctlr->rirbsize; memmove(reply, &ctlr->rirb[re*2], 8); - return 8; + return 1; } microdelay(1); } @@ -457,7 +457,9 @@ cmderr(Id id, uint verb, uint par, uint *ret) q |= (verb << 8) | par; else q |= (verb << 16) | par; - if(hdacmd(id.ctlr, q, w) != 8) + if(hdacmd(id.ctlr, q, w) != 1) + return -1; + if(w[1] != id.codec) return -1; *ret = w[0]; return 0; @@ -1299,7 +1301,7 @@ hdacmdwrite(Chan *, void *a, long n, vlong) lp = a; qlock(ctlr); for(i=0; i<n/4; i++){ - if(hdacmd(ctlr, lp[i], w) < 0){ + if(hdacmd(ctlr, lp[i], w) <= 0){ w[0] = 0; w[1] = ~0; } |
