+++ /dev/null
-The hardware:
-
-The ST01/02, and Future Domain 950 are very simple SCSI controllers. They are
-not busmastering, so the processor must do all transfers a la IDE. They support
-blind transfer by adding wait states (up to a certain limit). Interrupt is
-generated for reconnect and parity errors (maybe also for some other events).
-
-The card consists of one command port that writes to scsi control lines, reads
-status lines, and a data port that read/writes to the 8 data lines. The address
-decoding gives both data and control ports large memory areas to a single
-port. This is used by the code.
-
-The ST01/02 differs from the FD950 in memory address location and SCSI id.
-
-Probing for the card:
-
-A card is recognized by comparing the BIOS signature with known signatures. A
-new card may not be recognized if the BIOS signature has changed. Please send
-new signatures to me.
-
-Driver function:
-
-A scsi command is sent to scsi_cmd function. The command is either placed in
-the queue or an retryable message is returned. The routine may wait for
-completion of the command depending on the supplied flags. A timer is started
-for every command placed in the queue. The commands are added in the order they
-are received. There is a possiblity to make all REQUEST SENSE commands be
-queued before all other commands, but I dont think it is a good thing (Linux
-do however use this).
-
-The card is mostly controlled by the sea_main function. It is called by
-scsi_cmd, the interrupt routine, and the timeout routine. The sea_main routine
-runs as long there are something to do (transfer data, issue queued commands,
-and handle reconnected commands).
-
-The data transfers may be done in two different ways: Blind and polled
-transfers. They differ in the way the driver does it handshaking with the
-target. During a blind transfer, the driver code blindly transfers a block
-of data without checking for changed phase. During polled transfers, the
-phase is checked between every character transfered. The polled transfers
-are always used for status information and command transfers.
-
-Because the card does not use dma in any way, there is no need to handle
-physical addresses. There is no problem with the isa-bus address limit of
-16MB, making bounce-buffers unnecessary.
-
-The data structures:
-
-Every card has a sea_softc structure keeping the queues of commands waiting to
-be issued, and commands currently disconnected. The type of card (Seagate or
-Future Domain), data and control port addresses, scsi id, busy flags for all
-possible targets, and interrupt vector for the card.
-
-Every scsi command to be issued are stored in a sea_scb structure. It contains
-a flag describing status/error of the command, current data buffer position,
-and number of bytes remaining to be transfered.
-
-
-PROBLEMS
-
-I have had problems getting the ST02 boot using the boot floppies. I think it
-is some problem with BIOS calls not working. It is unfortunately impossible to
-disconnect the ST02 floppy controller.
-
-I have had problem to get the driver talk to a 40 MB Seagate disk. I dont have
-access to it any more, so I can't do any more checks on that.
-
-NOTE: The ST02 creates its own description of the disk attached. This is not
-the same as the disk says. This translation problem may cause problems when
-sharing a disk between both DOS and BSD. It is however not impossible.