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 
140