*BSD News Article 77081


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!spool.mu.edu!usenet.eel.ufl.edu!news.mathworks.com!fu-berlin.de!irz401!orion.sax.de!uriah.heep!news
From: j@uriah.heep.sax.de (J Wunsch)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: "fdc0: input ready timeout" Problem
Date: 28 Aug 1996 08:27:43 GMT
Organization: Private BSD site, Dresden
Lines: 58
Message-ID: <500vtv$khm@uriah.heep.sax.de>
References: <3222B322.167EB0E7@cs.uni-sb.de>
Reply-To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
NNTP-Posting-Host: localhost.heep.sax.de
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Newsreader: knews 0.9.6
X-Phone: +49-351-2012 669
X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F  93 21 E0 7D F9 12 D6 4E

"J.W." <jw@cs.uni-sb.de> wrote:
 ^^^
Hey!  J.W., that's me, not you! :-))

> I recently upgraded my machine to a pentium-system
> (gigabyte ats-board, triton fx430 , AHA2940)
> and since I'm using the onboard floppy controller
> I'm getting kernel messages like "fdc0: input ready
> timeout" from my 2.1.0-RELEASE.

Does it come with the UMC 8669F IO controller?  (You gotta look at the
board to know this, this can't be probed by software, unless you
consider the above error message ``software probing''. :)

This part is royally broken.  Disable it.  You can't use the UARTs
for UUCP either, and there's no fix for the UART brokeness.

Here's a workaround for the most annoying floppy controller
idiosyncrasy of this chip.

Index: /sys/i386/isa/fd.c
===================================================================
RCS file: /home/cvs/src/sys/i386/isa/fd.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -u -r1.82 -r1.83
--- fd.c	1996/03/29 11:45:12	1.82
+++ fd.c	1996/03/31 18:04:51	1.83
@@ -43,7 +43,7 @@
  * SUCH DAMAGE.
  *
  *	from:	@(#)fd.c	7.4 (Berkeley) 5/25/91
- *	$Id: fd.c,v 1.82 1996/03/29 11:45:12 bde Exp $
+ *	$Id: fd.c,v 1.83 1996/03/31 18:04:51 joerg Exp $
  *
  */
 
@@ -1595,6 +1595,13 @@
 		fdc->state = STARTRECAL;
 		break;
 	case STARTRECAL:
+		/* XXX clear the fdc results from the last reset, if any. */
+		{
+			int i;
+			for (i = 0; i < 4; i++)
+				(void)fd_sense_int(fdc, &st0, &cyl);
+		}
+
 		if(fd_cmd(fdcu,
 			  2, NE7CMD_RECAL, fdu,
 			  0)) /* Recalibrate Function */

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)