IDT PCI Bus Interface
PCI Master — Memory to PCI DMA (DMA Channel 9)
79RC32438 User Reference Manual
10 - 34
November 4, 2002
Notes
Memory Write
PCI memory write transactions are generated during memory to PCI DMA operations if the PCI Transac-
tion (PT) field in the DEVCMD field of the DMA descriptor is set to memory write. The PCI bus interface will
attempt to generate a burst transaction when possible.
Memory Write and Invalidate
PCI memory write and invalidate transactions are generated during memory to PCI DMA operations if
the PCI Transaction (PT) field is set to memory write and invalidate and the MWI bit is set in the COMMAND
register in PCI configuration space. If the Memory Write and Invalidate Enable (MWI) bit is not set in the
COMMAND register in PCI configuration space and the PT field indicates memory write and invalidate
transactions, the DMA will perform the operation using memory write transactions.
It is the responsibility of software to make sure that memory to PCI DMA operations that use memory
write and invalidate transactions start on a cache line boundary and transfer an integral number of cache
lines. To ensure this, the PCI bus interface will wait until the required number of words for a cache line are
present in the PCI DMA output FIFO before initiating a memory write and invalidate transaction on the PCI
bus.
If the starting address for a DMA transfer is not on a cache line boundary or does not contain the
number of words required for a complete cache line, the PCI bus interface will use memory write transac-
tions. If the MWI bit is not set in the COMMAND register in PCI configuration space, the PCI bus interface
will use memory write transactions. If a target disconnects before a complete cache line is transferred, the
PCI bus interface will complete the remainder of the transfer using memory write transaction(s).
I/O Write
PCI I/O write transactions are generated during memory to PCI DMA operations if the PCI Transaction
(PT) field in the DEVCMD field of the DMA descriptor is set to I/O write. The PCI bus interface will attempt
to generate a burst transaction when possible.
Error Handling
Memory to PCI fatal errors are:
–
PCI target terminates with a Target Abort
–
transaction could not be completed because the RETRY_LIMIT was exceeded
–
transaction could not be completed because the BM bit is not set in the COMMAND register
–
detection of a PCI parity error.
If any of the above fatal errors are detected during a DMA operation, the DMA operation is halted with a
terminated condition (i.e., the T bit is set in the descriptor) and the DMA descriptor’s DEVCS field is
updated with the approximate address of the error. The address is approximate as it may be off by several
words. The DMA descriptor’s Current Address (CA) field contains the address of the last data quantity
transferred to the PCI DMA output FIFO and not the corresponding address of where the PCI error
occurred. Similarly, the COUNT field contains the number of bytes transferred to the PCI DMA output FIFO
and not the number of bytes written to the PCI bus.
All data queued in the PCI DMA output FIFO is discarded (i.e., the FIFO is flushed) when a fatal error is
detected.