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

📄 p9030_lib.h

📁 Jungo公司确实为VxWorks开发了类似于WinDriver的驱动开发辅助套件DriverBuilder (for VxWorks)!
💻 H
字号:
#ifndef _P9030_LIB_H_
#define _P9030_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 {
    P9030_LAS0RR      = 0x00,
    P9030_LAS1RR      = 0x04,
    P9030_LAS2RR      = 0x08,
    P9030_LAS3RR      = 0x0c,
    P9030_EROMRR      = 0x10,
    P9030_LAS0BA      = 0x14,
    P9030_LAS1BA      = 0x18,
    P9030_LAS2BA      = 0x1c,
    P9030_LAS3BA      = 0x20,
    P9030_EROMBA      = 0x24,
    P9030_LAS0BRD     = 0x28,
    P9030_LAS1BRD     = 0x2c,
    P9030_LAS2BRD     = 0x30,
    P9030_LAS3BRD     = 0x34,
    P9030_EROMBRD     = 0x38,
    P9030_CS0BASE     = 0x3c,
    P9030_CS1BASE     = 0x40,
    P9030_CS2BASE     = 0x44,
    P9030_CS3BASE     = 0x48,
    P9030_INTCSR      = 0x4c,
    P9030_PROT_AREA   = 0x4e,
    P9030_CNTRL       = 0x50,
    P9030_GPIOC       = 0x54,
    P9030_PMDATASEL   = 0x70,
    P9030_PMDATASCALE = 0x74,
};

// PLX specific PCI configuration registers
enum {
    P9030_VPD_ADDR   = 0x4E,
    P9030_VPD_DATA   = 0x50,
};

typedef enum
{
    P9030_MODE_BYTE   = 0,
    P9030_MODE_WORD   = 1,
    P9030_MODE_DWORD  = 2
} P9030_MODE;

typedef enum
{
    P9030_ADDR_REG     = AD_PCI_BAR0,
    P9030_ADDR_REG_IO  = AD_PCI_BAR1,
    P9030_ADDR_SPACE0  = AD_PCI_BAR2,
    P9030_ADDR_SPACE1  = AD_PCI_BAR3,
    P9030_ADDR_SPACE2  = AD_PCI_BAR4,
    P9030_ADDR_SPACE3  = AD_PCI_BAR5,
    P9030_ADDR_EPROM   = AD_PCI_BAR_EPROM,
} P9030_ADDR;


enum { P9030_RANGE_REG = 0x00000080 };

typedef struct P9030_STRUCT *P9030_HANDLE;
typedef P9030_HANDLE P9030HANDLE;

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
} P9030_INT_RESULT;

typedef void (WINAPI *P9030_INT_HANDLER)( P9030_HANDLE hPlx, P9030_INT_RESULT *intResult);

DWORD P9030_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
BOOL P9030_Open (P9030_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum);
void P9030_Close (P9030_HANDLE hPlx);
BOOL P9030_IsAddrSpaceActive(P9030_HANDLE hPlx, P9030_ADDR addrSpace);
void P9030_GetPciSlot(P9030_HANDLE hPlx, WD_PCI_SLOT *pPciSlot);

void P9030_ReadWriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
                    DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
void P9030_ReadBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
                    DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
void P9030_WriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
                    DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
BYTE P9030_ReadByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
void P9030_WriteByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, BYTE data);
WORD P9030_ReadWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
void P9030_WriteWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, WORD data);
DWORD P9030_ReadDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
void P9030_WriteDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, DWORD data);

void P9030_ReadWriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                    DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
void P9030_ReadSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                    DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
void P9030_WriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
                    DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
BYTE P9030_ReadSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
void P9030_WriteSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, BYTE data);
WORD P9030_ReadSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
void P9030_WriteSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, WORD data);
DWORD P9030_ReadSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
void P9030_WriteSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, DWORD data);

BOOL P9030_IntIsEnabled (P9030_HANDLE hPlx);
BOOL P9030_IntEnable (P9030_HANDLE hPlx, P9030_INT_HANDLER funcIntHandler);
void P9030_IntDisable (P9030_HANDLE hPlx);

DWORD P9030_ReadReg (P9030_HANDLE hPlx, DWORD dwReg);
void P9030_WriteReg (P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);

BOOL P9030_EEPROMReadWord(P9030_HANDLE hPlx, DWORD dwOffset, PWORD pwData);
BOOL P9030_EEPROMWriteWord(P9030_HANDLE hPlx, DWORD dwOffset, WORD wData);
BOOL P9030_EEPROMReadDWord(P9030_HANDLE hPlx, DWORD dwOffset, PDWORD pdwData);
BOOL P9030_EEPROMWriteDWord(P9030_HANDLE hPlx, DWORD dwOffset, DWORD dwData);
BOOL P9030_EEPROMValid(P9030_HANDLE hPlx);

DWORD P9030_ReadPCIReg(P9030_HANDLE hPlx, DWORD dwReg);
void P9030_WritePCIReg(P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);

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

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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