summaryrefslogtreecommitdiff
path: root/sys/dev/microcode/siop/esiop.ss
AgeCommit message (Collapse)Author
2003-10-05Remove references to University of California from my copyright notices.bouyer
2003-08-06Properly handle messages that we get at reconnect time (other thanbouyer
SIMPLE_Q_TAG). Some drives start sync/wide negotiation at reconnect time. Problem reported and fix tested by Andreas Wrede.
2002-08-29Fix typo in comment.bouyer
2002-05-02Move a few things around, to save some JUMP.bouyer
2002-04-27Use a u_int32_t in script RAM instead of the SEM bit in ISTAT to pass flagsbouyer
between script and driver. This allows more than one flag, and is easier to manage (we almost can't read/write istat outside of the irq handler).
2002-04-27Implement a ring for the completed commands. This avoid a (problematic onlybouyer
if error occurs after status is collected) race condition when using the status byte to detect completed commands (a command descriptor could be recycled before the device disconnected), and make the interrupt routine handling completed commands more efficient (no need to scan target * lun * tag array any more).
2002-04-25- We can't share the per-lun DSA entry for untagged and tag table DSA;bouyer
there may be tagged commands still running when we queue a request sense command. Solve this by using 2 DSA entry per LUN - Now that we have the command DSA before select, we can load T/L/Q in SCRATCHC. This makes the selection timeout handler simpler. - Avoid a race condition when setting the free flag in the cmd ring (see comment in the script) - don't forget to update the ID in the head of LUN table after a sync/wide negotiation. This fixes the command timeout at the first data command after negotiation (the bus reset handler did update the ID properly, so subsequent commands were OK). - for DMA interrupts, clear fifo if it's not empty. Leaving the fifo dirty would prevent subsequent interrupts from coming in. - Various improvements in debug messages - misc cleanups.
2002-04-24For a new command, use the id in the command table and get rid of the ID in thebouyer
scheduler slot. This costs a few more instructions but divide the size of the scheduler ring by 2, saving 1k of onboard RAM (a bus with 15 devices would overflow the on-board RAM by 128 bytes).
2002-04-24Bump the number of slots in the command ring to 256.bouyer
2002-04-23More copyright fixes, pointed out by Thomas. Thanks !bouyer
2002-04-23Fix copyrigth.bouyer
2002-04-23Bump the space for SCSI messages from 8 to 16 octets, as 8 may not bebouyer
enouth for IDENTIFY + TAG + PPR. Get rid of constants in C code by use of a offsetof macro.
2002-04-22It seems that the script processor continue to exec a few intructionsbouyer
after the selection timeout is posted but the number executed isn't reliable. So wait for MSG_OUT rigth after the select so that the state of the script when the interruption is handled is known.
2002-04-22Add the led_on/led_off script fragments.bouyer
2002-04-22Add support for tagged queuing to esiop (256 tags per device).bouyer
For this add another indirecton: the DSA in the LUN table points to a table of DSA indexed by the tag number when tagged command is in use. For non tagged command, the LUN DSA still points to the tables describing the xfer directly.
2002-04-21First cut at a esiop driver (enhanced siop). Doesn't implement tagged queuingbouyer
yet. If is restricted to SIOP which implement the load/store instruction, and has 10 scratch registers (basically, 825 and newer, possibly 770). It implements a different interface between host and script, using a real ring for command starts, and improved support for reconnect which will allow 256 tag per device. It uses interrupt on the fly to signal complete command, which allows several commands to be serviced per interrupt and doesn't require the script to stop to signal command completion.