-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpcie_lib.h
90 lines (72 loc) · 3.07 KB
/
pcie_lib.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#ifndef _PCIE_LIB_H_
#define _PCIE_LIB_H_
/************************************************************************
* File: pcie_lib.h
*
* Library for accessing PCIE devices.
* The code accesses hardware using WinDriver's WDC library.
* Code was generated by DriverWizard v10.21.
*
* Jungo Confidential. Copyright (c) 2011 Jungo Ltd. http://www.jungo.com
*************************************************************************/
#include "wdc_lib.h"
#include "samples/shared/pci_regs.h"
#include "samples/shared/bits.h"
#ifdef __cplusplus
extern "C" {
#endif
/*************************************************************
General definitions
*************************************************************/
/* Default vendor and device IDs */
#define PCIE_DEFAULT_VENDOR_ID 0x1172 /* Vendor ID */
#define PCIE_DEFAULT_DEVICE_ID 0x4 /* Device ID */
/* Address space information struct */
#define MAX_TYPE 8
typedef struct {
DWORD dwAddrSpace;
CHAR sType[MAX_TYPE];
CHAR sName[MAX_NAME];
CHAR sDesc[MAX_DESC];
} PCIE_ADDR_SPACE_INFO;
/* Interrupt result information struct */
typedef struct
{
DWORD dwCounter; /* Number of interrupts received */
DWORD dwLost; /* Number of interrupts not yet handled */
WD_INTERRUPT_WAIT_RESULT waitResult; /* See WD_INTERRUPT_WAIT_RESULT values in windrvr.h */
DWORD dwEnabledIntType; /* Interrupt type that was actually enabled
(MSI/MSI-X/Level Sensitive/Edge-Triggered) */
DWORD dwLastMessage; /* Message data of the last received MSI/MSI-X
(Windows Vista/7); N/A to line-based interrupts) */
} PCIE_INT_RESULT;
/* TODO: You can add fields to PCIE_INT_RESULT to store any additional
information that you wish to pass to your diagnostics interrupt
handler routine (DiagIntHandler() in pcie_diag.c) */
/* PCIE diagnostics interrupt handler function type */
typedef void (*PCIE_INT_HANDLER)(WDC_DEVICE_HANDLE hDev,
PCIE_INT_RESULT *pIntResult);
/* PCIE diagnostics plug-and-play and power management events handler function type */
typedef void (*PCIE_EVENT_HANDLER)(WDC_DEVICE_HANDLE hDev,
DWORD dwAction);
/*************************************************************
Function prototypes
*************************************************************/
DWORD PCIE_LibInit(void);
DWORD PCIE_LibUninit(void);
WDC_DEVICE_HANDLE PCIE_DeviceOpen(const WD_PCI_CARD_INFO *pDeviceInfo);
BOOL PCIE_DeviceClose(WDC_DEVICE_HANDLE hDev);
static BOOL IsItemExists(PWDC_DEVICE pDev, ITEM_TYPE item);
DWORD PCIE_IntEnable(WDC_DEVICE_HANDLE hDev, PCIE_INT_HANDLER funcIntHandler);
DWORD PCIE_IntDisable(WDC_DEVICE_HANDLE hDev);
BOOL PCIE_IntIsEnabled(WDC_DEVICE_HANDLE hDev);
DWORD PCIE_EventRegister(WDC_DEVICE_HANDLE hDev, PCIE_EVENT_HANDLER funcEventHandler);
DWORD PCIE_EventUnregister(WDC_DEVICE_HANDLE hDev);
BOOL PCIE_EventIsRegistered(WDC_DEVICE_HANDLE hDev);
DWORD PCIE_GetNumAddrSpaces(WDC_DEVICE_HANDLE hDev);
BOOL PCIE_GetAddrSpaceInfo(WDC_DEVICE_HANDLE hDev, PCIE_ADDR_SPACE_INFO *pAddrSpaceInfo);
const char *PCIE_GetLastErr(void);
#ifdef __cplusplus
}
#endif
#endif