Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!comp.vuw.ac.nz!usenet From: milton@Comp.VUW.AC.NZ (milton) Newsgroups: comp.unix.bsd.freebsd.misc Subject: Re: CDROM won't play audio CD & Silent SoundBlaster16 Date: 28 Jul 1996 12:06:15 +1200 Organization: Dept. of Computer Science, Victoria Uni. of Wellington, NZ. Lines: 63 Sender: milton@bats.comp.vuw.ac.nz Message-ID: <ch4n30l6y2w.fsf@bats.comp.vuw.ac.nz> References: <31F9716E.ABD322C@grolier.Fr> NNTP-Posting-Host: bats.comp.vuw.ac.nz In-reply-to: Un L'Unique's message of Fri, 26 Jul 1996 18:31:26 -0700 X-Face: 1z?<f6:W_X?x4,("n&O@BTQZcRfJ;|'YmfV`a<zZqH/?y<o<uQNn:A\5*DH|"FAkV9]\z"1 '2%*6{0b$JO'+GRo**}!f=85':yX7,s8s@o}A(]C2+}[4g$`&K1WUcU^F2nX~UMl?1S7A@u=To/5 X-uri: http://www.comp.vuw.ac.nz/~milton/ X-Newsreader: Gnus v5.1 Un L'Unique <Un@grolier.Fr> writes: > atapi1.0: unknown phase > [...] This problem is fixed with this patch that I made. I haven't got in touch with the person who maintains the code, and I haven't really tested it out on any other CD-ROM except mine (Pioneer DR-UA-124x) and another person (Benjamin Lewis) with an ACER (CD-767E). This patch enables the device to be properly detected and configured to audio. It is having troubles retrieving the capabilities information from the CD-ROM. After you patch the sources, you may still come across a message like this: wcd0: medium type unknown I haven't worked out exactly why this happens. But basically the capabilities page returns with some bogus capability information. Anyone else out there experienced this problem? I have seen this behaviour on my Pioneer, but under the NetBSD driver. M. The patch follows: *** atapi.c.ctm Tue Jul 23 23:28:07 1996 --- atapi.c Thu Jul 25 21:59:28 1996 *************** *** 651,656 **** --- 651,657 ---- { u_char ireason; u_short len, i; + int retries=0; if (atapi_wait (ata->port, 0) < 0) { ac->result.status = inb (ata->port + AR_STATUS); *************** *** 662,667 **** --- 663,669 ---- return (0); } + again: ac->result.status = inb (ata->port + AR_STATUS); ac->result.error = inb (ata->port + AR_ERROR); len = inb (ata->port + AR_CNTLO); *************** *** 676,681 **** --- 678,687 ---- } switch ((ireason & (ARI_CMD | ARI_IN)) | (ac->result.status & ARS_DRQ)) { default: + if (++retries < 100) { + DELAY(100); + goto again; + } printf ("atapi%d.%d: unknown phase\n", ata->ctrlr, ac->unit); ac->result.code = RES_ERR; break; --