* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: mpi_init.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
* The above named program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* You should have received a copy of the GNU General Public
* License along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
* ========== Copyright Header End ============================================
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
#pragma ident "@(#)mpi_init.h 1.2 04/11/08 SMI"
* SCSI Initiator Messages
* SCSI IO messages and assocaited structures
typedef struct msg_scsi_io_request
{
uint8_t SenseBufferLength
;
uint32_t SenseBufferLowAddr
;
/* SCSIO MsgFlags bits */
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH 0x01
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 0x00
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 0x01
#define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION 0x02
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST 0x00
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC 0x02
#define MPI_SCSIIO_LUN_FIRST_LEVEL_ADDRESSING 0x0000FFFF
#define MPI_SCSIIO_LUN_SECOND_LEVEL_ADDRESSING 0xFFFF0000
#define MPI_SCSIIO_LUN_THIRD_LEVEL_ADDRESSING 0x0000FFFF
#define MPI_SCSIIO_LUN_FOURTH_LEVEL_ADDRESSING 0xFFFF0000
#define MPI_SCSIIO_LUN_LEVEL_1_WORD 0xFF00
#define MPI_SCSIIO_LUN_LEVEL_1_DWORD 0x0000FF00
#define MPI_SCSIIO_CONTROL_DATADIRECTION_MASK 0x03000000
#define MPI_SCSIIO_CONTROL_NODATATRANSFER 0x00000000
#define MPI_SCSIIO_CONTROL_WRITE 0x01000000
#define MPI_SCSIIO_CONTROL_READ 0x02000000
#define MPI_SCSIIO_CONTROL_ADDCDBLEN_MASK 0x3C000000
#define MPI_SCSIIO_CONTROL_ADDCDBLEN_SHIFT 26
#define MPI_SCSIIO_CONTROL_TASKATTRIBUTE_MASK 0x00000700
#define MPI_SCSIIO_CONTROL_SIMPLEQ 0x00000000
#define MPI_SCSIIO_CONTROL_HEADOFQ 0x00000100
#define MPI_SCSIIO_CONTROL_ORDEREDQ 0x00000200
#define MPI_SCSIIO_CONTROL_ACAQ 0x00000400
#define MPI_SCSIIO_CONTROL_UNTAGGED 0x00000500
#define MPI_SCSIIO_CONTROL_NO_DISCONNECT 0x00000700
#define MPI_SCSIIO_CONTROL_TASKMANAGE_MASK 0x00FF0000
#define MPI_SCSIIO_CONTROL_OBSOLETE 0x00800000
#define MPI_SCSIIO_CONTROL_CLEAR_ACA_RSV 0x00400000
#define MPI_SCSIIO_CONTROL_TARGET_RESET 0x00200000
#define MPI_SCSIIO_CONTROL_LUN_RESET_RSV 0x00100000
#define MPI_SCSIIO_CONTROL_RESERVED 0x00080000
#define MPI_SCSIIO_CONTROL_CLR_TASK_SET_RSV 0x00040000
#define MPI_SCSIIO_CONTROL_ABORT_TASK_SET 0x00020000
#define MPI_SCSIIO_CONTROL_RESERVED2 0x00010000
typedef struct msg_scsi_io_reply
{
uint8_t SenseBufferLength
;
* SCSIIO Reply SCSIStatus values (SAM-2 status codes)
#define MPI_SCSI_STATUS_SUCCESS 0x00
#define MPI_SCSI_STATUS_CHECK_CONDITION 0x02
#define MPI_SCSI_STATUS_CONDITION_MET 0x04
#define MPI_SCSI_STATUS_BUSY 0x08
#define MPI_SCSI_STATUS_INTERMEDIATE 0x10
#define MPI_SCSI_STATUS_INTERMEDIATE_CONDMET 0x14
#define MPI_SCSI_STATUS_RESERVATION_CONFLICT 0x18
#define MPI_SCSI_STATUS_COMMAND_TERMINATED 0x22
#define MPI_SCSI_STATUS_TASK_SET_FULL 0x28
#define MPI_SCSI_STATUS_ACA_ACTIVE 0x30
* SCSIIO Reply SCSIState values
#define MPI_SCSI_STATE_AUTOSENSE_VALID 0x01
#define MPI_SCSI_STATE_AUTOSENSE_FAILED 0x02
#define MPI_SCSI_STATE_NO_SCSI_STATUS 0x04
#define MPI_SCSI_STATE_TERMINATED 0x08
#define MPI_SCSI_STATE_RESPONSE_INFO_VALID 0x10
#define MPI_SCSI_STATE_QUEUE_TAG_REJECTED 0x20
* SCSIIO Reply ResponseInfo values
* (FCP-1 RSP_CODE values and SPI-3 Packetized Failure codes)
#define MPI_SCSI_RSP_INFO_FUNCTION_COMPLETE 0x00000000
#define MPI_SCSI_RSP_INFO_FCP_BURST_LEN_ERROR 0x01000000
#define MPI_SCSI_RSP_INFO_CMND_FIELDS_INVALID 0x02000000
#define MPI_SCSI_RSP_INFO_FCP_DATA_RO_ERROR 0x03000000
#define MPI_SCSI_RSP_INFO_TASK_MGMT_UNSUPPORTED 0x04000000
#define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED 0x05000000
#define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE 0x06000000
* SCSI Task Management messages
typedef struct msg_scsi_task_mgmt
{
#define MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK 0x00000001
#define MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET 0x00000002
#define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET 0x00000003
#define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS 0x00000004
#define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET 0x00000005
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION 0x00000000
#define MPI_SCSITASKMGMT_MSGFLAGS_LIP_RESET_OPTION 0x00000002
#define MPI_SCSITASKMGMT_MSGFLAGS_LIPRESET_RESET_OPTION 0x00000004
/* SCSI Task Management Reply */
typedef struct msg_scsi_task_mgmt_reply
{
uint32_t TerminationCount
;
} msg_scsi_task_mgmt_reply_t
;
* SCSI enclosure processor messages
typedef struct msg_sep_request
{
#define MPI_SEP_REQ_ACTION_WRITE_STATUS 0x00
#define MPI_SEP_REQ_ACTION_READ_STATUS 0x01
#define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR 0x00000001
#define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY 0x00000002
#define MPI_SEP_REQ_SLOTSTATUS_DEV_REBUILDING 0x00000004
#endif /* _SYS_MPI_INIT_H */