Floppy controller not found

Sean Holdsworth (sh@elfland.demon.co.uk)
Sun, 27 Oct 1996 12:08:35 GMT

[ This is a first posting to this list; I've followed it on and off as a
lurker since 1.1 days but I'll apologise in advance for any failures to
follow accepted protocol ;-) ]

If hardware works on an earlier version of Linux but fails on a more recent
version then I assume this is a 'Bad Thing'[tm]? I have two instances, one
which relates to 2.0.0 vs 2.0.22 and one which is lost in the mists of time.

I have a motherboard with an onboard floppy controller which is reported as
a post-1991 92077 (an 82077AA). In version 2.0.0 things work as advertised
but on 2.0.22 the controller isn't seen. In this case, I get the following

Oct 26 00:04:15 elfland kernel: Floppy drive(s): fd0 is 1.44M
Oct 26 00:04:15 elfland kernel: Started kswapd v
Oct 26 00:04:15 elfland kernel: floppy0: no floppy controllers found

If, however, I use .../drivers/block/floppy.c from the 2.0.0 kernel as a
plug in replacement for the version in 2.0.22, things work and I get

Oct 26 11:57:21 elfland kernel: Floppy drive(s): fd0 is 1.44M
Oct 26 11:57:21 elfland kernel: Started kswapd v
Oct 26 11:57:21 elfland kernel: FDC 0 is a post-1991 82077

(Yes, I have checked if this has been fixed in 2.0.23 to the extent of
examining the patches file to see if any changes to floppy.c have been made
but it doesn't look like it.)

I've managed to trace the problem to the call to user_reset_fdc from
floppy_init failing and suspect the problem is in what is happening in
wait_til_done (called via the WAIT macro in user_reset_fdc). I'm afraid
I don't understand the details of bottom half handlers well enough yet
to get much further than this.

Anyway, I thought I'd better mention this or I can see me having to add
another patch to standard kernels to get Linux running on my hardware.
Which brings me to my second point. I'm running on something called an
SA486P AIO-U motherboard which has an onboard NCR53C810 SCSI controller
which works fine except that I suspect it can only deal with edge triggered
interrupts as opposed to level sensitive ones. Well back in the days of
1.1.59 the standard 53c7,8xx driver worked fine on this board, but by
the time of 1.2.13 it no longer worked. I tracked this problem and *KLUDGE*
things with the following patch to 53c7,8xx.c.

< /* Commented out by SH to make my broken on board NCR 53c810 work... */
< #if 0
< #else
< hostdata->saved_dcntl |= DCNTL_800_IRQM;
< #endif

(The BSD derived driver also fails in the same way on my hardware but I've
not needed to do anything about it so far.)

Regards, Sean

*           Home: sh@elfland.demon.co.uk    Play: sh@aii.co.uk
* "We are trying to bring up an Air Traffic Control display on an X window
*  terminal and there seems to be some problems." -- from comp.windows.x