README.seagate revision 1.1
11.1SmycroftThe hardware:
21.1Smycroft
31.1SmycroftThe ST01/02, and Future Domain 950 are very simple SCSI controllers. They are
41.1Smycroftnot busmastering, so the processor must do all transfers a la IDE. They support
51.1Smycroftblind transfer by adding wait states (up to a certain limit). Interrupt is
61.1Smycroftgenerated for reconnect and parity errors (maybe also for some other events).
71.1Smycroft
81.1SmycroftThe card consists of one command port that writes to scsi control lines, reads
91.1Smycroftstatus lines, and a data port that read/writes to the 8 data lines. The address
101.1Smycroftdecoding gives both data and control ports large memory areas to a single
111.1Smycroftport. This is used by the code.
121.1Smycroft
131.1SmycroftThe ST01/02 differs from the FD950 in memory address location and SCSI id.
141.1Smycroft
151.1SmycroftProbing for the card:
161.1Smycroft
171.1SmycroftA card is recognized by comparing the BIOS signature with known signatures. A
181.1Smycroftnew card may not be recognized if the BIOS signature has changed. Please send
191.1Smycroftnew signatures to me.
201.1Smycroft
211.1SmycroftDriver function:
221.1Smycroft
231.1SmycroftA scsi command is sent to scsi_cmd function. The command is either placed in
241.1Smycroftthe queue or an retryable message is returned. The routine may wait for
251.1Smycroftcompletion of the command depending on the supplied flags. A timer is started
261.1Smycroftfor every command placed in the queue. The commands are added in the order they
271.1Smycroftare received. There is a possiblity to make all REQUEST SENSE commands be
281.1Smycroftqueued before all other commands, but I dont think it is a good thing (Linux
291.1Smycroftdo however use this). 
301.1Smycroft
311.1SmycroftThe card is mostly controlled by the sea_main function. It is called by
321.1Smycroftscsi_cmd, the interrupt routine, and the timeout routine. The sea_main routine
331.1Smycroftruns as long there are something to do (transfer data, issue queued commands,
341.1Smycroftand handle reconnected commands).
351.1Smycroft
361.1SmycroftThe data transfers may be done in two different ways: Blind and polled
371.1Smycrofttransfers. They differ in the way the driver does it handshaking with the
381.1Smycrofttarget. During a blind transfer, the driver code blindly transfers a block
391.1Smycroftof data without checking for changed phase. During polled transfers, the
401.1Smycroftphase is checked between every character transfered. The polled transfers
411.1Smycroftare always used for status information and command transfers.
421.1Smycroft
431.1SmycroftBecause the card does not use dma in any way, there is no need to handle
441.1Smycroftphysical addresses. There is no problem with the isa-bus address limit of
451.1Smycroft16MB, making bounce-buffers unnecessary.
461.1Smycroft
471.1SmycroftThe data structures:
481.1Smycroft
491.1SmycroftEvery card has a sea_softc structure keeping the queues of commands waiting to
501.1Smycroftbe issued, and commands currently disconnected. The type of card (Seagate or
511.1SmycroftFuture Domain), data and control port addresses, scsi id, busy flags for all
521.1Smycroftpossible targets, and interrupt vector for the card.
531.1Smycroft
541.1SmycroftEvery scsi command to be issued are stored in a sea_scb structure. It contains
551.1Smycrofta flag describing status/error of the command, current data buffer position,
561.1Smycroftand number of bytes remaining to be transfered.
571.1Smycroft
581.1Smycroft
591.1SmycroftPROBLEMS
601.1Smycroft
611.1SmycroftI have had problems getting the ST02 boot using the boot floppies. I think it
621.1Smycroftis some problem with BIOS calls not working. It is unfortunately impossible to
631.1Smycroftdisconnect the ST02 floppy controller.
641.1Smycroft
651.1SmycroftI have had problem to get the driver talk to a 40 MB Seagate disk. I dont have
661.1Smycroftaccess to it any more, so I can't do any more checks on that.
671.1Smycroft
681.1SmycroftNOTE: The ST02 creates its own description of the disk attached. This is not
691.1Smycroftthe same as the disk says. This translation problem may cause problems when
701.1Smycroftsharing a disk between both DOS and BSD. It is however not impossible.
71