1/*-
2 * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
3 * Copyright (c) 2000-2001 Adaptec Corporation.
4 * All rights reserved.
5 *
6 * Redistribution and use in source form, with or without modification, are
7 * permitted provided that redistributions of source code must retain the
8 * above copyright notice, this list of conditions and the following disclaimer.
9 *
10 * This software is provided `as is' by Distributed Processing Technology and
11 * any express or implied warranties, including, but not limited to, the
12 * implied warranties of merchantability and fitness for a particular purpose,
13 * are disclaimed. In no event shall Distributed Processing Technology be
14 * liable for any direct, indirect, incidental, special, exemplary or
15 * consequential damages (including, but not limited to, procurement of
16 * substitute goods or services; loss of use, data, or profits; or business
17 * interruptions) however caused and on any theory of liability, whether in
18 * contract, strict liability, or tort (including negligence or otherwise)
19 * arising in any way out of the use of this driver software, even if advised
20 * of the possibility of such damage.
21 *
22 * $FreeBSD$
23 */
24
25#ifndef __DPTSIG_H_
26#define	__DPTSIG_H_
27#ifdef _SINIX_ADDON
28#include "dpt.h"
29#endif
30/* DPT SIGNATURE SPEC AND HEADER FILE				*/
31/* Signature Version 1 (sorry no 'A')				*/
32
33/* to make sure we are talking the same size under all OS's	*/
34typedef unsigned char sigBYTE;
35typedef unsigned short sigWORD;
36#if (defined(_MULTI_DATAMODEL) && defined(sun) && !defined(_ILP32))
37typedef uint32_t sigLONG;
38#else
39typedef unsigned long sigLONG;
40#endif
41
42/*
43 * use sigWORDLittleEndian for:
44 *  dsCapabilities
45 *  dsDeviceSupp
46 *  dsAdapterSupp
47 *  dsApplication
48 * use sigLONGLittleEndian for:
49 *	dsOS
50 * so that the sig can be standardised to Little Endian
51 */
52#if (defined(_DPT_BIG_ENDIAN))
53# define sigWORDLittleEndian(x) ((((x)&0xFF)<<8)|(((x)>>8)&0xFF))
54# define sigLONGLittleEndian(x) \
55	((((x)&0xFF)<<24) |		\
56	 (((x)&0xFF00)<<8) |	\
57	 (((x)&0xFF0000L)>>8) | \
58	 (((x)&0xFF000000L)>>24))
59#else
60# define sigWORDLittleEndian(x) (x)
61# define sigLONGLittleEndian(x) (x)
62#endif
63
64/* must make sure the structure is not word or double-word aligned	*/
65/* ---------------------------------------------------------------	*/
66/* Borland will ignore the following pragma:				*/
67/* Word alignment is OFF by default.  If in the, IDE make		*/
68/* sure that Options | Compiler | Code Generation | Word Alignment	*/
69/* is not checked.  If using BCC, do not use the -a option.		*/
70
71#ifndef NO_PACK
72#if defined(_DPT_AIX)
73#pragma options align=packed
74#else
75#pragma pack(1)
76#endif	/* aix */
77#endif
78/* For the Macintosh */
79#ifdef STRUCTALIGNMENTSUPPORTED
80#pragma options align=mac68k
81#endif
82
83
84/* Current Signature Version - sigBYTE dsSigVersion; */
85/* ------------------------------------------------------------------ */
86#define	SIG_VERSION 1
87
88/* Processor Family - sigBYTE dsProcessorFamily;  DISTINCT VALUES */
89/* ------------------------------------------------------------------ */
90/* What type of processor the file is meant to run on. */
91/* This will let us know whether to read sigWORDs as high/low or low/high. */
92#define	PROC_INTEL	0x00	/* Intel 80x86 */
93#define	PROC_MOTOROLA	0x01	/* Motorola 68K */
94#define	PROC_MIPS4000	0x02	/* MIPS RISC 4000 */
95#define	PROC_MIPS	PROC_MIPS4000 /* MIPS RISC */
96#define	PROC_ALPHA	0x03	/* DEC Alpha */
97#define	PROC_POWERPC	0x04	/* IBM Power PC */
98#define	PROC_i960	0x05	/* Intel i960 */
99#define	PROC_ULTRASPARC 0x06	/* SPARC processor */
100
101/* Specific Minimim Processor - sigBYTE dsProcessor;	FLAG BITS */
102/* ------------------------------------------------------------------ */
103/* Different bit definitions dependent on processor_family */
104
105/* PROC_INTEL: */
106#define	PROC_8086	0x01	/* Intel 8086 */
107#define	PROC_286	0x02	/* Intel 80286 */
108#define	PROC_386	0x04	/* Intel 80386 */
109#define	PROC_486	0x08	/* Intel 80486 */
110#define	PROC_PENTIUM	0x10	/* Intel 586 aka P5 aka Pentium */
111#define	PROC_SEXIUM	0x20	/* Intel 686 aka P6 aka Pentium Pro or MMX */
112#define	PROC_ITANIUM	0x40	/* Intel Itanium 64 bit */
113
114/* PROC_i960: */
115#define	PROC_960RX	0x01	/* Intel 80960RP/RD */
116#define	PROC_960HX	0x02	/* Intel 80960HA/HD/HT */
117#define	PROC_960RN	0x03	/* Intel 80960RN/RM */
118#define	PROC_960RS	0x04	/* Intel 80960RS */
119#define	PROC_80303	0x05	/* Intel 80303 (ZION) */
120
121/* PROC_MOTOROLA: */
122#define	PROC_68000	0x01	/* Motorola 68000 */
123#define	PROC_68010	0x02	/* Motorola 68010 */
124#define	PROC_68020	0x04	/* Motorola 68020 */
125#define	PROC_68030	0x08	/* Motorola 68030 */
126#define	PROC_68040	0x10	/* Motorola 68040 */
127
128/* PROC_POWERPC */
129#define	PROC_PPC601		0x01	/* PowerPC 601 */
130#define	PROC_PPC603		0x02	/* PowerPC 603 */
131#define	PROC_PPC604		0x04	/* PowerPC 604 */
132
133/* PROC_MIPS */
134#define	PROC_R4000	0x01	/* MIPS R4000 */
135#define	PROC_RM7000	0x02	/* MIPS RM7000 */
136
137/* Filetype - sigBYTE dsFiletype;	DISTINCT VALUES */
138/* ------------------------------------------------------------------ */
139#define	FT_EXECUTABLE	0	/* Executable Program */
140#define	FT_SCRIPT	1	/* Script/Batch File??? */
141#define	FT_HBADRVR	2	/* HBA Driver */
142#define	FT_OTHERDRVR	3	/* Other Driver */
143#define	FT_IFS		4	/* Installable Filesystem Driver */
144#define	FT_ENGINE	5	/* DPT Engine */
145#define	FT_COMPDRVR	6	/* Compressed Driver Disk */
146#define	FT_LANGUAGE	7	/* Foreign Language file */
147#define	FT_FIRMWARE	8	/* Downloadable or actual Firmware */
148#define	FT_COMMMODL	9	/* Communications Module */
149#define	FT_INT13	10	/* INT 13 style HBA Driver */
150#define	FT_HELPFILE	11	/* Help file */
151#define	FT_LOGGER	12	/* Event Logger */
152#define	FT_INSTALL	13	/* An Install Program */
153#define	FT_LIBRARY	14	/* Storage Manager Real-Mode Calls */
154#define	FT_RESOURCE	15	/* Storage Manager Resource File */
155#define	FT_MODEM_DB	16	/* Storage Manager Modem Database */
156#define	FT_DMI		17	/* DMI component interface */
157
158/* Filetype flags - sigBYTE dsFiletypeFlags;	FLAG BITS */
159/* ------------------------------------------------------------------ */
160#define	FTF_DLL		0x01	/* Dynamic Link Library */
161#define	FTF_NLM		0x02	/* Netware Loadable Module */
162#define	FTF_OVERLAYS	0x04	/* Uses overlays */
163#define	FTF_DEBUG	0x08	/* Debug version */
164#define	FTF_TSR		0x10	/* TSR */
165#define	FTF_SYS		0x20	/* DOS Loadable driver */
166#define	FTF_PROTECTED	0x40	/* Runs in protected mode */
167#define	FTF_APP_SPEC	0x80	/* Application Specific */
168#define	FTF_ROM		(FTF_SYS|FTF_TSR)	/* Special Case */
169
170/* OEM - sigBYTE dsOEM;		DISTINCT VALUES */
171/* ------------------------------------------------------------------ */
172#define	OEM_DPT		0	/* DPT */
173#define	OEM_ATT		1	/* ATT */
174#define	OEM_NEC		2	/* NEC */
175#define	OEM_ALPHA	3	/* Alphatronix */
176#define	OEM_AST		4	/* AST */
177#define	OEM_OLIVETTI	5	/* Olivetti */
178#define	OEM_SNI		6	/* Siemens/Nixdorf */
179#define	OEM_SUN		7	/* SUN Microsystems */
180#define	OEM_ADAPTEC	8	/* Adaptec */
181
182/* Operating System  - sigLONG dsOS;	FLAG BITS */
183/* ------------------------------------------------------------------ */
184#define	OS_DOS		0x00000001 /* PC/MS-DOS				*/
185#define	OS_WINDOWS	0x00000002 /* Microsoft Windows 3.x		*/
186#define	OS_WINDOWS_NT	0x00000004 /* Microsoft Windows NT		*/
187#define	OS_OS2M		0x00000008 /* OS/2 1.2.x,MS 1.3.0,IBM 1.3.x - Monolithic */
188#define	OS_OS2L		0x00000010 /* Microsoft OS/2 1.301 - LADDR	*/
189#define	OS_OS22x	0x00000020 /* IBM OS/2 2.x			*/
190#define	OS_NW286	0x00000040 /* Novell NetWare 286		*/
191#define	OS_NW386	0x00000080 /* Novell NetWare 386		*/
192#define	OS_GEN_UNIX	0x00000100 /* Generic Unix			*/
193#define	OS_SCO_UNIX	0x00000200 /* SCO Unix				*/
194#define	OS_ATT_UNIX	0x00000400 /* ATT Unix				*/
195#define	OS_UNIXWARE	0x00000800 /* USL Unix				*/
196#define	OS_INT_UNIX	0x00001000 /* Interactive Unix			*/
197#define	OS_SOLARIS	0x00002000 /* SunSoft Solaris			*/
198#define	OS_QNX		0x00004000 /* QNX for Tom Moch			*/
199#define	OS_NEXTSTEP	0x00008000 /* NeXTSTEP/OPENSTEP/MACH		*/
200#define	OS_BANYAN	0x00010000 /* Banyan Vines			*/
201#define	OS_OLIVETTI_UNIX 0x00020000/* Olivetti Unix			*/
202#define	OS_MAC_OS		0x00040000 /* Mac OS				*/
203#define	OS_WINDOWS_95	0x00080000 /* Microsoft Windows '95		*/
204#define	OS_NW4x			0x00100000 /* Novell Netware 4.x		*/
205#define	OS_BSDI_UNIX	0x00200000 /* BSDi Unix BSD/OS 2.0 and up	*/
206#define	OS_AIX_UNIX	0x00400000 /* AIX Unix				*/
207#define	OS_FREE_BSD		0x00800000 /* FreeBSD Unix			*/
208#define	OS_LINUX		0x01000000 /* Linux				*/
209#define	OS_DGUX_UNIX	0x02000000 /* Data General Unix			*/
210#define	OS_SINIX_N	0x04000000 /* SNI SINIX-N			*/
211#define	OS_PLAN9		0x08000000 /* ATT Plan 9			*/
212#define	OS_TSX			0x10000000 /* SNH TSX-32			*/
213#define	OS_WINDOWS_98	0x20000000 /* Microsoft Windows '98	*/
214#define	OS_NW5x			0x40000000 /* Novell Netware 5x */
215
216#define	OS_OTHER	0x80000000 /* Other				*/
217
218/* Capabilities - sigWORD dsCapabilities;	 FLAG BITS */
219/* ------------------------------------------------------------------ */
220#define	CAP_RAID0	0x0001	/* RAID-0 */
221#define	CAP_RAID1	0x0002	/* RAID-1 */
222#define	CAP_RAID3	0x0004	/* RAID-3 */
223#define	CAP_RAID5	0x0008	/* RAID-5 */
224#define	CAP_SPAN	0x0010	/* Spanning */
225#define	CAP_PASS	0x0020	/* Provides passthrough */
226#define	CAP_OVERLAP	0x0040	/* Passthrough supports overlapped commands */
227#define	CAP_ASPI	0x0080	/* Supports ASPI Command Requests */
228#define	CAP_ABOVE16MB	0x0100	/* ISA Driver supports greater than 16MB */
229#define	CAP_EXTEND	0x8000	/* Extended info appears after description */
230#ifdef SNI_MIPS
231#define	CAP_CACHEMODE	0x1000	/* dpt_force_cache is set in driver */
232#endif
233
234/* Devices Supported - sigWORD dsDeviceSupp;	FLAG BITS */
235/* ------------------------------------------------------------------ */
236#define	DEV_DASD	0x0001	/* DASD (hard drives) */
237#define	DEV_TAPE	0x0002	/* Tape drives */
238#define	DEV_PRINTER	0x0004	/* Printers */
239#define	DEV_PROC	0x0008	/* Processors */
240#define	DEV_WORM	0x0010	/* WORM drives */
241#define	DEV_CDROM	0x0020	/* CD-ROM drives */
242#define	DEV_SCANNER	0x0040	/* Scanners */
243#define	DEV_OPTICAL	0x0080	/* Optical Drives */
244#define	DEV_JUKEBOX	0x0100	/* Jukebox */
245#define	DEV_COMM	0x0200	/* Communications Devices */
246#define	DEV_OTHER	0x0400	/* Other Devices */
247#define	DEV_ALL		0xFFFF	/* All SCSI Devices */
248
249/* Adapters Families Supported - sigWORD dsAdapterSupp; FLAG BITS */
250/* ------------------------------------------------------------------ */
251#define	ADF_2001	0x0001	/* PM2001	    */
252#define	ADF_2012A	0x0002	/* PM2012A	    */
253#define	ADF_PLUS_ISA	0x0004	/* PM2011,PM2021    */
254#define	ADF_PLUS_EISA	0x0008	/* PM2012B,PM2022   */
255#define	ADF_SC3_ISA	0x0010	/* PM2021	    */
256#define	ADF_SC3_EISA	0x0020	/* PM2022,PM2122, etc */
257#define	ADF_SC3_PCI	0x0040	/* SmartCache III PCI */
258#define	ADF_SC4_ISA	0x0080	/* SmartCache IV ISA */
259#define	ADF_SC4_EISA	0x0100	/* SmartCache IV EISA */
260#define	ADF_SC4_PCI	0x0200	/* SmartCache IV PCI */
261#define	ADF_SC5_PCI	0x0400	/* Fifth Generation I2O products */
262/*
263 *	Combinations of products
264 */
265#define	ADF_ALL_2000	(ADF_2001|ADF_2012A)
266#define	ADF_ALL_PLUS	(ADF_PLUS_ISA|ADF_PLUS_EISA)
267#define	ADF_ALL_SC3	(ADF_SC3_ISA|ADF_SC3_EISA|ADF_SC3_PCI)
268#define	ADF_ALL_SC4	(ADF_SC4_ISA|ADF_SC4_EISA|ADF_SC4_PCI)
269#define	ADF_ALL_SC5	(ADF_SC5_PCI)
270/* All EATA Cacheing Products */
271#define	ADF_ALL_CACHE	(ADF_ALL_PLUS|ADF_ALL_SC3|ADF_ALL_SC4)
272/* All EATA Bus Mastering Products */
273#define	ADF_ALL_MASTER	(ADF_2012A|ADF_ALL_CACHE)
274/* All EATA Adapter Products */
275#define	ADF_ALL_EATA	(ADF_2001|ADF_ALL_MASTER)
276#define	ADF_ALL		ADF_ALL_EATA
277
278/* Application - sigWORD dsApplication;		FLAG BITS */
279/* ------------------------------------------------------------------ */
280#define	APP_DPTMGR	0x0001	/* DPT Storage Manager */
281#define	APP_ENGINE	0x0002	/* DPT Engine */
282#define	APP_SYTOS	0x0004	/* Sytron Sytos Plus */
283#define	APP_CHEYENNE	0x0008	/* Cheyenne ARCServe + ARCSolo */
284#define	APP_MSCDEX	0x0010	/* Microsoft CD-ROM extensions */
285#define	APP_NOVABACK	0x0020	/* NovaStor Novaback */
286#define	APP_AIM		0x0040	/* Archive Information Manager */
287
288/* Requirements - sigBYTE dsRequirements;	  FLAG BITS		*/
289/* ------------------------------------------------------------------	*/
290#define	REQ_SMARTROM	0x01	/* Requires SmartROM to be present	*/
291#define	REQ_DPTDDL	0x02	/* Requires DPTDDL.SYS to be loaded	*/
292#define	REQ_HBA_DRIVER	0x04	/* Requires an HBA driver to be loaded	*/
293#define	REQ_ASPI_TRAN	0x08	/* Requires an ASPI Transport Modules	*/
294#define	REQ_ENGINE	0x10	/* Requires a DPT Engine to be loaded	*/
295#define	REQ_COMM_ENG	0x20	/* Requires a DPT Communications Engine */
296
297/* ------------------------------------------------------------------	*/
298/* Requirements - sigWORD dsFirmware;	      FLAG BITS			*/
299/* ------------------------------------------------------------------	*/
300#define	dsFirmware dsApplication
301#define	FW_DNLDSIZE16_OLD	0x0000	  /* 0..3 DownLoader Size 16K - TO SUPPORT OLD IMAGES */
302#define	FW_DNLDSIZE16k	  0x0000    /* 0..3 DownLoader Size 16k		    */
303#define	FW_DNLDSIZE16	  0x0001    /* 0..3 DownLoader Size 16K		*/
304#define	FW_DNLDSIZE32	  0x0002    /* 0..3 DownLoader Size 32K		*/
305#define	FW_DNLDSIZE64	  0x0004    /* 0..3 DownLoader Size 64K		*/
306#define	FW_DNLDSIZE0	  0x000f    /* 0..3 DownLoader Size 0K - NONE	*/
307#define	FW_DNLDSIZE_NONE	0x000F	  /* 0..3 DownLoader Size - NONE      */
308
309		/* Code Offset is position of the code within the ROM CODE Segment */
310#define	FW_DNLDR_TOP	  0x0000	/* 12 DownLoader Position (0=Top, 1=Bottom) */
311#define	FW_DNLDR_BTM	  0x1000	/* 12 DownLoader Position (0=Top, 1=Bottom) Dominator */
312
313#define	FW_LOAD_BTM		  0x0000	/* 13 Code Offset (0=Btm, 1=Top) MIPS	*/
314#define	FW_LOAD_TOP		  0x2000	/* 13 Code Offset (0=Btm, 1=Top) i960	*/
315
316#define	FW_SIG_VERSION1	  0x0000    /* 15..14 Version Bits 0=Ver1		*/
317#define	FW_SIG_VERSION2	  0x4000	/* 15..14 Version Bits 1=Ver2	    */
318
319/*
320				0..3   Downloader Size (Value * 16K)
321
322				4
323				5
324				6
325				7
326
327				8
328				9
329				10
330				11
331
332				12		Downloader Position (0=Top of Image  1= Bottom of Image (Dominator) )
333				13		Load Offset (0=BTM (MIPS) -- 1=TOP (960) )
334				14..15	F/W Sig Version (0=Ver1)
335*/
336
337/* ------------------------------------------------------------------	*/
338/* Sub System Vendor IDs - The PCI Sub system and vendor IDs for each	*/
339/* Adaptec Raid controller						*/
340/* ------------------------------------------------------------------	*/
341#define	PM1554U2_SUB_ID		 0xC0011044
342#define	PM1654U2_SUB_ID		 0xC0021044
343#define	PM1564U3_1_SUB_ID    0xC0031044
344#define	PM1564U3_2_SUB_ID    0xC0041044
345#define	PM1554U2_NOACPI_SUB_ID	    0xC0051044
346#define	PM2554U2_SUB_ID	     0xC00A1044
347#define	PM2654U2_SUB_ID	     0xC00B1044
348#define	PM2664U3_1_SUB_ID    0xC00C1044
349#define	PM2664U3_2_SUB_ID    0xC00D1044
350#define	PM2554U2_NOACPI_SUB_ID	    0xC00E1044
351#define	PM2654U2_NOACPI_SUB_ID	    0xC00F1044
352#define	PM3754U2_SUB_ID	     0xC0141044
353#define	PM3755U2B_SUB_ID     0xC0151044
354#define	PM3755F_SUB_ID	     0xC0161044
355#define	PM3757U2_1_SUB_ID    0xC01E1044
356#define	PM3757U2_2_SUB_ID    0xC01F1044
357#define	PM3767U3_2_SUB_ID    0xC0201044
358#define	PM3767U3_4_SUB_ID    0xC0211044
359#define	PM2865U3_1_SUB_ID    0xC0281044
360#define	PM2865U3_2_SUB_ID    0xC0291044
361#define	PM2865F_SUB_ID	     0xC02A1044
362#define	ADPT2000S_1_SUB_ID	 0xC03C1044
363#define	ADPT2000S_2_SUB_ID	 0xC03D1044
364#define	ADPT2000F_SUB_ID	 0xC03E1044
365#define	ADPT3000S_1_SUB_ID	 0xC0461044
366#define	ADPT3000S_2_SUB_ID	 0xC0471044
367#define	ADPT3000F_SUB_ID	 0xC0481044
368#define	ADPT5000S_1_SUB_ID	 0xC0501044
369#define	ADPT5000S_2_SUB_ID	 0xC0511044
370#define	ADPT5000F_SUB_ID	 0xC0521044
371#define	ADPT1000UDMA_SUB_ID	 0xC05A1044
372#define	ADPT1000UDMA_DAC_SUB_ID	 0xC05B1044
373#define	ADPTI2O_DEVICE_ID	 0xa501
374#define	ADPTDOMINATOR_DEVICE_ID	 0xa511
375#define	ADPTDOMINATOR_SUB_ID_START   0xC0321044
376#define	ADPTDOMINATOR_SUB_ID_END     0xC03b1044
377
378
379
380/* ------------------------------------------------------------------	*/
381/* ------------------------------------------------------------------	*/
382/* ------------------------------------------------------------------	*/
383
384/*
385 * You may adjust dsDescription_size with an override to a value less than
386 * 50 so that the structure allocates less real space.
387 */
388#if (!defined(dsDescription_size))
389# define dsDescription_size 50
390#endif
391
392typedef struct dpt_sig {
393    char    dsSignature[6];	 /* ALWAYS "dPtSiG" */
394    sigBYTE dsSigVersion;	 /* signature version (currently 1) */
395    sigBYTE dsProcessorFamily;	 /* what type of processor */
396    sigBYTE dsProcessor;	 /* precise processor */
397    sigBYTE dsFiletype;		 /* type of file */
398    sigBYTE dsFiletypeFlags;	 /* flags to specify load type, etc. */
399    sigBYTE dsOEM;		 /* OEM file was created for */
400    sigLONG dsOS;		 /* which Operating systems */
401    sigWORD dsCapabilities;	 /* RAID levels, etc. */
402    sigWORD dsDeviceSupp;	 /* Types of SCSI devices supported */
403    sigWORD dsAdapterSupp;	 /* DPT adapter families supported */
404    sigWORD dsApplication;	 /* applications file is for */
405    sigBYTE dsRequirements;	 /* Other driver dependencies */
406    sigBYTE dsVersion;		 /* 1 */
407    sigBYTE dsRevision;		 /* 'J' */
408    sigBYTE dsSubRevision;	 /* '9'	  ' ' if N/A */
409    sigBYTE dsMonth;		 /* creation month */
410    sigBYTE dsDay;		 /* creation day */
411    sigBYTE dsYear;		 /* creation year since 1980 (1993=13) */
412    /* description (NULL terminated) */
413    char  dsDescription[dsDescription_size];
414} dpt_sig_S;
415/* 32 bytes minimum - with no description.  Put NULL at description[0] */
416/* 81 bytes maximum - with 49 character description plus NULL. */
417
418#if defined __bsdi__
419#ifndef PACK
420#define	PACK __attribute__ ((packed))
421#endif
422typedef struct dpt_sig_Packed {
423    char    dsSignature[6] PACK;      /* ALWAYS "dPtSiG" */
424    sigBYTE dsSigVersion PACK;	      /* signature version (currently 1) */
425    sigBYTE dsProcessorFamily PACK;   /* what type of processor */
426    sigBYTE dsProcessor PACK;	      /* precise processor */
427    sigBYTE dsFiletype PACK;	      /* type of file */
428    sigBYTE dsFiletypeFlags PACK;     /* flags to specify load type, etc. */
429    sigBYTE dsOEM PACK;		      /* OEM file was created for */
430    sigLONG dsOS PACK;		      /* which Operating systems */
431    sigWORD dsCapabilities PACK;      /* RAID levels, etc. */
432    sigWORD dsDeviceSupp PACK;	      /* Types of SCSI devices supported */
433    sigWORD dsAdapterSupp PACK;	      /* DPT adapter families supported */
434    sigWORD dsApplication PACK;	      /* applications file is for */
435    sigBYTE dsRequirements PACK;      /* Other driver dependencies */
436    sigBYTE dsVersion PACK;	      /* 1 */
437    sigBYTE dsRevision PACK;	      /* 'J' */
438    sigBYTE dsSubRevision PACK;	      /* '9'   ' ' if N/A */
439    sigBYTE dsMonth PACK;	      /* creation month */
440    sigBYTE dsDay PACK;		      /* creation day */
441    sigBYTE dsYear PACK;	      /* creation year since 1980 (1993=13) */
442    /* description (NULL terminated) */
443    char  dsDescription[dsDescription_size] PACK;
444} dpt_sig_S_Packed;
445#define	PACKED_SIG_SIZE sizeof(dpt_sig_S_Packed)
446#endif
447/* This line added at Roycroft's request */
448/* Microsoft's NT compiler gets confused if you do a pack and don't */
449/* restore it. */
450
451#ifndef NO_UNPACK
452#if defined(_DPT_AIX)
453#pragma options align=reset
454#elif defined(UNPACK_FOUR)
455#pragma pack(4)
456#else
457#pragma pack()
458#endif	/* aix */
459#endif
460/* For the Macintosh */
461#ifdef STRUCTALIGNMENTSUPPORTED
462#pragma options align=reset
463#endif
464
465#endif
466