From facf6a3fbe87c0b86aea25f98c9ea9dab3b9460b Mon Sep 17 00:00:00 2001 From: Mike Smith Date: Tue, 27 Jan 1998 16:45:23 +0000 Subject: [PATCH] Check the status port after waiting for DRQ; some drives seem to be very slow coming off the bus (eg. Iomega's ATAPI Zip). Failure to do this results in a false probe of an ATAPI device with garbage data. --- sys/i386/isa/atapi.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sys/i386/isa/atapi.c b/sys/i386/isa/atapi.c index 56fbbfbaf43..09439cb5ae2 100644 --- a/sys/i386/isa/atapi.c +++ b/sys/i386/isa/atapi.c @@ -422,6 +422,15 @@ static struct atapi_params *atapi_probe (int port, int unit) return (0); } + /* check that DRQ isn't a fake */ + if (inb (port + AR_STATUS) == 0xff) { + print (("atapiX.%d at 0x%x: no device\n", unit, port)); + if (unit == 1) + /* Select unit 0. */ + outb (port + AR_DRIVE, ARD_DRIVE0); + return (0); + } + /* Obtain parameters. */ insw (port + AR_DATA, tb, sizeof(tb) / sizeof(short));