February 2, 1998
Overview
Version 1.6.0 of the V6M6 host software and FPGA configurations includes the following changes:
Installation instructions are available in the updated version of the V6M6 Installation manual and applications notes may be found in appendix C of the V6M6 Users manual.
The support programs ported to the VxWorks environment in version 1.6.0 of the V6M6 software are: pciinit, pciinfo and pciflashup. The diagnostics ported to the VxWorks environment are pcitest, pcipiomem, pcimemslice, pcichip, pcitdm and pciscsa.
Version 1.6.0 of the V6M6 software provides enough support to initialize the PCI interface of IMSCSI3 modules. This allows development of the IMSCSI3 device driver in the WM Kernel for MIPS modules.
Bug Fixed in the Pciflashup Program
This problem is now fixed in the version included in version 1.6.0 of the V6M6 software.
DM4C51 Problem Fixed in the TDM Configurator
The previous version of the TDM Configurator contained a bug in the code for adding TDM sources and destinations for the DM4C51 module. This problem is now fixed in the version included in version 1.6.0 of the V6M6 software.
Modifications to Diagnostic Programs
pciburn was modified to support testing IMSCSA modules with programs running on DM4C51 and DM2C31 modules.
pcipiomem was modified to use array transfers for 16-bit and 8-bit tests with a command line option to use single-value transfers if desired.
pcimemslice was modified to reset the SC4000 devices on DM4C51 modules at the end of the test.
pcipiomem, pcimemslice, pcichip and pciscsa have added command line options to specify the number of iterations to run before automatically stopping the test.
Changes to the Host-Driven DMA Transfer Functions
The DMA transfer information structure type is named pci_hostdma_info and is defined in <pciutil.h>. An application may declare one of these structures for each V6M6 board to used with host-dma transfers. Pointers to these structures are passed as the first argument to the host-dma transfer functions, described below.
int
pci_hostdma_setup (dmainfo, pci)
struct pci_hostdma_info
*dmainfo - pointer to dma info structure.
PCI_MOD *pci - pointer to open PCI module resource.
void
pci_hostdma_release(dmainfo)
struct pci_hostdma_info
*dmainfo - pointer to dma info structure.
The pci_hostdma_setup function must be called prior to calling
the host-dma transfer functions with the specific dmainfo structure.
Following a successful setup, the transfer functions may be called
any number of times using the structure.
pci_hostdma_setup opens resource 'h' of the V6M6 board referenced by pci. (For example, if pci was opened for "pci0a" then pci_hostdma_setup will open "pci0h".) Having opened the resource, information is stored in the dmainfo structure for the registers for the 'h' resource and the VME address of the DMA access range for the board. pci_hostdma_setup returns 1 when successful. It returns 0 if an error is detected. Errno is set to EBUSY if the 'h' resource was busy (in use by another program) or ENODEV if the host system or V6M6 version does not support host-driven DMA.
Note: the pointers and addresses stored in the dmainfo structure by pci_hostdma_setup are only valid for the V6M6 board referenced by the pci argument.
The pci_hostdma_release function releases the 'h' resource of the V6M6 board referenced by the dmainfo structure and invalidates the information in the structure. It is necessary to use pci_hostdma_release in order to allow other programs to access the 'h' resource to perform their own host-dma transfers.
pci_dl_hostdma and pci_up_hostdma are the functions that perform the data transfers.
int
pci_dl_hostdma (dmainfo, pciadr, nwords, buf)
int
pci_up_hostdma (dmainfo, pciadr, nwords, buf)
struct pci_hostdma_info
*dmainfo - pointer to dma info structure.
u_long pciadr - PCI memory address.
u_long nwords - number of 32-bit words to transfer
u_long *buf - pointer to data buffer on the host
(page aligned)
The pci_dl_hostdma function transfers nwords (32-bit words)
of data from the array buf on the host
to the memory starting at pciadr on the V6M6 board referenced
in the dmainfo structure.
The pci_up_hostdma function transfers nwords (32-bit words)
of data from the memory starting at pciadr on the V6M6 board
to the array, buf on the host.
To perform the transfers these functions initialize the address and pcr registers in the 'h' resource interface, complete the setup of DMA controller for the particular transfer and execute the transfer.
Both functions return 1 for a successful transfer.
If an error is detected or if pci_hostdma_setup was not
called or failed, they return 0.
New FPGA configurations for DM2C31, DM4C51, PM4700A, PM5000, IMG726 and IMHDLC modules properly sets PCI status when parity errors are detected.
The configuration for the global memory controller FPGA on Revision 3 base boards fixes a timing problem that had been causing intermittent data errors.
The new TDM controller FPGA configuration for Revision 3 base boards removes an experimental change in the PCI arbiter.