NSCL DDAS  1.0
Support for XIA DDAS at the NSCL
 All Classes Namespaces Files Functions Variables Macros Pages
PlxIoctl.h
1 #ifndef __PLX_IOCTL_H
2 #define __PLX_IOCTL_H
3 
4 /*******************************************************************************
5  * Copyright (c) PLX Technology, Inc.
6  *
7  * PLX Technology Inc. licenses this source file under the GNU Lesser General Public
8  * License (LGPL) version 2. This source file may be modified or redistributed
9  * under the terms of the LGPL and without express permission from PLX Technology.
10  *
11  * PLX Technology, Inc. provides this software AS IS, WITHOUT ANY WARRANTY,
12  * EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF
13  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. PLX makes no guarantee
14  * or representations regarding the use of, or the results of the use of,
15  * the software and documentation in terms of correctness, accuracy,
16  * reliability, currentness, or otherwise; and you rely on the software,
17  * documentation and results solely at your own risk.
18  *
19  * IN NO EVENT SHALL PLX BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
20  * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
21  * OF ANY KIND.
22  *
23  ******************************************************************************/
24 
25 /******************************************************************************
26  *
27  * File Name:
28  *
29  * PlxIoctl.h
30  *
31  * Description:
32  *
33  * This file contains the common I/O Control messages shared between
34  * the driver and the PCI API.
35  *
36  * Revision History:
37  *
38  * 08-01-11 : PLX SDK v6.50
39  *
40  ******************************************************************************/
41 
42 
43 #include "PlxTypes.h"
44 
45 #if defined(PLX_MSWINDOWS) && !defined(PLX_DRIVER)
46  #include <winioctl.h>
47 #elif defined(PLX_LINUX)
48  #include <fcntl.h>
49  #include <unistd.h>
50  #include <sys/ioctl.h>
51 #endif
52 
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 
59 
60 
61 // Used to pass IOCTL arguments down to the driver
62 typedef struct _PLX_PARAMS
63 {
64  PLX_STATUS ReturnCode; // API status code
65  PLX_DEVICE_KEY Key; // Device key information
66  U64 value[3]; // Generic storage for parameters
67  union
68  {
69  U64 ExData[5];
70  PLX_INTERRUPT PlxIntr;
71  PLX_PHYSICAL_MEM PciMemory;
72  PLX_PORT_PROP PortProp;
73  PLX_PCI_BAR_PROP BarProp;
74  PLX_DMA_PROP DmaProp;
75  PLX_DMA_PARAMS TxParams;
76  PLX_DRIVER_PROP DriverProp;
77  PLX_MULTI_HOST_PROP MH_Prop;
78  } u;
79 } PLX_PARAMS;
80 
81 
82 #if defined(PLX_MSWINDOWS)
83  /**********************************************************
84  * Note: Codes 0-2047 (0-7FFh) are reserved by Microsoft
85  * Coded 2048-4095 (800h-FFFh) are reserved for OEMs
86  *********************************************************/
87  #define PLX_IOCTL_CODE_BASE 0x800
88  #define IOCTL_MSG( code ) CTL_CODE( \
89  FILE_DEVICE_UNKNOWN, \
90  code, \
91  METHOD_BUFFERED, \
92  FILE_ANY_ACCESS \
93  )
94 
95 #elif defined(PLX_LINUX) || defined(PLX_LINUX_DRIVER)
96 
97  #define PLX_IOCTL_CODE_BASE 0x0
98  #define PLX_MAGIC 'P'
99  #define IOCTL_MSG( code ) _IOWR( \
100  PLX_MAGIC, \
101  code, \
102  PLX_PARAMS \
103  )
104 
105 #elif defined(PLX_DOS)
106 
107  #define PLX_IOCTL_CODE_BASE 0x0
108  #define IOCTL_MSG( code ) code
109 
110 #endif
111 
112 
113 typedef enum _DRIVER_MSGS
114 {
115  MSG_DRIVER_VERSION = PLX_IOCTL_CODE_BASE,
116  MSG_DRIVER_PROPERTIES,
117  MSG_DRIVER_SCHEDULE_RESCAN,
118  MSG_CHIP_TYPE_GET,
119  MSG_CHIP_TYPE_SET,
120  MSG_GET_PORT_PROPERTIES,
121  MSG_PCI_DEVICE_RESET,
122  MSG_PCI_DEVICE_FIND,
123  MSG_PCI_BAR_PROPERTIES,
124  MSG_PCI_BAR_MAP,
125  MSG_PCI_BAR_UNMAP,
126  MSG_PCI_REGISTER_READ,
127  MSG_PCI_REGISTER_WRITE,
128  MSG_PCI_REG_READ_BYPASS_OS,
129  MSG_PCI_REG_WRITE_BYPASS_OS,
130  MSG_REGISTER_READ,
131  MSG_REGISTER_WRITE,
132  MSG_MAPPED_REGISTER_READ,
133  MSG_MAPPED_REGISTER_WRITE,
134  MSG_PHYSICAL_MEM_ALLOCATE,
135  MSG_PHYSICAL_MEM_FREE,
136  MSG_PHYSICAL_MEM_MAP,
137  MSG_PHYSICAL_MEM_UNMAP,
138  MSG_COMMON_BUFFER_PROPERTIES,
139  MSG_IO_PORT_READ,
140  MSG_IO_PORT_WRITE,
141  MSG_PCI_BAR_SPACE_READ,
142  MSG_PCI_BAR_SPACE_WRITE,
143  MSG_VPD_READ,
144  MSG_VPD_WRITE,
145  MSG_EEPROM_PRESENT,
146  MSG_EEPROM_PROBE,
147  MSG_EEPROM_GET_ADDRESS_WIDTH,
148  MSG_EEPROM_SET_ADDRESS_WIDTH,
149  MSG_EEPROM_CRC_GET,
150  MSG_EEPROM_CRC_UPDATE,
151  MSG_EEPROM_READ_BY_OFFSET,
152  MSG_EEPROM_WRITE_BY_OFFSET,
153  MSG_EEPROM_READ_BY_OFFSET_16,
154  MSG_EEPROM_WRITE_BY_OFFSET_16,
155  MSG_MAILBOX_READ,
156  MSG_MAILBOX_WRITE,
157  MSG_INTR_ENABLE,
158  MSG_INTR_DISABLE,
159  MSG_INTR_STATUS_GET,
160  MSG_NOTIFICATION_REGISTER_FOR,
161  MSG_NOTIFICATION_CANCEL,
162  MSG_NOTIFICATION_WAIT,
163  MSG_NOTIFICATION_STATUS,
164  MSG_DMA_CHANNEL_OPEN,
165  MSG_DMA_GET_PROPERTIES,
166  MSG_DMA_SET_PROPERTIES,
167  MSG_DMA_CONTROL,
168  MSG_DMA_STATUS,
169  MSG_DMA_TRANSFER_BLOCK,
170  MSG_DMA_TRANSFER_USER_BUFFER,
171  MSG_DMA_CHANNEL_CLOSE,
172  MSG_PERFORMANCE_INIT_PROPERTIES,
173  MSG_PERFORMANCE_MONITOR_CTRL,
174  MSG_PERFORMANCE_RESET_COUNTERS,
175  MSG_PERFORMANCE_GET_COUNTERS,
176  MSG_MH_GET_PROPERTIES,
177  MSG_MH_MIGRATE_DS_PORTS,
178  MSG_NT_PROBE_REQ_ID,
179  MSG_NT_LUT_PROPERTIES,
180  MSG_NT_LUT_ADD,
181  MSG_NT_LUT_DISABLE
182 } DRIVER_MSGS;
183 
184 
185 
186 
187 #define PLX_IOCTL_DRIVER_VERSION IOCTL_MSG( MSG_DRIVER_VERSION )
188 #define PLX_IOCTL_DRIVER_PROPERTIES IOCTL_MSG( MSG_DRIVER_PROPERTIES )
189 #define PLX_IOCTL_DRIVER_SCHEDULE_RESCAN IOCTL_MSG( MSG_DRIVER_SCHEDULE_RESCAN )
190 #define PLX_IOCTL_CHIP_TYPE_GET IOCTL_MSG( MSG_CHIP_TYPE_GET )
191 #define PLX_IOCTL_CHIP_TYPE_SET IOCTL_MSG( MSG_CHIP_TYPE_SET )
192 #define PLX_IOCTL_GET_PORT_PROPERTIES IOCTL_MSG( MSG_GET_PORT_PROPERTIES )
193 
194 #define PLX_IOCTL_PCI_DEVICE_FIND IOCTL_MSG( MSG_PCI_DEVICE_FIND )
195 #define PLX_IOCTL_PCI_DEVICE_RESET IOCTL_MSG( MSG_PCI_DEVICE_RESET )
196 #define PLX_IOCTL_PCI_BAR_PROPERTIES IOCTL_MSG( MSG_PCI_BAR_PROPERTIES )
197 #define PLX_IOCTL_PCI_BAR_MAP IOCTL_MSG( MSG_PCI_BAR_MAP )
198 #define PLX_IOCTL_PCI_BAR_UNMAP IOCTL_MSG( MSG_PCI_BAR_UNMAP )
199 
200 #define PLX_IOCTL_PCI_REGISTER_READ IOCTL_MSG( MSG_PCI_REGISTER_READ )
201 #define PLX_IOCTL_PCI_REGISTER_WRITE IOCTL_MSG( MSG_PCI_REGISTER_WRITE )
202 #define PLX_IOCTL_PCI_REG_READ_BYPASS_OS IOCTL_MSG( MSG_PCI_REG_READ_BYPASS_OS )
203 #define PLX_IOCTL_PCI_REG_WRITE_BYPASS_OS IOCTL_MSG( MSG_PCI_REG_WRITE_BYPASS_OS )
204 
205 #define PLX_IOCTL_REGISTER_READ IOCTL_MSG( MSG_REGISTER_READ )
206 #define PLX_IOCTL_REGISTER_WRITE IOCTL_MSG( MSG_REGISTER_WRITE )
207 #define PLX_IOCTL_MAPPED_REGISTER_READ IOCTL_MSG( MSG_MAPPED_REGISTER_READ )
208 #define PLX_IOCTL_MAPPED_REGISTER_WRITE IOCTL_MSG( MSG_MAPPED_REGISTER_WRITE )
209 #define PLX_IOCTL_MAILBOX_READ IOCTL_MSG( MSG_MAILBOX_READ )
210 #define PLX_IOCTL_MAILBOX_WRITE IOCTL_MSG( MSG_MAILBOX_WRITE )
211 
212 #define PLX_IOCTL_PHYSICAL_MEM_ALLOCATE IOCTL_MSG( MSG_PHYSICAL_MEM_ALLOCATE )
213 #define PLX_IOCTL_PHYSICAL_MEM_FREE IOCTL_MSG( MSG_PHYSICAL_MEM_FREE )
214 #define PLX_IOCTL_PHYSICAL_MEM_MAP IOCTL_MSG( MSG_PHYSICAL_MEM_MAP )
215 #define PLX_IOCTL_PHYSICAL_MEM_UNMAP IOCTL_MSG( MSG_PHYSICAL_MEM_UNMAP )
216 #define PLX_IOCTL_COMMON_BUFFER_PROPERTIES IOCTL_MSG( MSG_COMMON_BUFFER_PROPERTIES )
217 
218 #define PLX_IOCTL_IO_PORT_READ IOCTL_MSG( MSG_IO_PORT_READ )
219 #define PLX_IOCTL_IO_PORT_WRITE IOCTL_MSG( MSG_IO_PORT_WRITE )
220 #define PLX_IOCTL_PCI_BAR_SPACE_READ IOCTL_MSG( MSG_PCI_BAR_SPACE_READ )
221 #define PLX_IOCTL_PCI_BAR_SPACE_WRITE IOCTL_MSG( MSG_PCI_BAR_SPACE_WRITE )
222 
223 #define PLX_IOCTL_VPD_READ IOCTL_MSG( MSG_VPD_READ )
224 #define PLX_IOCTL_VPD_WRITE IOCTL_MSG( MSG_VPD_WRITE )
225 
226 #define PLX_IOCTL_EEPROM_PRESENT IOCTL_MSG( MSG_EEPROM_PRESENT )
227 #define PLX_IOCTL_EEPROM_PROBE IOCTL_MSG( MSG_EEPROM_PROBE )
228 #define PLX_IOCTL_EEPROM_GET_ADDRESS_WIDTH IOCTL_MSG( MSG_EEPROM_GET_ADDRESS_WIDTH )
229 #define PLX_IOCTL_EEPROM_SET_ADDRESS_WIDTH IOCTL_MSG( MSG_EEPROM_SET_ADDRESS_WIDTH )
230 #define PLX_IOCTL_EEPROM_CRC_GET IOCTL_MSG( MSG_EEPROM_CRC_GET )
231 #define PLX_IOCTL_EEPROM_CRC_UPDATE IOCTL_MSG( MSG_EEPROM_CRC_UPDATE )
232 #define PLX_IOCTL_EEPROM_READ_BY_OFFSET IOCTL_MSG( MSG_EEPROM_READ_BY_OFFSET )
233 #define PLX_IOCTL_EEPROM_WRITE_BY_OFFSET IOCTL_MSG( MSG_EEPROM_WRITE_BY_OFFSET )
234 #define PLX_IOCTL_EEPROM_READ_BY_OFFSET_16 IOCTL_MSG( MSG_EEPROM_READ_BY_OFFSET_16 )
235 #define PLX_IOCTL_EEPROM_WRITE_BY_OFFSET_16 IOCTL_MSG( MSG_EEPROM_WRITE_BY_OFFSET_16 )
236 
237 #define PLX_IOCTL_INTR_ENABLE IOCTL_MSG( MSG_INTR_ENABLE )
238 #define PLX_IOCTL_INTR_DISABLE IOCTL_MSG( MSG_INTR_DISABLE )
239 #define PLX_IOCTL_INTR_STATUS_GET IOCTL_MSG( MSG_INTR_STATUS_GET )
240 #define PLX_IOCTL_NOTIFICATION_REGISTER_FOR IOCTL_MSG( MSG_NOTIFICATION_REGISTER_FOR )
241 #define PLX_IOCTL_NOTIFICATION_CANCEL IOCTL_MSG( MSG_NOTIFICATION_CANCEL )
242 #define PLX_IOCTL_NOTIFICATION_WAIT IOCTL_MSG( MSG_NOTIFICATION_WAIT )
243 #define PLX_IOCTL_NOTIFICATION_STATUS IOCTL_MSG( MSG_NOTIFICATION_STATUS )
244 
245 #define PLX_IOCTL_DMA_CHANNEL_OPEN IOCTL_MSG( MSG_DMA_CHANNEL_OPEN )
246 #define PLX_IOCTL_DMA_GET_PROPERTIES IOCTL_MSG( MSG_DMA_GET_PROPERTIES )
247 #define PLX_IOCTL_DMA_SET_PROPERTIES IOCTL_MSG( MSG_DMA_SET_PROPERTIES )
248 #define PLX_IOCTL_DMA_CONTROL IOCTL_MSG( MSG_DMA_CONTROL )
249 #define PLX_IOCTL_DMA_STATUS IOCTL_MSG( MSG_DMA_STATUS )
250 #define PLX_IOCTL_DMA_TRANSFER_BLOCK IOCTL_MSG( MSG_DMA_TRANSFER_BLOCK )
251 #define PLX_IOCTL_DMA_TRANSFER_USER_BUFFER IOCTL_MSG( MSG_DMA_TRANSFER_USER_BUFFER )
252 #define PLX_IOCTL_DMA_CHANNEL_CLOSE IOCTL_MSG( MSG_DMA_CHANNEL_CLOSE )
253 
254 #define PLX_IOCTL_PERFORMANCE_INIT_PROPERTIES IOCTL_MSG( MSG_PERFORMANCE_INIT_PROPERTIES )
255 #define PLX_IOCTL_PERFORMANCE_MONITOR_CTRL IOCTL_MSG( MSG_PERFORMANCE_MONITOR_CTRL )
256 #define PLX_IOCTL_PERFORMANCE_RESET_COUNTERS IOCTL_MSG( MSG_PERFORMANCE_RESET_COUNTERS )
257 #define PLX_IOCTL_PERFORMANCE_GET_COUNTERS IOCTL_MSG( MSG_PERFORMANCE_GET_COUNTERS )
258 
259 #define PLX_IOCTL_MH_GET_PROPERTIES IOCTL_MSG( MSG_MH_GET_PROPERTIES )
260 #define PLX_IOCTL_MH_MIGRATE_DS_PORTS IOCTL_MSG( MSG_MH_MIGRATE_DS_PORTS )
261 
262 #define PLX_IOCTL_NT_PROBE_REQ_ID IOCTL_MSG( MSG_NT_PROBE_REQ_ID )
263 #define PLX_IOCTL_NT_LUT_PROPERTIES IOCTL_MSG( MSG_NT_LUT_PROPERTIES )
264 #define PLX_IOCTL_NT_LUT_ADD IOCTL_MSG( MSG_NT_LUT_ADD )
265 #define PLX_IOCTL_NT_LUT_DISABLE IOCTL_MSG( MSG_NT_LUT_DISABLE )
266 
267 
268 #ifdef __cplusplus
269 }
270 #endif
271 
272 #endif
Definition: PlxTypes.h:579
Definition: PlxTypes.h:666
Definition: PlxTypes.h:701
Definition: PlxTypes.h:531
Definition: PlxIoctl.h:62
Definition: PlxTypes.h:748
Definition: PlxTypes.h:541
Definition: PlxTypes.h:616
Definition: PlxTypes.h:553
Definition: PlxTypes.h:563