i2odpt.h revision 96615
1219089Spjd/**************************************************************** 2219089Spjd * Copyright (c) 1996-2000 Distributed Processing Technology Corporation 3219089Spjd * Copyright (c) 2000 Adaptec Corporation. 4219089Spjd * All rights reserved. 5219089Spjd * 6219089Spjd * $FreeBSD: head/sys/dev/asr/i2odpt.h 96615 2002-05-14 21:59:10Z obrien $ 7219089Spjd * 8219089Spjd ****************************************************************/ 9219089Spjd 10219089Spjd#if !defined(I2O_DPT_HDR) 11219089Spjd#define I2O_DPT_HDR 12219089Spjd 13219089Spjd#define DPT_ORGANIZATION_ID 0x1B /* For Private Messages */ 14219089Spjd 15219089Spjd/* 16219089Spjd * PrivateMessageFrame.StdMessageFrame.Function = I2O_PRIVATE_MESSAGE 17219089Spjd * PrivateMessageFrame.XFunctionCode = I2O_SCSI_SCB_EXEC 18219089Spjd */ 19219089Spjd 20219089Spjdtypedef struct _PRIVATE_SCSI_SCB_EXECUTE_MESSAGE { 21219089Spjd I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 22219089Spjd# if (defined(sparc) || defined(_DPT_BIG_ENDIAN)) 23249195Smm U32 TID; /* Upper four bits currently are zero */ 24219089Spjd# else 25219089Spjd BF TID:16; /* Upper four bits currently are zero */ 26219089Spjd /* Command is interpreted by the host */ 27219089Spjd BF Interpret:1; 28219089Spjd /* if TRUE, deal with Physical Firmware Array information */ 29219089Spjd BF Physical:1; 30219089Spjd BF Reserved1:14; 31219089Spjd# endif 32219089Spjd U8 CDBLength; 33219089Spjd U8 Reserved; 34219089Spjd I2O_SCB_FLAGS SCBFlags; 35219089Spjd U8 CDB[ I2O_SCSI_CDB_LENGTH ]; 36219089Spjd U32 ByteCount; 37219089Spjd I2O_SG_ELEMENT SGL; 38219089Spjd} PRIVATE_SCSI_SCB_EXECUTE_MESSAGE, * PPRIVATE_SCSI_SCB_EXECUTE_MESSAGE; 39219089Spjd 40219089Spjd/* 41219089Spjd * Flash access and programming messages 42219089Spjd * PrivateMessageFrame.StdMessageFrame.Function = I2O_PRIVATE_MESSAGE 43219089Spjd * PrivateMessageFrame.XFunctionCode = PRIVATE_FLAGS_REGION_* 44219089Spjd * 45219089Spjd * SIZE returns the total size of a region of flash 46219089Spjd * READ copies a region (or portion thereof) into the buffer specified 47219089Spjd * by the SGL 48236884Smm * WRITE writes a region (or portion thereof) using the data specified 49219089Spjd * by the SGL 50219089Spjd * 51219089Spjd * Flash regions 52219089Spjd * 53219089Spjd * 0 operational-mode firmware 54219089Spjd * 1 software (bios/utility) 55219089Spjd * 2 oem nvram defaults 56219089Spjd * 3 hba serial number 57219089Spjd * 4 boot-mode firmware 58248571Smm * 59219089Spjd * Any combination of RegionOffset and ByteCount can be specified providing 60219089Spjd * they fit within the size of the specified region. 61237972Smm * 62237972Smm * Flash messages should be targeted to the Executive TID 0x000 63237972Smm */ 64237972Smm 65219089Spjd#define PRIVATE_FLASH_REGION_SIZE 0x0100 66237972Smm#define PRIVATE_FLASH_REGION_READ 0x0101 67237972Smm#define PRIVATE_FLASH_REGION_WRITE 0x0102 68237972Smm#define PRIVATE_FLASH_REGION_CRC 0x0103 69237972Smm 70219089Spjdtypedef struct _PRIVATE_FLASH_REGION_MESSAGE { 71219089Spjd I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 72237972Smm U32 FlashRegion; 73237972Smm U32 RegionOffset; 74237972Smm U32 ByteCount; 75237972Smm I2O_SG_ELEMENT SGL; 76237972Smm} PRIVATE_FLASH_REGION_MESSAGE, * PPRIVATE_FLASH_REGION_MESSAGE; 77237972Smm 78237972Smm/* DPT Driver Printf message */ 79237972Smm 80237972Smm#define PRIVATE_DRIVER_PRINTF 0x0200 81237972Smm 82237972Smm/* FwPrintFlags */ 83237972Smm#define FW_FIRMWARE_FLAGS_NO_HEADER_B 0x00000001 /* Remove date header */ 84237972Smm 85237972Smmtypedef struct _PRIVATE_DRIVER_PRINTF_MESSAGE { 86237972Smm 87237972Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 88237972Smm 89237972Smm /* total bytes in PrintBuffer, including header */ 90237972Smm U32 PrintBufferByteCount; 91237972Smm /* exact data to be copied into the serial PrintBuffer */ 92237972Smm U8 PrintBuffer[1]; 93237972Smm 94237972Smm} PRIVATE_DRIVER_PRINTF_MESSAGE, * PPRIVATE_DRIVER_PRINTF_MESSAGE; 95237972Smm 96237972Smm/* DPT Enable Diagnostics message 0x0201 */ 97237972Smm 98237972Smm#define PRIVATE_DIAG_ENABLE 0x0201 99237972Smm 100237972Smmtypedef struct _PRIVATE_DIAG_ENABLE_MESSAGE { 101237972Smm I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 102219089Spjd} PRIVATE_DIAG_MESSAGE_FRAME, * PPRIVATE_DIAG_MESSAGE_FRAME; 103219089Spjd 104219089Spjd/* DPT Driver Get/Put message */ 105219089Spjd 106219089Spjd#define PRIVATE_DRIVER_GET 0x300 107219089Spjd#define PRIVATE_DRIVER_PUT 0x301 108219089Spjd 109219089Spjdtypedef struct _PRIVATE_DRIVER_GETPUT_MESSAGE 110219089Spjd{ 111219089Spjd I2O_PRIVATE_MESSAGE_FRAME PrivateMessageFrame; 112219089Spjd U32 Offset; 113219089Spjd U32 ByteCount; 114219089Spjd I2O_SG_ELEMENT SGL; 115219089Spjd} PRIVATE_DRIVER_GETPUT_MESSAGE, * PPRIVATE_DRIVER_GETPUT_MESSAGE; 116219089Spjd 117219089Spjd/****************************************************************************/ 118219089Spjd 119219089Spjd/* DPT Peripheral Device Parameter Groups */ 120219089Spjd 121219089Spjd/****************************************************************************/ 122219089Spjd 123219089Spjd/* DPT Configuration and Operating Structures and Defines */ 124219089Spjd 125219089Spjd#define I2O_DPT_DEVICE_INFO_GROUP_NO 0x8000 126219089Spjd 127219089Spjd/* - 8000h - DPT Device Information Parameters Group defines */ 128249858Smm 129249858Smm/* Device Type */ 130249858Smm 131249858Smm#define I2O_DPT_DEVICE_TYPE_DIRECT I2O_SCSI_DEVICE_TYPE_DIRECT 132249858Smm#define I2O_DPT_DEVICE_TYPE_SEQUENTIAL I2O_SCSI_DEVICE_TYPE_SEQUENTIAL 133249858Smm#define I2O_DPT_DEVICE_TYPE_PRINTER I2O_SCSI_DEVICE_TYPE_PRINTER 134249858Smm#define I2O_DPT_DEVICE_TYPE_PROCESSOR I2O_SCSI_DEVICE_TYPE_PROCESSOR 135249858Smm#define I2O_DPT_DEVICE_TYPE_WORM I2O_SCSI_DEVICE_TYPE_WORM 136249858Smm#define I2O_DPT_DEVICE_TYPE_CDROM I2O_SCSI_DEVICE_TYPE_CDROM 137219089Spjd#define I2O_DPT_DEVICE_TYPE_SCANNER I2O_SCSI_DEVICE_TYPE_SCANNER 138219089Spjd#define I2O_DPT_DEVICE_TYPE_OPTICAL I2O_SCSI_DEVICE_TYPE_OPTICAL 139219089Spjd#define I2O_DPT_DEVICE_TYPE_MEDIA_CHANGER I2O_SCSI_DEVICE_TYPE_MEDIA_CHANGER 140219089Spjd#define I2O_DPT_DEVICE_TYPE_COMM I2O_SCSI_DEVICE_TYPE_COMM 141219089Spjd#define I2O_DPT_DEVICE_GRAPHICS_1 I2O_SCSI_DEVICE_GRAPHICS_1 142219089Spjd#define I2O_DPT_DEVICE_GRAPHICS_2 I2O_SCSI_DEVICE_GRAPHICS_2 143219089Spjd#define I2O_DPT_DEVICE_TYPE_ARRAY_CONT I2O_SCSI_DEVICE_TYPE_ARRAY_CONT 144219089Spjd#define I2O_DPT_DEVICE_TYPE_UNKNOWN I2O_SCSI_DEVICE_TYPE_UNKNOWN 145219089Spjd 146219089Spjd/* Flags */ 147219089Spjd 148219089Spjd#define I2O_DPT_PERIPHERAL_TYPE_FLAG I2O_SCSI_PERIPHERAL_TYPE_FLAG 149219089Spjd#define I2O_DPT_PERIPHERAL_TYPE_PARALLEL I2O_SCSI_PERIPHERAL_TYPE_PARALLEL 150219089Spjd#define I2O_DPT_PERIPHERAL_TYPE_SERIAL I2O_SCSI_PERIPHERAL_TYPE_SERIAL 151219089Spjd 152219089Spjd#define I2O_DPT_RESERVED_FLAG I2O_SCSI_RESERVED_FLAG 153219089Spjd 154219089Spjd#define I2O_DPT_DISCONNECT_FLAG I2O_SCSI_DISCONNECT_FLAG 155219089Spjd#define I2O_DPT_DISABLE_DISCONNECT I2O_SCSI_DISABLE_DISCONNECT 156219089Spjd#define I2O_DPT_ENABLE_DISCONNECT I2O_SCSI_ENABLE_DISCONNECT 157219089Spjd 158219089Spjd#define I2O_DPT_MODE_MASK I2O_SCSI_MODE_MASK 159219089Spjd#define I2O_DPT_MODE_SET_DATA I2O_SCSI_MODE_SET_DATA 160219089Spjd#define I2O_DPT_MODE_SET_DEFAULT I2O_SCSI_MODE_SET_DEFAULT 161219089Spjd#define I2O_DPT_MODE_SET_SAFEST I2O_SCSI_MODE_SET_SAFEST 162219089Spjd 163219089Spjd#define I2O_DPT_DATA_WIDTH_MASK I2O_SCSI_DATA_WIDTH_MASK 164219089Spjd#define I2O_DPT_DATA_WIDTH_8 I2O_SCSI_DATA_WIDTH_8 165219089Spjd#define I2O_DPT_DATA_WIDTH_16 I2O_SCSI_DATA_WIDTH_16 166219089Spjd#define I2O_DPT_DATA_WIDTH_32 I2O_SCSI_DATA_WIDTH_32 167219089Spjd 168219089Spjd#define I2O_DPT_SYNC_NEGOTIATION_FLAG I2O_SCSI_SYNC_NEGOTIATION_FLAG 169219089Spjd#define I2O_DPT_DISABLE_SYNC_NEGOTIATION I2O_SCSI_DISABLE_SYNC_NEGOTIATION 170219089Spjd#define I2O_DPT_ENABLE_SYNC_NEGOTIATION I2O_SCSI_ENABLE_SYNC_NEGOTIATION 171219089Spjd 172219089Spjd/* DPT Device Group 8000h - Device Information Parameter Group */ 173219089Spjd 174219089Spjdtypedef struct _I2O_DPT_DEVICE_INFO_SCALAR { 175219089Spjd U8 DeviceType; /* Identical to I2O_SCSI_DEVICE_INFO SCALAR */ 176219089Spjd U8 Flags; /* Identical to I2O_SCSI_DEVICE_INFO SCALAR */ 177219089Spjd U16 Bus; 178219089Spjd U32 Identifier; 179219089Spjd U8 LunInfo[8]; /* SCSI-2 8-bit scalar LUN goes into offset 1 */ 180219089Spjd 181219089Spjd} I2O_DPT_DEVICE_INFO_SCALAR, *PI2O_DPT_DEVICE_INFO_SCALAR; 182219089Spjd 183219089Spjd#define I2O_DPT_EXEC_IOP_BUFFERS_GROUP_NO 0x8000 184219089Spjd 185219089Spjd/* DPT Exec Iop Buffers Group 8000h */ 186219089Spjd 187219089Spjdtypedef struct _I2O_DPT_EXEC_IOP_BUFFERS_SCALAR { 188219089Spjd U32 SerialOutputOffset; /* offset from base address to header */ 189219089Spjd U32 SerialOutputSize; /* size of data buffer in bytes */ 190219089Spjd U32 SerialHeaderSize; /* size of data buffer header in bytes */ 191219089Spjd U32 SerialFlagsSupported; /* Mask of debug flags supported */ 192219089Spjd 193219089Spjd} I2O_DPT_EXEC_IOP_BUFFERS_SCALAR, *PI2O_DPT_EXEC_IOP_BUFFERS_SCALAR; 194219089Spjd 195219089Spjd 196248571Smm#endif /* I2O_DPT_HDR */ 197219089Spjd