| 1 | /*************************************************************************** |
| 2 | dpti_ioctl.h - description |
| 3 | ------------------- |
| 4 | begin : Thu Sep 7 2000 |
| 5 | copyright : (C) 2001 by Adaptec |
| 6 | |
| 7 | See Documentation/scsi/dpti.txt for history, notes, license info |
| 8 | and credits |
| 9 | ***************************************************************************/ |
| 10 | |
| 11 | /*************************************************************************** |
| 12 | * * |
| 13 | * This program is free software; you can redistribute it and/or modify * |
| 14 | * it under the terms of the GNU General Public License as published by * |
| 15 | * the Free Software Foundation; either version 2 of the License, or * |
| 16 | * (at your option) any later version. * |
| 17 | * * |
| 18 | ***************************************************************************/ |
| 19 | |
| 20 | /*************************************************************************** |
| 21 | * This file is generated from osd_unix.h * |
| 22 | * *************************************************************************/ |
| 23 | |
| 24 | #ifndef _dpti_ioctl_h |
| 25 | #define _dpti_ioctl_h |
| 26 | |
| 27 | // IOCTL interface commands |
| 28 | |
| 29 | #ifndef _IOWR |
| 30 | # define _IOWR(x,y,z) (((x)<<8)|y) |
| 31 | #endif |
| 32 | #ifndef _IOW |
| 33 | # define _IOW(x,y,z) (((x)<<8)|y) |
| 34 | #endif |
| 35 | #ifndef _IOR |
| 36 | # define _IOR(x,y,z) (((x)<<8)|y) |
| 37 | #endif |
| 38 | #ifndef _IO |
| 39 | # define _IO(x,y) (((x)<<8)|y) |
| 40 | #endif |
| 41 | /* EATA PassThrough Command */ |
| 42 | #define EATAUSRCMD _IOWR('D',65,EATA_CP) |
| 43 | /* Set Debug Level If Enabled */ |
| 44 | #define DPT_DEBUG _IOW('D',66,int) |
| 45 | /* Get Signature Structure */ |
| 46 | #define DPT_SIGNATURE _IOR('D',67,dpt_sig_S) |
| 47 | #if defined __bsdi__ |
| 48 | #define DPT_SIGNATURE_PACKED _IOR('D',67,dpt_sig_S_Packed) |
| 49 | #endif |
| 50 | /* Get Number Of DPT Adapters */ |
| 51 | #define DPT_NUMCTRLS _IOR('D',68,int) |
| 52 | /* Get Adapter Info Structure */ |
| 53 | #define DPT_CTRLINFO _IOR('D',69,CtrlInfo) |
| 54 | /* Get Statistics If Enabled */ |
| 55 | #define DPT_STATINFO _IO('D',70) |
| 56 | /* Clear Stats If Enabled */ |
| 57 | #define DPT_CLRSTAT _IO('D',71) |
| 58 | /* Get System Info Structure */ |
| 59 | #define DPT_SYSINFO _IOR('D',72,sysInfo_S) |
| 60 | /* Set Timeout Value */ |
| 61 | #define DPT_TIMEOUT _IO('D',73) |
| 62 | /* Get config Data */ |
| 63 | #define DPT_CONFIG _IO('D',74) |
| 64 | /* Get Blink LED Code */ |
| 65 | #define DPT_BLINKLED _IOR('D',75,int) |
| 66 | /* Get Statistical information (if available) */ |
| 67 | #define DPT_STATS_INFO _IOR('D',80,STATS_DATA) |
| 68 | /* Clear the statistical information */ |
| 69 | #define DPT_STATS_CLEAR _IO('D',81) |
| 70 | /* Get Performance metrics */ |
| 71 | #define DPT_PERF_INFO _IOR('D',82,dpt_perf_t) |
| 72 | /* Send an I2O command */ |
| 73 | #define I2OUSRCMD _IO('D',76) |
| 74 | /* Inform driver to re-acquire LCT information */ |
| 75 | #define I2ORESCANCMD _IO('D',77) |
| 76 | /* Inform driver to reset adapter */ |
| 77 | #define I2ORESETCMD _IO('D',78) |
| 78 | /* See if the target is mounted */ |
| 79 | #define DPT_TARGET_BUSY _IOR('D',79, TARGET_BUSY_T) |
| 80 | |
| 81 | |
| 82 | /* Structure Returned From Get Controller Info */ |
| 83 | |
| 84 | typedef struct { |
| 85 | uCHAR state; /* Operational state */ |
| 86 | uCHAR id; /* Host adapter SCSI id */ |
| 87 | int vect; /* Interrupt vector number */ |
| 88 | int base; /* Base I/O address */ |
| 89 | int njobs; /* # of jobs sent to HA */ |
| 90 | int qdepth; /* Controller queue depth. */ |
| 91 | int wakebase; /* mpx wakeup base index. */ |
| 92 | uINT SGsize; /* Scatter/Gather list size. */ |
| 93 | unsigned heads; /* heads for drives on cntlr. */ |
| 94 | unsigned sectors; /* sectors for drives on cntlr. */ |
| 95 | uCHAR do_drive32; /* Flag for Above 16 MB Ability */ |
| 96 | uCHAR BusQuiet; /* SCSI Bus Quiet Flag */ |
| 97 | char idPAL[4]; /* 4 Bytes Of The ID Pal */ |
| 98 | uCHAR primary; /* 1 For Primary, 0 For Secondary */ |
| 99 | uCHAR eataVersion; /* EATA Version */ |
| 100 | uINT cpLength; /* EATA Command Packet Length */ |
| 101 | uINT spLength; /* EATA Status Packet Length */ |
| 102 | uCHAR drqNum; /* DRQ Index (0,5,6,7) */ |
| 103 | uCHAR flag1; /* EATA Flags 1 (Byte 9) */ |
| 104 | uCHAR flag2; /* EATA Flags 2 (Byte 30) */ |
| 105 | } CtrlInfo; |
| 106 | |
| 107 | typedef struct { |
| 108 | uSHORT length; // Remaining length of this |
| 109 | uSHORT drvrHBAnum; // Relative HBA # used by the driver |
| 110 | uINT baseAddr; // Base I/O address |
| 111 | uSHORT blinkState; // Blink LED state (0=Not in blink LED) |
| 112 | uCHAR pciBusNum; // PCI Bus # (Optional) |
| 113 | uCHAR pciDeviceNum; // PCI Device # (Optional) |
| 114 | uSHORT hbaFlags; // Miscellaneous HBA flags |
| 115 | uSHORT Interrupt; // Interrupt set for this device. |
| 116 | # if (defined(_DPT_ARC)) |
| 117 | uINT baseLength; |
| 118 | ADAPTER_OBJECT *AdapterObject; |
| 119 | LARGE_INTEGER DmaLogicalAddress; |
| 120 | PVOID DmaVirtualAddress; |
| 121 | LARGE_INTEGER ReplyLogicalAddress; |
| 122 | PVOID ReplyVirtualAddress; |
| 123 | # else |
| 124 | uINT reserved1; // Reserved for future expansion |
| 125 | uINT reserved2; // Reserved for future expansion |
| 126 | uINT reserved3; // Reserved for future expansion |
| 127 | # endif |
| 128 | } drvrHBAinfo_S; |
| 129 | |
| 130 | typedef struct TARGET_BUSY |
| 131 | { |
| 132 | uLONG channel; |
| 133 | uLONG id; |
| 134 | uLONG lun; |
| 135 | uLONG isBusy; |
| 136 | } TARGET_BUSY_T; |
| 137 | |
| 138 | #endif |
| 139 | |