i2odpt.h revision 96615
1248590Smm/**************************************************************** 2248590Smm * Copyright (c) 1996-2000 Distributed Processing Technology Corporation 3248590Smm * Copyright (c) 2000 Adaptec Corporation. 4248590Smm * All rights reserved. 5248590Smm * 6248590Smm * $FreeBSD: head/sys/dev/asr/i2odpt.h 96615 2002-05-14 21:59:10Z obrien $ 7248590Smm * 8248590Smm ****************************************************************/ 9248590Smm 10248590Smm#if !defined(I2O_DPT_HDR) 11248590Smm#define I2O_DPT_HDR 12248590Smm 13248590Smm#define DPT_ORGANIZATION_ID 0x1B /* For Private Messages */ 14248590Smm 15248590Smm/* 16248590Smm * PrivateMessageFrame.StdMessageFrame.Function = I2O_PRIVATE_MESSAGE 17248590Smm * PrivateMessageFrame.XFunctionCode = I2O_SCSI_SCB_EXEC 18248590Smm */ 19248590Smm 20248590Smmtypedef struct _PRIVATE_SCSI_SCB_EXECUTE_MESSAGE { 21248590Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 22248590Smm# if (defined(sparc) || defined(_DPT_BIG_ENDIAN)) 23248590Smm U32 TID; /* Upper four bits currently are zero */ 24248590Smm# else 25248590Smm BF TID:16; /* Upper four bits currently are zero */ 26248590Smm /* Command is interpreted by the host */ 27248590Smm BF Interpret:1; 28248590Smm /* if TRUE, deal with Physical Firmware Array information */ 29248590Smm BF Physical:1; 30248590Smm BF Reserved1:14; 31248590Smm# endif 32248590Smm U8 CDBLength; 33248590Smm U8 Reserved; 34248590Smm I2O_SCB_FLAGS SCBFlags; 35248590Smm U8 CDB[ I2O_SCSI_CDB_LENGTH ]; 36248590Smm U32 ByteCount; 37248590Smm I2O_SG_ELEMENT SGL; 38248590Smm} PRIVATE_SCSI_SCB_EXECUTE_MESSAGE, * PPRIVATE_SCSI_SCB_EXECUTE_MESSAGE; 39248590Smm 40248590Smm/* 41248590Smm * Flash access and programming messages 42248590Smm * PrivateMessageFrame.StdMessageFrame.Function = I2O_PRIVATE_MESSAGE 43248590Smm * PrivateMessageFrame.XFunctionCode = PRIVATE_FLAGS_REGION_* 44248590Smm * 45248590Smm * SIZE returns the total size of a region of flash 46248590Smm * READ copies a region (or portion thereof) into the buffer specified 47248590Smm * by the SGL 48248590Smm * WRITE writes a region (or portion thereof) using the data specified 49248590Smm * by the SGL 50248590Smm * 51248590Smm * Flash regions 52248590Smm * 53248590Smm * 0 operational-mode firmware 54248590Smm * 1 software (bios/utility) 55248590Smm * 2 oem nvram defaults 56248590Smm * 3 hba serial number 57248590Smm * 4 boot-mode firmware 58248590Smm * 59248590Smm * Any combination of RegionOffset and ByteCount can be specified providing 60248590Smm * they fit within the size of the specified region. 61248590Smm * 62248590Smm * Flash messages should be targeted to the Executive TID 0x000 63248590Smm */ 64248590Smm 65248590Smm#define PRIVATE_FLASH_REGION_SIZE 0x0100 66248590Smm#define PRIVATE_FLASH_REGION_READ 0x0101 67248590Smm#define PRIVATE_FLASH_REGION_WRITE 0x0102 68248590Smm#define PRIVATE_FLASH_REGION_CRC 0x0103 69248590Smm 70248590Smmtypedef struct _PRIVATE_FLASH_REGION_MESSAGE { 71248590Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 72248590Smm U32 FlashRegion; 73248590Smm U32 RegionOffset; 74248590Smm U32 ByteCount; 75248590Smm I2O_SG_ELEMENT SGL; 76248590Smm} PRIVATE_FLASH_REGION_MESSAGE, * PPRIVATE_FLASH_REGION_MESSAGE; 77248590Smm 78248590Smm/* DPT Driver Printf message */ 79248590Smm 80248590Smm#define PRIVATE_DRIVER_PRINTF 0x0200 81248590Smm 82248590Smm/* FwPrintFlags */ 83248590Smm#define FW_FIRMWARE_FLAGS_NO_HEADER_B 0x00000001 /* Remove date header */ 84248590Smm 85248590Smmtypedef struct _PRIVATE_DRIVER_PRINTF_MESSAGE { 86248590Smm 87248590Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 88248590Smm 89248590Smm /* total bytes in PrintBuffer, including header */ 90248590Smm U32 PrintBufferByteCount; 91248590Smm /* exact data to be copied into the serial PrintBuffer */ 92248590Smm U8 PrintBuffer[1]; 93248590Smm 94248590Smm} PRIVATE_DRIVER_PRINTF_MESSAGE, * PPRIVATE_DRIVER_PRINTF_MESSAGE; 95248590Smm 96248590Smm/* DPT Enable Diagnostics message 0x0201 */ 97248590Smm 98248590Smm#define PRIVATE_DIAG_ENABLE 0x0201 99248590Smm 100248590Smmtypedef struct _PRIVATE_DIAG_ENABLE_MESSAGE { 101248590Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 102248590Smm} PRIVATE_DIAG_MESSAGE_FRAME, * PPRIVATE_DIAG_MESSAGE_FRAME; 103248590Smm 104248590Smm/* DPT Driver Get/Put message */ 105248590Smm 106248590Smm#define PRIVATE_DRIVER_GET 0x300 107248590Smm#define PRIVATE_DRIVER_PUT 0x301 108248590Smm 109248590Smmtypedef struct _PRIVATE_DRIVER_GETPUT_MESSAGE 110248590Smm{ 111248590Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 112248590Smm U32 Offset; 113248590Smm U32 ByteCount; 114248590Smm I2O_SG_ELEMENT SGL; 115248590Smm} PRIVATE_DRIVER_GETPUT_MESSAGE, * PPRIVATE_DRIVER_GETPUT_MESSAGE; 116248590Smm 117248590Smm/****************************************************************************/ 118248590Smm 119248590Smm/* DPT Peripheral Device Parameter Groups */ 120248590Smm 121248590Smm/****************************************************************************/ 122248590Smm 123248590Smm/* DPT Configuration and Operating Structures and Defines */ 124248590Smm 125248590Smm#define I2O_DPT_DEVICE_INFO_GROUP_NO 0x8000 126248590Smm 127248590Smm/* - 8000h - DPT Device Information Parameters Group defines */ 128248590Smm 129248590Smm/* Device Type */ 130248590Smm 131248590Smm#define I2O_DPT_DEVICE_TYPE_DIRECT I2O_SCSI_DEVICE_TYPE_DIRECT 132248590Smm#define I2O_DPT_DEVICE_TYPE_SEQUENTIAL I2O_SCSI_DEVICE_TYPE_SEQUENTIAL 133248590Smm#define I2O_DPT_DEVICE_TYPE_PRINTER I2O_SCSI_DEVICE_TYPE_PRINTER 134248590Smm#define I2O_DPT_DEVICE_TYPE_PROCESSOR I2O_SCSI_DEVICE_TYPE_PROCESSOR 135248590Smm#define I2O_DPT_DEVICE_TYPE_WORM I2O_SCSI_DEVICE_TYPE_WORM 136248590Smm#define I2O_DPT_DEVICE_TYPE_CDROM I2O_SCSI_DEVICE_TYPE_CDROM 137248590Smm#define I2O_DPT_DEVICE_TYPE_SCANNER I2O_SCSI_DEVICE_TYPE_SCANNER 138248590Smm#define I2O_DPT_DEVICE_TYPE_OPTICAL I2O_SCSI_DEVICE_TYPE_OPTICAL 139248590Smm#define I2O_DPT_DEVICE_TYPE_MEDIA_CHANGER I2O_SCSI_DEVICE_TYPE_MEDIA_CHANGER 140248590Smm#define I2O_DPT_DEVICE_TYPE_COMM I2O_SCSI_DEVICE_TYPE_COMM 141248590Smm#define I2O_DPT_DEVICE_GRAPHICS_1 I2O_SCSI_DEVICE_GRAPHICS_1 142248590Smm#define I2O_DPT_DEVICE_GRAPHICS_2 I2O_SCSI_DEVICE_GRAPHICS_2 143248590Smm#define I2O_DPT_DEVICE_TYPE_ARRAY_CONT I2O_SCSI_DEVICE_TYPE_ARRAY_CONT 144248590Smm#define I2O_DPT_DEVICE_TYPE_UNKNOWN I2O_SCSI_DEVICE_TYPE_UNKNOWN 145248590Smm 146248590Smm/* Flags */ 147248590Smm 148248590Smm#define I2O_DPT_PERIPHERAL_TYPE_FLAG I2O_SCSI_PERIPHERAL_TYPE_FLAG 149248590Smm#define I2O_DPT_PERIPHERAL_TYPE_PARALLEL I2O_SCSI_PERIPHERAL_TYPE_PARALLEL 150248590Smm#define I2O_DPT_PERIPHERAL_TYPE_SERIAL I2O_SCSI_PERIPHERAL_TYPE_SERIAL 151248590Smm 152248590Smm#define I2O_DPT_RESERVED_FLAG I2O_SCSI_RESERVED_FLAG 153248590Smm 154248590Smm#define I2O_DPT_DISCONNECT_FLAG I2O_SCSI_DISCONNECT_FLAG 155248590Smm#define I2O_DPT_DISABLE_DISCONNECT I2O_SCSI_DISABLE_DISCONNECT 156248590Smm#define I2O_DPT_ENABLE_DISCONNECT I2O_SCSI_ENABLE_DISCONNECT 157248590Smm 158248590Smm#define I2O_DPT_MODE_MASK I2O_SCSI_MODE_MASK 159248590Smm#define I2O_DPT_MODE_SET_DATA I2O_SCSI_MODE_SET_DATA 160248590Smm#define I2O_DPT_MODE_SET_DEFAULT I2O_SCSI_MODE_SET_DEFAULT 161248590Smm#define I2O_DPT_MODE_SET_SAFEST I2O_SCSI_MODE_SET_SAFEST 162248590Smm 163248590Smm#define I2O_DPT_DATA_WIDTH_MASK I2O_SCSI_DATA_WIDTH_MASK 164248590Smm#define I2O_DPT_DATA_WIDTH_8 I2O_SCSI_DATA_WIDTH_8 165248590Smm#define I2O_DPT_DATA_WIDTH_16 I2O_SCSI_DATA_WIDTH_16 166248590Smm#define I2O_DPT_DATA_WIDTH_32 I2O_SCSI_DATA_WIDTH_32 167248590Smm 168248590Smm#define I2O_DPT_SYNC_NEGOTIATION_FLAG I2O_SCSI_SYNC_NEGOTIATION_FLAG 169248590Smm#define I2O_DPT_DISABLE_SYNC_NEGOTIATION I2O_SCSI_DISABLE_SYNC_NEGOTIATION 170248590Smm#define I2O_DPT_ENABLE_SYNC_NEGOTIATION I2O_SCSI_ENABLE_SYNC_NEGOTIATION 171248590Smm 172248590Smm/* DPT Device Group 8000h - Device Information Parameter Group */ 173248590Smm 174248590Smmtypedef struct _I2O_DPT_DEVICE_INFO_SCALAR { 175248590Smm U8 DeviceType; /* Identical to I2O_SCSI_DEVICE_INFO SCALAR */ 176248590Smm U8 Flags; /* Identical to I2O_SCSI_DEVICE_INFO SCALAR */ 177248590Smm U16 Bus; 178248590Smm U32 Identifier; 179248590Smm U8 LunInfo[8]; /* SCSI-2 8-bit scalar LUN goes into offset 1 */ 180248590Smm 181248590Smm} I2O_DPT_DEVICE_INFO_SCALAR, *PI2O_DPT_DEVICE_INFO_SCALAR; 182248590Smm 183248590Smm#define I2O_DPT_EXEC_IOP_BUFFERS_GROUP_NO 0x8000 184248590Smm 185248590Smm/* DPT Exec Iop Buffers Group 8000h */ 186248590Smm 187248590Smmtypedef struct _I2O_DPT_EXEC_IOP_BUFFERS_SCALAR { 188248590Smm U32 SerialOutputOffset; /* offset from base address to header */ 189248590Smm U32 SerialOutputSize; /* size of data buffer in bytes */ 190248590Smm U32 SerialHeaderSize; /* size of data buffer header in bytes */ 191248590Smm U32 SerialFlagsSupported; /* Mask of debug flags supported */ 192248590Smm 193} I2O_DPT_EXEC_IOP_BUFFERS_SCALAR, *PI2O_DPT_EXEC_IOP_BUFFERS_SCALAR; 194 195 196#endif /* I2O_DPT_HDR */ 197