1139749Simp/*-
265312Smsmith * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
382092Sscottl * Copyright (c) 2000-2001 Adaptec Corporation.
465312Smsmith * All rights reserved.
565312Smsmith *
665312Smsmith * Redistribution and use in source form, with or without modification, are
765312Smsmith * permitted provided that redistributions of source code must retain the
865312Smsmith * above copyright notice, this list of conditions and the following disclaimer.
965312Smsmith *
1065312Smsmith * This software is provided `as is' by Distributed Processing Technology and
1165312Smsmith * any express or implied warranties, including, but not limited to, the
1265312Smsmith * implied warranties of merchantability and fitness for a particular purpose,
1365312Smsmith * are disclaimed. In no event shall Distributed Processing Technology be
1465312Smsmith * liable for any direct, indirect, incidental, special, exemplary or
1565312Smsmith * consequential damages (including, but not limited to, procurement of
1665312Smsmith * substitute goods or services; loss of use, data, or profits; or business
1765312Smsmith * interruptions) however caused and on any theory of liability, whether in
1865312Smsmith * contract, strict liability, or tort (including negligence or otherwise)
1965312Smsmith * arising in any way out of the use of this driver software, even if advised
2065312Smsmith * of the possibility of such damage.
2165312Smsmith *
2287826Sobrien * $FreeBSD$
2365312Smsmith */
2465312Smsmith
2565312Smsmith#ifndef __DPTSIG_H_
2696615Sobrien#define	__DPTSIG_H_
2765312Smsmith#ifdef _SINIX_ADDON
2865312Smsmith#include "dpt.h"
2965312Smsmith#endif
3096554Sobrien/* DPT SIGNATURE SPEC AND HEADER FILE				*/
3196554Sobrien/* Signature Version 1 (sorry no 'A')				*/
3265312Smsmith
3396554Sobrien/* to make sure we are talking the same size under all OS's	*/
3465312Smsmithtypedef unsigned char sigBYTE;
3565312Smsmithtypedef unsigned short sigWORD;
3665312Smsmith#if (defined(_MULTI_DATAMODEL) && defined(sun) && !defined(_ILP32))
3765312Smsmithtypedef uint32_t sigLONG;
3865312Smsmith#else
3965312Smsmithtypedef unsigned long sigLONG;
4065312Smsmith#endif
4165312Smsmith
4265312Smsmith/*
4365312Smsmith * use sigWORDLittleEndian for:
4465312Smsmith *  dsCapabilities
4565312Smsmith *  dsDeviceSupp
4665312Smsmith *  dsAdapterSupp
4765312Smsmith *  dsApplication
4865312Smsmith * use sigLONGLittleEndian for:
4996554Sobrien *	dsOS
5065312Smsmith * so that the sig can be standardised to Little Endian
5165312Smsmith */
5265312Smsmith#if (defined(_DPT_BIG_ENDIAN))
5365312Smsmith# define sigWORDLittleEndian(x) ((((x)&0xFF)<<8)|(((x)>>8)&0xFF))
5465312Smsmith# define sigLONGLittleEndian(x) \
5596554Sobrien	((((x)&0xFF)<<24) |		\
5696554Sobrien	 (((x)&0xFF00)<<8) |	\
5796554Sobrien	 (((x)&0xFF0000L)>>8) | \
5896554Sobrien	 (((x)&0xFF000000L)>>24))
5965312Smsmith#else
6065312Smsmith# define sigWORDLittleEndian(x) (x)
6165312Smsmith# define sigLONGLittleEndian(x) (x)
6265312Smsmith#endif
6365312Smsmith
6496554Sobrien/* must make sure the structure is not word or double-word aligned	*/
6596554Sobrien/* ---------------------------------------------------------------	*/
6696554Sobrien/* Borland will ignore the following pragma:				*/
6796554Sobrien/* Word alignment is OFF by default.  If in the, IDE make		*/
6896554Sobrien/* sure that Options | Compiler | Code Generation | Word Alignment	*/
6996554Sobrien/* is not checked.  If using BCC, do not use the -a option.		*/
7065312Smsmith
7165312Smsmith#ifndef NO_PACK
7296614Sobrien#if defined(_DPT_AIX)
7365312Smsmith#pragma options align=packed
7465312Smsmith#else
7565312Smsmith#pragma pack(1)
7696554Sobrien#endif	/* aix */
7765312Smsmith#endif
7865312Smsmith/* For the Macintosh */
79153084Sru#ifdef STRUCTALIGNMENTSUPPORTED
8065312Smsmith#pragma options align=mac68k
8165312Smsmith#endif
8265312Smsmith
8365312Smsmith
8465312Smsmith/* Current Signature Version - sigBYTE dsSigVersion; */
8565312Smsmith/* ------------------------------------------------------------------ */
8696615Sobrien#define	SIG_VERSION 1
8765312Smsmith
8865312Smsmith/* Processor Family - sigBYTE dsProcessorFamily;  DISTINCT VALUES */
8965312Smsmith/* ------------------------------------------------------------------ */
9065312Smsmith/* What type of processor the file is meant to run on. */
9165312Smsmith/* This will let us know whether to read sigWORDs as high/low or low/high. */
9296615Sobrien#define	PROC_INTEL	0x00	/* Intel 80x86 */
9396615Sobrien#define	PROC_MOTOROLA	0x01	/* Motorola 68K */
9496615Sobrien#define	PROC_MIPS4000	0x02	/* MIPS RISC 4000 */
9596615Sobrien#define	PROC_MIPS	PROC_MIPS4000 /* MIPS RISC */
9696615Sobrien#define	PROC_ALPHA	0x03	/* DEC Alpha */
9796615Sobrien#define	PROC_POWERPC	0x04	/* IBM Power PC */
9896615Sobrien#define	PROC_i960	0x05	/* Intel i960 */
9996615Sobrien#define	PROC_ULTRASPARC 0x06	/* SPARC processor */
10065312Smsmith
10196554Sobrien/* Specific Minimim Processor - sigBYTE dsProcessor;	FLAG BITS */
10265312Smsmith/* ------------------------------------------------------------------ */
10365312Smsmith/* Different bit definitions dependent on processor_family */
10465312Smsmith
10565312Smsmith/* PROC_INTEL: */
10696615Sobrien#define	PROC_8086	0x01	/* Intel 8086 */
10796615Sobrien#define	PROC_286	0x02	/* Intel 80286 */
10896615Sobrien#define	PROC_386	0x04	/* Intel 80386 */
10996615Sobrien#define	PROC_486	0x08	/* Intel 80486 */
11096615Sobrien#define	PROC_PENTIUM	0x10	/* Intel 586 aka P5 aka Pentium */
11196615Sobrien#define	PROC_SEXIUM	0x20	/* Intel 686 aka P6 aka Pentium Pro or MMX */
11296615Sobrien#define	PROC_ITANIUM	0x40	/* Intel Itanium 64 bit */
11365312Smsmith
11465312Smsmith/* PROC_i960: */
11596615Sobrien#define	PROC_960RX	0x01	/* Intel 80960RP/RD */
11696615Sobrien#define	PROC_960HX	0x02	/* Intel 80960HA/HD/HT */
11796615Sobrien#define	PROC_960RN	0x03	/* Intel 80960RN/RM */
11896615Sobrien#define	PROC_960RS	0x04	/* Intel 80960RS */
11996615Sobrien#define	PROC_80303	0x05	/* Intel 80303 (ZION) */
12065312Smsmith
12165312Smsmith/* PROC_MOTOROLA: */
12296615Sobrien#define	PROC_68000	0x01	/* Motorola 68000 */
12396615Sobrien#define	PROC_68010	0x02	/* Motorola 68010 */
12496615Sobrien#define	PROC_68020	0x04	/* Motorola 68020 */
12596615Sobrien#define	PROC_68030	0x08	/* Motorola 68030 */
12696615Sobrien#define	PROC_68040	0x10	/* Motorola 68040 */
12765312Smsmith
12865312Smsmith/* PROC_POWERPC */
12996615Sobrien#define	PROC_PPC601		0x01	/* PowerPC 601 */
13096615Sobrien#define	PROC_PPC603		0x02	/* PowerPC 603 */
13196615Sobrien#define	PROC_PPC604		0x04	/* PowerPC 604 */
13265312Smsmith
13365312Smsmith/* PROC_MIPS */
13496615Sobrien#define	PROC_R4000	0x01	/* MIPS R4000 */
13596615Sobrien#define	PROC_RM7000	0x02	/* MIPS RM7000 */
13665312Smsmith
13796554Sobrien/* Filetype - sigBYTE dsFiletype;	DISTINCT VALUES */
13865312Smsmith/* ------------------------------------------------------------------ */
13996615Sobrien#define	FT_EXECUTABLE	0	/* Executable Program */
14096615Sobrien#define	FT_SCRIPT	1	/* Script/Batch File??? */
14196615Sobrien#define	FT_HBADRVR	2	/* HBA Driver */
14296615Sobrien#define	FT_OTHERDRVR	3	/* Other Driver */
14396615Sobrien#define	FT_IFS		4	/* Installable Filesystem Driver */
14496615Sobrien#define	FT_ENGINE	5	/* DPT Engine */
14596615Sobrien#define	FT_COMPDRVR	6	/* Compressed Driver Disk */
14696615Sobrien#define	FT_LANGUAGE	7	/* Foreign Language file */
14796615Sobrien#define	FT_FIRMWARE	8	/* Downloadable or actual Firmware */
14896615Sobrien#define	FT_COMMMODL	9	/* Communications Module */
14996615Sobrien#define	FT_INT13	10	/* INT 13 style HBA Driver */
15096615Sobrien#define	FT_HELPFILE	11	/* Help file */
15196615Sobrien#define	FT_LOGGER	12	/* Event Logger */
15296615Sobrien#define	FT_INSTALL	13	/* An Install Program */
15396615Sobrien#define	FT_LIBRARY	14	/* Storage Manager Real-Mode Calls */
15496615Sobrien#define	FT_RESOURCE	15	/* Storage Manager Resource File */
15596615Sobrien#define	FT_MODEM_DB	16	/* Storage Manager Modem Database */
15696615Sobrien#define	FT_DMI		17	/* DMI component interface */
15765312Smsmith
15896554Sobrien/* Filetype flags - sigBYTE dsFiletypeFlags;	FLAG BITS */
15965312Smsmith/* ------------------------------------------------------------------ */
16096615Sobrien#define	FTF_DLL		0x01	/* Dynamic Link Library */
16196615Sobrien#define	FTF_NLM		0x02	/* Netware Loadable Module */
16296615Sobrien#define	FTF_OVERLAYS	0x04	/* Uses overlays */
16396615Sobrien#define	FTF_DEBUG	0x08	/* Debug version */
16496615Sobrien#define	FTF_TSR		0x10	/* TSR */
16596615Sobrien#define	FTF_SYS		0x20	/* DOS Loadable driver */
16696615Sobrien#define	FTF_PROTECTED	0x40	/* Runs in protected mode */
16796615Sobrien#define	FTF_APP_SPEC	0x80	/* Application Specific */
16896615Sobrien#define	FTF_ROM		(FTF_SYS|FTF_TSR)	/* Special Case */
16965312Smsmith
17096554Sobrien/* OEM - sigBYTE dsOEM;		DISTINCT VALUES */
17165312Smsmith/* ------------------------------------------------------------------ */
17296615Sobrien#define	OEM_DPT		0	/* DPT */
17396615Sobrien#define	OEM_ATT		1	/* ATT */
17496615Sobrien#define	OEM_NEC		2	/* NEC */
17596615Sobrien#define	OEM_ALPHA	3	/* Alphatronix */
17696615Sobrien#define	OEM_AST		4	/* AST */
17796615Sobrien#define	OEM_OLIVETTI	5	/* Olivetti */
17896615Sobrien#define	OEM_SNI		6	/* Siemens/Nixdorf */
17996615Sobrien#define	OEM_SUN		7	/* SUN Microsystems */
18096615Sobrien#define	OEM_ADAPTEC	8	/* Adaptec */
18165312Smsmith
18296554Sobrien/* Operating System  - sigLONG dsOS;	FLAG BITS */
18365312Smsmith/* ------------------------------------------------------------------ */
18496615Sobrien#define	OS_DOS		0x00000001 /* PC/MS-DOS				*/
18596615Sobrien#define	OS_WINDOWS	0x00000002 /* Microsoft Windows 3.x		*/
18696615Sobrien#define	OS_WINDOWS_NT	0x00000004 /* Microsoft Windows NT		*/
18796615Sobrien#define	OS_OS2M		0x00000008 /* OS/2 1.2.x,MS 1.3.0,IBM 1.3.x - Monolithic */
18896615Sobrien#define	OS_OS2L		0x00000010 /* Microsoft OS/2 1.301 - LADDR	*/
18996615Sobrien#define	OS_OS22x	0x00000020 /* IBM OS/2 2.x			*/
19096615Sobrien#define	OS_NW286	0x00000040 /* Novell NetWare 286		*/
19196615Sobrien#define	OS_NW386	0x00000080 /* Novell NetWare 386		*/
19296615Sobrien#define	OS_GEN_UNIX	0x00000100 /* Generic Unix			*/
19396615Sobrien#define	OS_SCO_UNIX	0x00000200 /* SCO Unix				*/
19496615Sobrien#define	OS_ATT_UNIX	0x00000400 /* ATT Unix				*/
19596615Sobrien#define	OS_UNIXWARE	0x00000800 /* USL Unix				*/
19696615Sobrien#define	OS_INT_UNIX	0x00001000 /* Interactive Unix			*/
19796615Sobrien#define	OS_SOLARIS	0x00002000 /* SunSoft Solaris			*/
19896615Sobrien#define	OS_QNX		0x00004000 /* QNX for Tom Moch			*/
19996615Sobrien#define	OS_NEXTSTEP	0x00008000 /* NeXTSTEP/OPENSTEP/MACH		*/
20096615Sobrien#define	OS_BANYAN	0x00010000 /* Banyan Vines			*/
20196615Sobrien#define	OS_OLIVETTI_UNIX 0x00020000/* Olivetti Unix			*/
20296615Sobrien#define	OS_MAC_OS		0x00040000 /* Mac OS				*/
20396615Sobrien#define	OS_WINDOWS_95	0x00080000 /* Microsoft Windows '95		*/
20496615Sobrien#define	OS_NW4x			0x00100000 /* Novell Netware 4.x		*/
20596615Sobrien#define	OS_BSDI_UNIX	0x00200000 /* BSDi Unix BSD/OS 2.0 and up	*/
20696615Sobrien#define	OS_AIX_UNIX	0x00400000 /* AIX Unix				*/
20796615Sobrien#define	OS_FREE_BSD		0x00800000 /* FreeBSD Unix			*/
20896615Sobrien#define	OS_LINUX		0x01000000 /* Linux				*/
20996615Sobrien#define	OS_DGUX_UNIX	0x02000000 /* Data General Unix			*/
21096615Sobrien#define	OS_SINIX_N	0x04000000 /* SNI SINIX-N			*/
21196615Sobrien#define	OS_PLAN9		0x08000000 /* ATT Plan 9			*/
21296615Sobrien#define	OS_TSX			0x10000000 /* SNH TSX-32			*/
21396615Sobrien#define	OS_WINDOWS_98	0x20000000 /* Microsoft Windows '98	*/
21496615Sobrien#define	OS_NW5x			0x40000000 /* Novell Netware 5x */
21565312Smsmith
21696615Sobrien#define	OS_OTHER	0x80000000 /* Other				*/
21765312Smsmith
21896554Sobrien/* Capabilities - sigWORD dsCapabilities;	 FLAG BITS */
21965312Smsmith/* ------------------------------------------------------------------ */
22096615Sobrien#define	CAP_RAID0	0x0001	/* RAID-0 */
22196615Sobrien#define	CAP_RAID1	0x0002	/* RAID-1 */
22296615Sobrien#define	CAP_RAID3	0x0004	/* RAID-3 */
22396615Sobrien#define	CAP_RAID5	0x0008	/* RAID-5 */
22496615Sobrien#define	CAP_SPAN	0x0010	/* Spanning */
22596615Sobrien#define	CAP_PASS	0x0020	/* Provides passthrough */
22696615Sobrien#define	CAP_OVERLAP	0x0040	/* Passthrough supports overlapped commands */
22796615Sobrien#define	CAP_ASPI	0x0080	/* Supports ASPI Command Requests */
22896615Sobrien#define	CAP_ABOVE16MB	0x0100	/* ISA Driver supports greater than 16MB */
22996615Sobrien#define	CAP_EXTEND	0x8000	/* Extended info appears after description */
23065312Smsmith#ifdef SNI_MIPS
23196615Sobrien#define	CAP_CACHEMODE	0x1000	/* dpt_force_cache is set in driver */
23265312Smsmith#endif
23365312Smsmith
23496554Sobrien/* Devices Supported - sigWORD dsDeviceSupp;	FLAG BITS */
23565312Smsmith/* ------------------------------------------------------------------ */
23696615Sobrien#define	DEV_DASD	0x0001	/* DASD (hard drives) */
23796615Sobrien#define	DEV_TAPE	0x0002	/* Tape drives */
23896615Sobrien#define	DEV_PRINTER	0x0004	/* Printers */
23996615Sobrien#define	DEV_PROC	0x0008	/* Processors */
24096615Sobrien#define	DEV_WORM	0x0010	/* WORM drives */
24196615Sobrien#define	DEV_CDROM	0x0020	/* CD-ROM drives */
24296615Sobrien#define	DEV_SCANNER	0x0040	/* Scanners */
24396615Sobrien#define	DEV_OPTICAL	0x0080	/* Optical Drives */
24496615Sobrien#define	DEV_JUKEBOX	0x0100	/* Jukebox */
24596615Sobrien#define	DEV_COMM	0x0200	/* Communications Devices */
24696615Sobrien#define	DEV_OTHER	0x0400	/* Other Devices */
24796615Sobrien#define	DEV_ALL		0xFFFF	/* All SCSI Devices */
24865312Smsmith
24965312Smsmith/* Adapters Families Supported - sigWORD dsAdapterSupp; FLAG BITS */
25065312Smsmith/* ------------------------------------------------------------------ */
25196615Sobrien#define	ADF_2001	0x0001	/* PM2001	    */
25296615Sobrien#define	ADF_2012A	0x0002	/* PM2012A	    */
25396615Sobrien#define	ADF_PLUS_ISA	0x0004	/* PM2011,PM2021    */
25496615Sobrien#define	ADF_PLUS_EISA	0x0008	/* PM2012B,PM2022   */
25596615Sobrien#define	ADF_SC3_ISA	0x0010	/* PM2021	    */
25696615Sobrien#define	ADF_SC3_EISA	0x0020	/* PM2022,PM2122, etc */
25796615Sobrien#define	ADF_SC3_PCI	0x0040	/* SmartCache III PCI */
25896615Sobrien#define	ADF_SC4_ISA	0x0080	/* SmartCache IV ISA */
25996615Sobrien#define	ADF_SC4_EISA	0x0100	/* SmartCache IV EISA */
26096615Sobrien#define	ADF_SC4_PCI	0x0200	/* SmartCache IV PCI */
26196615Sobrien#define	ADF_SC5_PCI	0x0400	/* Fifth Generation I2O products */
26265312Smsmith/*
26396554Sobrien *	Combinations of products
26465312Smsmith */
26596615Sobrien#define	ADF_ALL_2000	(ADF_2001|ADF_2012A)
26696615Sobrien#define	ADF_ALL_PLUS	(ADF_PLUS_ISA|ADF_PLUS_EISA)
26796615Sobrien#define	ADF_ALL_SC3	(ADF_SC3_ISA|ADF_SC3_EISA|ADF_SC3_PCI)
26896615Sobrien#define	ADF_ALL_SC4	(ADF_SC4_ISA|ADF_SC4_EISA|ADF_SC4_PCI)
26996615Sobrien#define	ADF_ALL_SC5	(ADF_SC5_PCI)
27065312Smsmith/* All EATA Cacheing Products */
27196615Sobrien#define	ADF_ALL_CACHE	(ADF_ALL_PLUS|ADF_ALL_SC3|ADF_ALL_SC4)
27265312Smsmith/* All EATA Bus Mastering Products */
27396615Sobrien#define	ADF_ALL_MASTER	(ADF_2012A|ADF_ALL_CACHE)
27465312Smsmith/* All EATA Adapter Products */
27596615Sobrien#define	ADF_ALL_EATA	(ADF_2001|ADF_ALL_MASTER)
27696615Sobrien#define	ADF_ALL		ADF_ALL_EATA
27765312Smsmith
27896554Sobrien/* Application - sigWORD dsApplication;		FLAG BITS */
27965312Smsmith/* ------------------------------------------------------------------ */
28096615Sobrien#define	APP_DPTMGR	0x0001	/* DPT Storage Manager */
28196615Sobrien#define	APP_ENGINE	0x0002	/* DPT Engine */
28296615Sobrien#define	APP_SYTOS	0x0004	/* Sytron Sytos Plus */
28396615Sobrien#define	APP_CHEYENNE	0x0008	/* Cheyenne ARCServe + ARCSolo */
28496615Sobrien#define	APP_MSCDEX	0x0010	/* Microsoft CD-ROM extensions */
28596615Sobrien#define	APP_NOVABACK	0x0020	/* NovaStor Novaback */
28696615Sobrien#define	APP_AIM		0x0040	/* Archive Information Manager */
28765312Smsmith
28896554Sobrien/* Requirements - sigBYTE dsRequirements;	  FLAG BITS		*/
28996554Sobrien/* ------------------------------------------------------------------	*/
29096615Sobrien#define	REQ_SMARTROM	0x01	/* Requires SmartROM to be present	*/
29196615Sobrien#define	REQ_DPTDDL	0x02	/* Requires DPTDDL.SYS to be loaded	*/
29296615Sobrien#define	REQ_HBA_DRIVER	0x04	/* Requires an HBA driver to be loaded	*/
29396615Sobrien#define	REQ_ASPI_TRAN	0x08	/* Requires an ASPI Transport Modules	*/
29496615Sobrien#define	REQ_ENGINE	0x10	/* Requires a DPT Engine to be loaded	*/
29596615Sobrien#define	REQ_COMM_ENG	0x20	/* Requires a DPT Communications Engine */
29665312Smsmith
29796554Sobrien/* ------------------------------------------------------------------	*/
29896554Sobrien/* Requirements - sigWORD dsFirmware;	      FLAG BITS			*/
29996554Sobrien/* ------------------------------------------------------------------	*/
30096615Sobrien#define	dsFirmware dsApplication
30196615Sobrien#define	FW_DNLDSIZE16_OLD	0x0000	  /* 0..3 DownLoader Size 16K - TO SUPPORT OLD IMAGES */
30296615Sobrien#define	FW_DNLDSIZE16k	  0x0000    /* 0..3 DownLoader Size 16k		    */
30396615Sobrien#define	FW_DNLDSIZE16	  0x0001    /* 0..3 DownLoader Size 16K		*/
30496615Sobrien#define	FW_DNLDSIZE32	  0x0002    /* 0..3 DownLoader Size 32K		*/
30596615Sobrien#define	FW_DNLDSIZE64	  0x0004    /* 0..3 DownLoader Size 64K		*/
30696615Sobrien#define	FW_DNLDSIZE0	  0x000f    /* 0..3 DownLoader Size 0K - NONE	*/
30796615Sobrien#define	FW_DNLDSIZE_NONE	0x000F	  /* 0..3 DownLoader Size - NONE      */
30865312Smsmith
30996554Sobrien		/* Code Offset is position of the code within the ROM CODE Segment */
31096615Sobrien#define	FW_DNLDR_TOP	  0x0000	/* 12 DownLoader Position (0=Top, 1=Bottom) */
31196615Sobrien#define	FW_DNLDR_BTM	  0x1000	/* 12 DownLoader Position (0=Top, 1=Bottom) Dominator */
31265312Smsmith
31396615Sobrien#define	FW_LOAD_BTM		  0x0000	/* 13 Code Offset (0=Btm, 1=Top) MIPS	*/
31496615Sobrien#define	FW_LOAD_TOP		  0x2000	/* 13 Code Offset (0=Btm, 1=Top) i960	*/
31582092Sscottl
31696615Sobrien#define	FW_SIG_VERSION1	  0x0000    /* 15..14 Version Bits 0=Ver1		*/
31796615Sobrien#define	FW_SIG_VERSION2	  0x4000	/* 15..14 Version Bits 1=Ver2	    */
31882092Sscottl
31965312Smsmith/*
32096554Sobrien				0..3   Downloader Size (Value * 16K)
32165312Smsmith
32296554Sobrien				4
32396554Sobrien				5
32496554Sobrien				6
32596554Sobrien				7
32665312Smsmith
32796554Sobrien				8
32896554Sobrien				9
32996554Sobrien				10
33096554Sobrien				11
33165312Smsmith
33296554Sobrien				12		Downloader Position (0=Top of Image  1= Bottom of Image (Dominator) )
33396554Sobrien				13		Load Offset (0=BTM (MIPS) -- 1=TOP (960) )
33496554Sobrien				14..15	F/W Sig Version (0=Ver1)
33565312Smsmith*/
33665312Smsmith
33796554Sobrien/* ------------------------------------------------------------------	*/
33896554Sobrien/* Sub System Vendor IDs - The PCI Sub system and vendor IDs for each	*/
33996554Sobrien/* Adaptec Raid controller						*/
34096554Sobrien/* ------------------------------------------------------------------	*/
34196615Sobrien#define	PM1554U2_SUB_ID		 0xC0011044
34296615Sobrien#define	PM1654U2_SUB_ID		 0xC0021044
34396615Sobrien#define	PM1564U3_1_SUB_ID    0xC0031044
34496615Sobrien#define	PM1564U3_2_SUB_ID    0xC0041044
34596615Sobrien#define	PM1554U2_NOACPI_SUB_ID	    0xC0051044
34696615Sobrien#define	PM2554U2_SUB_ID	     0xC00A1044
34796615Sobrien#define	PM2654U2_SUB_ID	     0xC00B1044
34896615Sobrien#define	PM2664U3_1_SUB_ID    0xC00C1044
34996615Sobrien#define	PM2664U3_2_SUB_ID    0xC00D1044
35096615Sobrien#define	PM2554U2_NOACPI_SUB_ID	    0xC00E1044
35196615Sobrien#define	PM2654U2_NOACPI_SUB_ID	    0xC00F1044
35296615Sobrien#define	PM3754U2_SUB_ID	     0xC0141044
35396615Sobrien#define	PM3755U2B_SUB_ID     0xC0151044
35496615Sobrien#define	PM3755F_SUB_ID	     0xC0161044
35596615Sobrien#define	PM3757U2_1_SUB_ID    0xC01E1044
35696615Sobrien#define	PM3757U2_2_SUB_ID    0xC01F1044
35796615Sobrien#define	PM3767U3_2_SUB_ID    0xC0201044
35896615Sobrien#define	PM3767U3_4_SUB_ID    0xC0211044
35996615Sobrien#define	PM2865U3_1_SUB_ID    0xC0281044
36096615Sobrien#define	PM2865U3_2_SUB_ID    0xC0291044
36196615Sobrien#define	PM2865F_SUB_ID	     0xC02A1044
36296615Sobrien#define	ADPT2000S_1_SUB_ID	 0xC03C1044
36396615Sobrien#define	ADPT2000S_2_SUB_ID	 0xC03D1044
36496615Sobrien#define	ADPT2000F_SUB_ID	 0xC03E1044
36596615Sobrien#define	ADPT3000S_1_SUB_ID	 0xC0461044
36696615Sobrien#define	ADPT3000S_2_SUB_ID	 0xC0471044
36796615Sobrien#define	ADPT3000F_SUB_ID	 0xC0481044
36896615Sobrien#define	ADPT5000S_1_SUB_ID	 0xC0501044
36996615Sobrien#define	ADPT5000S_2_SUB_ID	 0xC0511044
37096615Sobrien#define	ADPT5000F_SUB_ID	 0xC0521044
37196615Sobrien#define	ADPT1000UDMA_SUB_ID	 0xC05A1044
37296615Sobrien#define	ADPT1000UDMA_DAC_SUB_ID	 0xC05B1044
37396615Sobrien#define	ADPTI2O_DEVICE_ID	 0xa501
37496615Sobrien#define	ADPTDOMINATOR_DEVICE_ID	 0xa511
37596615Sobrien#define	ADPTDOMINATOR_SUB_ID_START   0xC0321044
37696615Sobrien#define	ADPTDOMINATOR_SUB_ID_END     0xC03b1044
37782092Sscottl
37882092Sscottl
37982092Sscottl
38096554Sobrien/* ------------------------------------------------------------------	*/
38196554Sobrien/* ------------------------------------------------------------------	*/
38296554Sobrien/* ------------------------------------------------------------------	*/
38365312Smsmith
38465312Smsmith/*
38565312Smsmith * You may adjust dsDescription_size with an override to a value less than
38665312Smsmith * 50 so that the structure allocates less real space.
38765312Smsmith */
38865312Smsmith#if (!defined(dsDescription_size))
38965312Smsmith# define dsDescription_size 50
39065312Smsmith#endif
39165312Smsmith
39265312Smsmithtypedef struct dpt_sig {
39396554Sobrien    char    dsSignature[6];	 /* ALWAYS "dPtSiG" */
39496554Sobrien    sigBYTE dsSigVersion;	 /* signature version (currently 1) */
39596554Sobrien    sigBYTE dsProcessorFamily;	 /* what type of processor */
39696554Sobrien    sigBYTE dsProcessor;	 /* precise processor */
39796554Sobrien    sigBYTE dsFiletype;		 /* type of file */
39896554Sobrien    sigBYTE dsFiletypeFlags;	 /* flags to specify load type, etc. */
39996554Sobrien    sigBYTE dsOEM;		 /* OEM file was created for */
40096554Sobrien    sigLONG dsOS;		 /* which Operating systems */
40196554Sobrien    sigWORD dsCapabilities;	 /* RAID levels, etc. */
40296554Sobrien    sigWORD dsDeviceSupp;	 /* Types of SCSI devices supported */
40396554Sobrien    sigWORD dsAdapterSupp;	 /* DPT adapter families supported */
40496554Sobrien    sigWORD dsApplication;	 /* applications file is for */
40596554Sobrien    sigBYTE dsRequirements;	 /* Other driver dependencies */
40696554Sobrien    sigBYTE dsVersion;		 /* 1 */
40796554Sobrien    sigBYTE dsRevision;		 /* 'J' */
40896554Sobrien    sigBYTE dsSubRevision;	 /* '9'	  ' ' if N/A */
40996554Sobrien    sigBYTE dsMonth;		 /* creation month */
41096554Sobrien    sigBYTE dsDay;		 /* creation day */
41196554Sobrien    sigBYTE dsYear;		 /* creation year since 1980 (1993=13) */
41265312Smsmith    /* description (NULL terminated) */
41365312Smsmith    char  dsDescription[dsDescription_size];
41465312Smsmith} dpt_sig_S;
41565312Smsmith/* 32 bytes minimum - with no description.  Put NULL at description[0] */
41665312Smsmith/* 81 bytes maximum - with 49 character description plus NULL. */
41765312Smsmith
41865312Smsmith#if defined __bsdi__
41965312Smsmith#ifndef PACK
42096615Sobrien#define	PACK __attribute__ ((packed))
42165312Smsmith#endif
42265312Smsmithtypedef struct dpt_sig_Packed {
42365312Smsmith    char    dsSignature[6] PACK;      /* ALWAYS "dPtSiG" */
42496554Sobrien    sigBYTE dsSigVersion PACK;	      /* signature version (currently 1) */
42565312Smsmith    sigBYTE dsProcessorFamily PACK;   /* what type of processor */
42696554Sobrien    sigBYTE dsProcessor PACK;	      /* precise processor */
42796554Sobrien    sigBYTE dsFiletype PACK;	      /* type of file */
42865312Smsmith    sigBYTE dsFiletypeFlags PACK;     /* flags to specify load type, etc. */
42996554Sobrien    sigBYTE dsOEM PACK;		      /* OEM file was created for */
43096554Sobrien    sigLONG dsOS PACK;		      /* which Operating systems */
43165312Smsmith    sigWORD dsCapabilities PACK;      /* RAID levels, etc. */
43296554Sobrien    sigWORD dsDeviceSupp PACK;	      /* Types of SCSI devices supported */
43396554Sobrien    sigWORD dsAdapterSupp PACK;	      /* DPT adapter families supported */
43496554Sobrien    sigWORD dsApplication PACK;	      /* applications file is for */
43565312Smsmith    sigBYTE dsRequirements PACK;      /* Other driver dependencies */
43696554Sobrien    sigBYTE dsVersion PACK;	      /* 1 */
43796554Sobrien    sigBYTE dsRevision PACK;	      /* 'J' */
43896554Sobrien    sigBYTE dsSubRevision PACK;	      /* '9'   ' ' if N/A */
43996554Sobrien    sigBYTE dsMonth PACK;	      /* creation month */
44096554Sobrien    sigBYTE dsDay PACK;		      /* creation day */
44196554Sobrien    sigBYTE dsYear PACK;	      /* creation year since 1980 (1993=13) */
44265312Smsmith    /* description (NULL terminated) */
44365312Smsmith    char  dsDescription[dsDescription_size] PACK;
44465312Smsmith} dpt_sig_S_Packed;
44596615Sobrien#define	PACKED_SIG_SIZE sizeof(dpt_sig_S_Packed)
44665312Smsmith#endif
44765312Smsmith/* This line added at Roycroft's request */
44865312Smsmith/* Microsoft's NT compiler gets confused if you do a pack and don't */
44965312Smsmith/* restore it. */
45065312Smsmith
45165312Smsmith#ifndef NO_UNPACK
45296614Sobrien#if defined(_DPT_AIX)
45365312Smsmith#pragma options align=reset
45496614Sobrien#elif defined(UNPACK_FOUR)
45565312Smsmith#pragma pack(4)
45665312Smsmith#else
45765312Smsmith#pragma pack()
45896554Sobrien#endif	/* aix */
45965312Smsmith#endif
46065312Smsmith/* For the Macintosh */
461153084Sru#ifdef STRUCTALIGNMENTSUPPORTED
46265312Smsmith#pragma options align=reset
46365312Smsmith#endif
46465312Smsmith
46565312Smsmith#endif
466