Type definitions to support the RC1000-PP

 

Types usable by host programs

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