⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p9080_lib.h

📁 Jungo公司确实为VxWorks开发了类似于WinDriver的驱动开发辅助套件DriverBuilder (for VxWorks)!
💻 H
字号:
#ifndef _P9080_LIB_H_
#define _P9080_LIB_H_

#ifdef __KERNEL__
    #include "../../../include/kdstdlib.h"
#endif //__KERNEL__
#include "../../../include/windrvr.h"
#include "../../../samples/shared/pci_regs.h"
#include "../../../samples/shared/bits.h"

#ifdef __cplusplus
extern "C" {
#endif

// PLX register definitions 
enum {
    P9080_LAS0RR     = 0x00,
    P9080_LAS0BA     = 0x04,
    P9080_EROMRR     = 0x10,
    P9080_EROMBA     = 0x14,
    P9080_LBRD0      = 0x18,
    P9080_MBOX0      = 0x40,
    P9080_MBOX1      = 0x44,
    P9080_MBOX2      = 0x48,
    P9080_MBOX3      = 0x4c,
    P9080_MBOX4      = 0x50,
    P9080_MBOX5      = 0x54,
    P9080_MBOX6      = 0x58,
    P9080_MBOX7      = 0x5c,
    P9080_P2LDBELL   = 0x60,
    P9080_L2PDBELL   = 0x64,
    P9080_INTCSR     = 0x68,
    P9080_CNTRL      = 0x6c
};

// P9080 local registers
enum {
    P9080_DMAMODE    = 0x80,
    P9080_DMAPADR    = 0x84,
    P9080_DMALADR    = 0x88,
    P9080_DMASIZ     = 0x8c,
    P9080_DMADPR     = 0x90,
    P9080_DMACSR     = 0xA8
};

typedef enum
{
    P9080_DMA_CHANNEL_0 = 0,
    P9080_DMA_CHANNEL_1 = 1
} P9080_DMA_CHANNEL;

typedef enum
{
    P9080_MODE_BYTE   = 0,
    P9080_MODE_WORD   = 1,
    P9080_MODE_DWORD  = 2
} P9080_MODE;

typedef enum
{
    P9080_ADDR_REG     = AD_PCI_BAR0,
    P9080_ADDR_REG_IO  = AD_PCI_BAR1,
    P9080_ADDR_SPACE0  = AD_PCI_BAR2,
    P9080_ADDR_SPACE1  = AD_PCI_BAR3,
    P9080_ADDR_SPACE2  = AD_PCI_BAR4,
    P9080_ADDR_SPACE3  = AD_PCI_BAR5,
    P9080_ADDR_EPROM   = AD_PCI_BAR_EPROM
} P9080_ADDR;

enum { P9080_RANGE_REG = 0x00000080 };

typedef struct P9080_DMA_STRUCT *P9080_DMA_HANDLE;

typedef struct P9080_STRUCT *P9080_HANDLE;

typedef struct
{
    DWORD dwCounter;   // number of interrupts received
    DWORD dwLost;      // number of interrupts not yet dealt with
    BOOL fStopped;     // was interrupt disabled during wait
    DWORD dwStatusReg; // value of status register when interrupt occurred
} P9080_INT_RESULT;
typedef void (WINAPI *P9080_INT_HANDLER)( P9080_HANDLE hPlx, P9080_INT_RESULT *intResult);

// options for PLX_Open
enum { P9080_CS46_EEPROM  =   0x1 };

DWORD P9080_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
BOOL P9080_Open (P9080_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD dwOptions);
void P9080_Close (P9080_HANDLE hPlx);
BOOL P9080_IsAddrSpaceActive(P9080_HANDLE hPlx, P9080_ADDR addrSpace);
void P9080_GetPciSlot(P9080_HANDLE hPlx, WD_PCI_SLOT *pPciSlot);

void P9080_ReadWriteBlockLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
                    DWORD dwBytes, BOOL fIsRead, P9080_MODE mode);
