All the types included below are defined in the header file, pp1000.h, supplied by Embedded Solutions Ltd.
Masks for memory bank request and grant lines
#define PP1000_RAM_REQ0 (1<<0)
#define PP1000_RAM_REQ1 (1<<1)
#define PP1000_RAM_REQ2 (1<<2)
#define PP1000_RAM_REQ3 (1<<3)
#define PP1000_RAM_GNT0 (1<<4)
#define PP1000_RAM_GNT1 (1<<5)
#define PP1000_RAM_GNT2 (1<<6)
#define PP1000_RAM_GNT3 (1<<7)
PP1000_CARD_INFO
/*
* Card information structure
*/
typedef struct
{
PP1000_DEVICE_NUM CardID;
unsigned long PMC1Fitted;
unsigned long PMC2Fitted;
unsigned long RAMBankFitted[4];
unsigned long RAMBankSpace[4];
PP1000_FPGA_TYPE FPGAType;
unsigned long PhysicalMemoryBase;
unsigned long *MemoryBase;
unsigned long BoardRevision;
unsigned long LogicRevision;
unsigned long SerialNum;
unsigned long Timeout;
} PP1000_CARD_INFO;
PP1000_CHANNEL
/*
* DMA channel handle
*/
typedef void *PP1000_CHANNEL;
PP1000_CLOCK
/*
* Clock selections
*/
typedef enum
{
PP1000_MCLK,
PP1000_VCLK
} PP1000_CLOCK;
PP1000_DEVICE_COUNT
/*
* Structure for counting number of cards
*/
typedef struct
{
PP1000_DEVICE_NUM CardID;
unsigned long Count;
} PP1000_DEVICE_COUNT;
PP1000_DEVICE_NUM
/*
* A value to indicate which card
*/
typedef unsigned long PP1000_DEVICE_NUM;
PP1000_DMA_DIRECTION
/*
* DMA direction options
*/
typedef enum
{
PP1000_PCI2LOCAL,
PP1000_LOCAL2PCI
} PP1000_DMA_DIRECTION;
PP1000_FPGA_TYPE
/*
* FPGA Type
*/
typedef enum
{
PP1000_FPGA_4085XL,
PP1000_FPGA_40150XV,
PP1000_FPGA_40200XV,
PP1000_FPGA_40250XV,
PP1000_FPGA_V1000,
PP1000_FPGA_UNKNOWN
} PP1000_FPGA_TYPE;
PP1000_HANDLE
/*
* Handle of a card
*/
typedef void *PP1000_HANDLE;
PP1000_HANDLER_FUNCTION
/*
* Error handler function type
*/
typedef void (*PP1000_HANDLER_FUNCTION)(char *FnName, PP1000_STATUS Status);
PP1000_IS_ERROR
#define PP1000_IS_ERROR(Status) ((Status) >= PP1000_STATUS_ERROR_CODE)
PP1000_MEMORY_SPACE
/*
* DMA memory space options
*/
typedef enum
{
PP1000_VIRTUAL,
PP1000_PHYSICAL
} PP1000_MEMORY_SPACE;
PP1000_STATUS
/*
*Status and error codes
*/
typedef enum {
PP1000_SUCCESS = 0,
PP1000_NO_DRIVER = PP1000_STATUS_ERROR_CODE,
PP1000_INTERNAL_ERROR,
PP1000_NO_MEMORY,
PP1000_NULL_POINTER,
PP1000_INVALID_CARDID,
PP1000_NO_FREE_CARDS,
PP1000_INVALID_HANDLE,
PP1000_FILE_NOT_FOUND,
PP1000_FILE_ACCESS_ERROR,
PP1000_INVALID_FILE,
PP1000_INVALID_PART_TYPE,
PP1000_INVALID_CLOCK_RATE,
PP1000_FPGA_MISMATCH,
PP1000_INVALID_IMAGE,
PP1000_TIMEOUT,
PP1000_INVALID_CLOCK,
PP1000_CARD_BUSY,
PP1000_INVALID_ALIGNMENT,
PP1000_INVALID_ADDRESS_SPACE,
PP1000_INVALID_DIRECTION,
PP1000_INVALID_CHANNEL,
PP1000_LOCK_FAILED,
PP1000_INVALID_ARGUMENT,
PP1000_CANCELLED
} PP1000_STATUS;
PP1000_IMAGE
/*
* FPGA Image file
*/
typedef void * PP1000_IMAGE;
PP1000_TIMEOUT_INFINITE
/*
* Infinite timeout length
*/
#define PP1000_TIMEOUT_INFINITE 0xffffffff