Rev 21 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
21 | f9daq | 1 | #ifndef __VPCIC32D_H__ |
2 | #define __VPCIC32D_H__ |
||
3 | //------------------------------------------------------------------------- |
||
4 | // WIN95 driver for PCICC32 CAMAC interface from ARW Elektronik, Germany -- |
||
5 | // |
||
6 | // vpcic32d.h - the general header file to share information between driver |
||
7 | // and application |
||
8 | // |
||
9 | // (c) 2000,2001 ARW Elektronik |
||
10 | // |
||
11 | // this source code is published under GPL (Open Source). You can use, redistrubute and |
||
12 | // modify it unless this header is not modified or deleted. No warranty is given that |
||
13 | // this software will work like expected. |
||
14 | // This product is not authorized for use as critical component in life support systems |
||
15 | // without the express written approval of ARW Elektronik Germany. |
||
16 | // |
||
17 | // Please announce changes and hints to ARW Elektronik |
||
18 | // |
||
19 | // what who when |
||
20 | // first steps AR 07.03.2000 |
||
21 | // added AUTOREAD AR 17.03.2001 |
||
22 | // added VPCIC32_ACCESS_LCR AR 30.03.2001 |
||
23 | // |
||
24 | |||
25 | // the action codes for ioctl calls |
||
26 | #define VPCIC32_ATTACH_CC32 0x00220000 // METHOD_BUFFERED + FILE_ANY_ACCESS + |
||
27 | #define VPCIC32_DETACH_CC32 0x00220004 // FILE_DEVICE_UNKNOWN |
||
28 | #define VPCIC32_GET_STATUS 0x00220008 |
||
29 | #define VPCIC32_CLEAR_STATUS 0x0022000C |
||
30 | #define VPCIC32_SET_ACCESS_PARA 0x00220010 |
||
31 | #define VPCIC32_CONTROL_INTERRUPTS 0x00220014 |
||
32 | #define VPCIC32_INSTALL_IRQ_HANDLER 0x00220018 |
||
33 | #define VPCIC32_ACCESS_LCR 0x00220020 // access tp PLX LCR space |
||
34 | |||
35 | // switches for VPCIC32_ACCESS_COMMAND.wAccessType |
||
36 | #define WORD_ACCESS (UCHAR)2 // word |
||
37 | #define LONG_ACCESS (UCHAR)4 // long |
||
38 | |||
39 | // VPCIC32_ACCESS_LCR access constants |
||
40 | #define LCR_READ 0 // read only access |
||
41 | #define LCR_WRITE 1 // write and read back access |
||
42 | #define LCR_OR 2 // read, bitwise 'or' content and read back access |
||
43 | #define LCR_AND 3 // read, bitwise 'and' content and read back access |
||
44 | #define LCR_WRITE_ONLY 4 // do not read back after write |
||
45 | |||
46 | // define bits for VPCIC32D_ACCESS_COMMAND.wBlockTransfer |
||
47 | #define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch |
||
48 | #define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch |
||
49 | |||
50 | // mask bits for interrupt status provided by the user interrupt handler |
||
51 | #define LAM_IRQ 0x00FFFFFF // LAM was responsible for interrupt |
||
52 | #define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timeout |
||
53 | #define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending |
||
54 | #define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending |
||
55 | #define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending |
||
56 | #define LAM_FF 0x80000000 // the LAM-Flip-Flop was set |
||
57 | |||
58 | // this structure is input in all ioctl calls except VPCIC32_SET_ACCESS_PARA |
||
59 | typedef struct |
||
60 | { |
||
61 | DWORD dwInterface; // CC32 module number |
||
62 | } VPCIC32D_DEVICE; |
||
63 | |||
64 | // this structure is output from VPCIC32_ATTACH_CC32 call |
||
65 | typedef struct |
||
66 | { |
||
67 | DWORD dwInterface; // CC32 module number |
||
68 | void *pvWindowBase; // the base address into the 32 kbyte Window of CC32 |
||
69 | } VPCIC32D_WINDOW; |
||
70 | |||
71 | // this structure is output from VPCIC32_GET_STATUS call |
||
72 | typedef struct |
||
73 | { |
||
74 | DWORD dwInterface; // CC32 module number |
||
75 | WORD bTimeout; // denotes PCIADA timeout |
||
76 | WORD bInterrupt; // denotes a pending LAM interrupt |
||
77 | } VPCIC32D_STATUS; |
||
78 | |||
79 | // this structure is input to the VPCIC32_SET_ACCESS_PARA call |
||
80 | typedef struct |
||
81 | { |
||
82 | DWORD dwInterface; // CC32 module number |
||
83 | WORD wAccessType; // set the current access type , for compatibilty to NT, not used @ WIN95/98 |
||
84 | WORD wBlockTransfer; // set to AUTOREAD or 0 |
||
85 | } VPCIC32D_ACCESS_COMMAND; |
||
86 | |||
87 | // this structure is used to control the interrupts |
||
88 | typedef struct |
||
89 | { |
||
90 | DWORD dwInterface; // CC32 module number |
||
91 | WORD wEnable; // a 1 allows, a 0 inhibits interrupt requests |
||
92 | } VPCIC32D_IRQ_CONTROL; |
||
93 | |||
94 | // this structure is used to (de)install a irqhandler to a interface |
||
95 | typedef struct |
||
96 | { |
||
97 | DWORD dwInterface; // CC32 module number |
||
98 | DWORD dwIrqHandler; // void (*IrqHandler)(DWORD) |
||
99 | } VPCIC32D_IRQ_HANLDER; |
||
100 | |||
101 | // structure to access the local configuration space of PLX chip (test / debug only) with VPCIC32_ACCESS_LCR |
||
102 | typedef struct |
||
103 | { |
||
104 | DWORD dwInterface; // CC32 module number |
||
105 | DWORD dwContent; // content to write, and, or |
||
106 | WORD wRegisterAddress; // address offset of LCR register |
||
107 | UCHAR bAccessMode; // LCR_READ, write, or, and |
||
108 | UCHAR bBytesLane; // the data access width |
||
109 | } VPCIC32D_LCR_ACCESS; |
||
110 | |||
111 | #endif // __VPCIC32D_H__ |