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;
--