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
84typedef 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	uLONG    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	uLONG    cpLength;         /* EATA Command Packet Length      */
101	uLONG    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
107typedef struct {
108	uSHORT length;		// Remaining length of this
109	uSHORT drvrHBAnum;	// Relative HBA # used by the driver
110	uLONG 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	uLONG baseLength;
118	ADAPTER_OBJECT *AdapterObject;
119	LARGE_INTEGER DmaLogicalAddress;
120	PVOID DmaVirtualAddress;
121	LARGE_INTEGER ReplyLogicalAddress;
122	PVOID ReplyVirtualAddress;
123#   else
124	uLONG reserved1;	// Reserved for future expansion
125	uLONG reserved2;	// Reserved for future expansion
126	uLONG reserved3;	// Reserved for future expansion
127#   endif
128} drvrHBAinfo_S;
129
130typedef struct TARGET_BUSY
131{
132  uLONG channel;
133  uLONG id;
134  uLONG lun;
135  uLONG isBusy;
136} TARGET_BUSY_T;
137
138#endif
139