void P9080_ReadBlockLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, DWORD dwBytes, P9080_MODE mode);
void P9080_WriteBlockLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, DWORD dwBytes, P9080_MODE mode);
BYTE P9080_ReadByteLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr);
void P9080_WriteByteLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, BYTE data);
WORD P9080_ReadWordLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr);
void P9080_WriteWordLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, WORD data);
DWORD P9080_ReadDWordLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr);
void P9080_WriteDWordLocal (P9080_HANDLE hPlx, DWORD dwLocalAddr, DWORD data);

void P9080_ReadWriteBlock (P9080_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                    DWORD dwBytes, BOOL fIsRead, P9080_ADDR addrSpace, P9080_MODE mode);
BYTE P9080_ReadByte (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset);
void P9080_WriteByte (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset, BYTE data);
WORD P9080_ReadWord (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset);
void P9080_WriteWord (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset, WORD data);
DWORD P9080_ReadDWord (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset);
void P9080_WriteDWord (P9080_HANDLE hPlx, P9080_ADDR addrSpace, DWORD dwOffset, DWORD data);
void P9080_ReadBlock (P9080_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                    DWORD dwBytes, P9080_ADDR addrSpace, P9080_MODE mode);
void P9080_WriteBlock (P9080_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                     DWORD dwBytes, P9080_ADDR addrSpace, P9080_MODE mode);

// interrupt functions
BOOL P9080_IntIsEnabled (P9080_HANDLE hPlx);
BOOL P9080_IntEnable (P9080_HANDLE hPlx, P9080_INT_HANDLER funcIntHandler);
void P9080_IntDisable (P9080_HANDLE hPlx);

// access registers
DWORD P9080_ReadReg (P9080_HANDLE hPlx, DWORD dwReg);
void P9080_WriteReg (P9080_HANDLE hPlx, DWORD dwReg, DWORD dwData);

// access PCI configuration registers
DWORD P9080_ReadPCIReg(P9080_HANDLE hPlx, DWORD dwReg);
void P9080_WritePCIReg(P9080_HANDLE hPlx, DWORD dwReg, DWORD dwData);

// Start DMA to/from card.
// fIsRead - TRUE: read from card to buffer.  FALSE: write from buffer to card
// dwBytes - number of bytes to transfer (must be a multiple of 4)
// mode - local bus width.
// dwLocalAddr - local address on card to write to / read from
// channel - uses channel 0 or 1 of the 9080
// buf - the buffer to transfer
P9080_DMA_HANDLE P9080_DMAOpen (P9080_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
    DWORD dwBytes, BOOL fIsRead, P9080_MODE mode, P9080_DMA_CHANNEL dmaChannel);
void P9080_DMAClose (P9080_HANDLE hPlx, P9080_DMA_HANDLE hDma);
void P9080_DMAStart (P9080_HANDLE hPlx, P9080_DMA_HANDLE hDma, BOOL fBlocking);
BOOL P9080_DMAIsDone (P9080_HANDLE hPlx, P9080_DMA_HANDLE hDma);
BOOL P9080_DMAReadWriteBlock (P9080_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
    DWORD dwBytes, BOOL fIsRead, P9080_MODE mode, P9080_DMA_CHANNEL dmaChannel);

BOOL P9080_EEPROMReadWord(P9080_HANDLE hPlx, DWORD dwOffset, PWORD pwData);
BOOL P9080_EEPROMWriteWord(P9080_HANDLE hPlx, DWORD dwOffset, WORD wData);
BOOL P9080_EEPROMReadDWord(P9080_HANDLE hPlx, DWORD dwOffset, PDWORD pdwData);
BOOL P9080_EEPROMWriteDWord(P9080_HANDLE hPlx, DWORD dwOffset, DWORD dwData);
BOOL P9080_EEPROMValid(P9080_HANDLE hPlx);


// this string is set to an error message, if one occurs
extern CHAR P9080_ErrorString[];

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -