SAF-TE Module
3-41
External Interrupt 0 ISR –
If compile time options enable DMA data or
commands, this ISR clears the DMA interrupt register, otherwise null
routine.
To enable DMA data (commands), the #Define parameter
DMA_DATA_IN_ENABLED must be set to TRUE prior to compilation.
Note:
If DMA data or commands are enabled, DMA interrupts are
mapped to External Interrupt 0 and SCSI data transfers are
handled by the DMA processor instead of through direct
I/O. For more information, see the description of the
External Interrupt 1 ISR and SCSI data transfer sections.
Function Name:
ir_external0()
Return Value: None.
External Interrupt 1 ISR –
Initiation of SCSI data transfers between the
host and target result in the execution of this ISR. Depending on the
#define settings, the data transfers between the Initiator and the Target
(data memory) are performed by using DMA (see Figure 2.6 in the
LSI53C040 Enclosure Services Processor Technical Manual
) or by
software using a Programmed I/O Method (see Figure 2.7 in the
LSI53C040 Enclosure Services Processor Technical Manual
).
The ISR flow diagrams (see
Figure 3.2
and
Figure 3.3
below) validate
that the Target has been selected, the bus is not busy, and the ID bit has
been set. Failure of one or more of these conditions results in two
actions: an error message is sent to TRACER, and the ISR terminates.
Next the ISR determines the Initiator SCSI ID and checks the SCSI
control lines for a parity error. If any errors occur, the ISR sends an error
message to TRACER and terminates. The SCSI attention (ATN) control
line is then tested and these results are possible:
If high, the target switches to message phase out and checks to see
if the received byte (
rcv_byte
) is an Identify (0x80).
If
rcv_byte
is an Identify (0x80), the message is saved and the
code repeats until the ATN is low.
If
rcv_byte
is not an Identify (0x80), the received byte is checked
for the following cases: