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__ |