Do not use "Enable Implied Seek" on enhanced floppy controllers. This

breaks the "2step" feature of the driver, e.g. in order to read 360
KiB media on a 1200 KiB drive.

As the only potential advantage of implied (vs. explicit) seeks is to
minimize the software effort, yet our driver always contained the
logic needed for explicit seeks, simply dropping implied seeks is the
best solution without introducing risks for new bugs.  There is no
performance penalty, reading a 1440 KiB medium takes exactly the same
time with both, implied or explicit seeks.

MFC after:	1 week
This commit is contained in:
Joerg Wunsch 2013-08-24 21:04:54 +00:00
parent 161330357c
commit 1f97b64cbb

View File

@ -528,7 +528,8 @@ fdc_reset(struct fdc_data *fdc)
if (fdc_cmd(fdc, 4,
I8207X_CONFIG,
0,
0x40 | /* Enable Implied Seek */
/* 0x40 | */ /* Enable Implied Seek -
* breaks 2step! */
0x10 | /* Polling disabled */
(fifo_threshold - 1), /* Fifo threshold */
0x00, /* Precomp track */
@ -922,14 +923,8 @@ fdc_worker(struct fdc_data *fdc)
/*
* SEEK to where we want to be
*
* Enhanced controllers do implied seeks for read&write as long as
* we do not need multiple steps per track.
*/
if (cylinder != fd->track && (
fdc->fdct != FDC_ENHANCED ||
descyl != cylinder ||
(bp->bio_cmd & (BIO_RDID|BIO_FMT)))) {
if (cylinder != fd->track) {
retry_line = __LINE__;
if (fdc_cmd(fdc, 3, NE7CMD_SEEK, fd->fdsu, descyl, 0))
return (1);