diff options
author | dp <none@none> | 2007-04-18 11:32:14 -0700 |
---|---|---|
committer | dp <none@none> | 2007-04-18 11:32:14 -0700 |
commit | 91e1058474884b4b6f1d3665a96ddeb9a30cd489 (patch) | |
tree | f58835740092640c8577b577c0e0edcedb013a95 /usr/src/uts/common/sys | |
parent | 231ecbdf6cfa117492d49356673032a7cdbd4030 (diff) | |
download | illumos-joyent-91e1058474884b4b6f1d3665a96ddeb9a30cd489.tar.gz |
PSARC/2007/045 I2O EOL and EOF
4863632 Hey Hey! Ho Ho! I2O Has Got to Go!
--HG--
rename : usr/src/uts/common/io/i2o/i2o_bs.c => deleted_files/usr/src/uts/common/io/i2o/i2o_bs.c
rename : usr/src/uts/common/io/i2o/i2o_bs.conf => deleted_files/usr/src/uts/common/io/i2o/i2o_bs.conf
rename : usr/src/uts/common/io/i2o/i2o_bs.h => deleted_files/usr/src/uts/common/io/i2o/i2o_bs.h
rename : usr/src/uts/common/io/i2o/i2o_impl.h => deleted_files/usr/src/uts/common/io/i2o/i2o_impl.h
rename : usr/src/uts/common/io/i2o/i2o_msg.c => deleted_files/usr/src/uts/common/io/i2o/i2o_msg.c
rename : usr/src/uts/common/io/i2o/i2o_scsi.c => deleted_files/usr/src/uts/common/io/i2o/i2o_scsi.c
rename : usr/src/uts/common/io/i2o/i2o_scsi.conf => deleted_files/usr/src/uts/common/io/i2o/i2o_scsi.conf
rename : usr/src/uts/common/io/i2o/i2o_scsi_cmd.h => deleted_files/usr/src/uts/common/io/i2o/i2o_scsi_cmd.h
rename : usr/src/uts/common/io/i2o/i2o_scsi_util.h => deleted_files/usr/src/uts/common/io/i2o/i2o_scsi_util.h
rename : usr/src/uts/common/io/i2o/i2o_scsi_var.h => deleted_files/usr/src/uts/common/io/i2o/i2o_scsi_var.h
rename : usr/src/uts/common/io/i2o/label.c => deleted_files/usr/src/uts/common/io/i2o/label.c
rename : usr/src/uts/common/io/i2o/pci_to_i2o.c => deleted_files/usr/src/uts/common/io/i2o/pci_to_i2o.c
rename : usr/src/uts/common/io/i2o/pci_to_i2o.conf => deleted_files/usr/src/uts/common/io/i2o/pci_to_i2o.conf
rename : usr/src/uts/common/sys/i2o/i2oadptr.h => deleted_files/usr/src/uts/common/sys/i2o/i2oadptr.h
rename : usr/src/uts/common/sys/i2o/i2obscsi.h => deleted_files/usr/src/uts/common/sys/i2o/i2obscsi.h
rename : usr/src/uts/common/sys/i2o/i2oexec.h => deleted_files/usr/src/uts/common/sys/i2o/i2oexec.h
rename : usr/src/uts/common/sys/i2o/i2omsg.h => deleted_files/usr/src/uts/common/sys/i2o/i2omsg.h
rename : usr/src/uts/common/sys/i2o/i2omstr.h => deleted_files/usr/src/uts/common/sys/i2o/i2omstr.h
rename : usr/src/uts/common/sys/i2o/i2outil.h => deleted_files/usr/src/uts/common/sys/i2o/i2outil.h
rename : usr/src/uts/intel/i2o_bs/Makefile => deleted_files/usr/src/uts/intel/i2o_bs/Makefile
rename : usr/src/uts/intel/i2o_msg/Makefile => deleted_files/usr/src/uts/intel/i2o_msg/Makefile
rename : usr/src/uts/intel/i2o_scsi/Makefile => deleted_files/usr/src/uts/intel/i2o_scsi/Makefile
rename : usr/src/uts/intel/pci_to_i2o/Makefile => deleted_files/usr/src/uts/intel/pci_to_i2o/Makefile
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r-- | usr/src/uts/common/sys/Makefile | 9 | ||||
-rw-r--r-- | usr/src/uts/common/sys/Makefile.syshdrs | 26 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2oadptr.h | 323 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2obscsi.h | 400 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2oexec.h | 2478 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2omsg.h | 1570 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2omstr.h | 920 | ||||
-rw-r--r-- | usr/src/uts/common/sys/i2o/i2outil.h | 391 |
8 files changed, 22 insertions, 6095 deletions
diff --git a/usr/src/uts/common/sys/Makefile b/usr/src/uts/common/sys/Makefile index c00a178991..6b1b5bb8c3 100644 --- a/usr/src/uts/common/sys/Makefile +++ b/usr/src/uts/common/sys/Makefile @@ -934,15 +934,6 @@ PCHDRS= \ pit.h \ rtc.h -# I2O header files (currently used only on i386) -I2OHDRS= \ - i2oadptr.h \ - i2obscsi.h \ - i2oexec.h \ - i2omsg.h \ - i2omstr.h \ - i2outil.h - NXGEHDRS= \ nxge.h \ nxge_common.h \ diff --git a/usr/src/uts/common/sys/Makefile.syshdrs b/usr/src/uts/common/sys/Makefile.syshdrs index 6aa0c8e295..26970f5219 100644 --- a/usr/src/uts/common/sys/Makefile.syshdrs +++ b/usr/src/uts/common/sys/Makefile.syshdrs @@ -1,5 +1,24 @@ # -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # ident "%Z%%M% %I% %E% SMI" @@ -129,7 +148,7 @@ sparc_ROOTDIRS= $(ROOTDKTPDIR) $(ROOTDIR)/scsi/adapters \ $(ROOTDIR)/av i386_ROOTDIRS= $(ROOTDKTPDIR) $(ROOTDIR)/scsi/adapters $(ROOTDIR)/scsi/targets \ - $(ROOTDIR)/i2o $(ROOTDIR)/agp $(ROOTDIR)/sata + $(ROOTDIR)/agp $(ROOTDIR)/sata ROOTDIRS= \ $(ROOTDIR) \ @@ -244,7 +263,6 @@ ROOTRSMHDRS= $(RSMHDRS:%=$(ROOTDIR)/rsm/%) ROOTSDKTPHDRS= $(SDKTPHDRS:%=$(ROOTDIR)/dktp/%) ROOTDKTPHDRS= $(DKTPHDRS:%=$(ROOTDIR)/dktp/%) ROOTPCHDRS= $(PCHDRS:%=$(ROOTDIR)/%) -ROOTI2OHDRS= $(I2OHDRS:%=$(ROOTDIR)/i2o/%) ROOTHOTPLUGHDRS= $(HOTPLUGHDRS:%=$(ROOTDIR)/hotplug/%) ROOTHOTPLUGPCIHDRS= $(HOTPLUGPCIHDRS:%=$(ROOTDIR)/hotplug/pci/%) @@ -258,7 +276,7 @@ sparc_ROOTHDRS= $(ROOTSDKTPHDRS) $(ROOTSCSICADHDRS) $(ROOTSCSITARGETSHDRS) \ i386_ROOTHDRS= $(ROOTDKTPHDRS) $(ROOTPCHDRS) $(ROOTSCSITARGETSHDRS) \ $(ROOTSCSIVHCIHDRS) $(ROOTFCHDRS) \ - $(ROOTI2OHDRS) $(ROOTPCMCIAHDRS) $(ROOTHOTPLUGHDRS) \ + $(ROOTPCMCIAHDRS) $(ROOTHOTPLUGHDRS) \ $(ROOTHOTPLUGPCIHDRS) $(ROOTSATAGENHDRS) # install rules diff --git a/usr/src/uts/common/sys/i2o/i2oadptr.h b/usr/src/uts/common/sys/i2o/i2oadptr.h deleted file mode 100644 index 0dd0f70801..0000000000 --- a/usr/src/uts/common/sys/i2o/i2oadptr.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * **************************************************************************** - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any kind, - * either express or implied, including but not limited to, implied warranties - * or merchantability and fitness for a particular purpose. I2O SIG does not - * warrant that this program will meet the user's requirements or that the - * operation of these programs will be uninterrupted or error-free. - * Acceptance and use of this program constitutes the user's understanding - * that he will have no recourse to I2O SIG for any actual or consequential - * damages including, but not limited to, loss profits arising out of use - * or inability to use this program. - * - * Member is permitted to create derivative works to this header-file program. - * However, all copies of the program and its derivative works must contain the - * I2O SIG copyright notice. - * - * **************************************************************************** - */ - -/* - * ************************************************************************** - * - * i2oadptr.h -- I2O Adapter Class Message defintion file - * - * This file contains information presented in Chapter 6 of - * the I2o Specification. - * - * *************************************************************************** - */ - -/* - * Copyright (c) 1998 by Sun Microsystems, Inc. - * All rights reserved. - */ - -#ifndef _SYS_I2OADPTR_H -#define _SYS_I2OADPTR_H - -#pragma ident "%W% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define I2OADPTR_REV 1_5_1 /* Header file revision string */ - -/* - * NOTES: See i2omsg.h for more info - */ - -#include <sys/i2o/i2omsg.h> /* Include the Base Message file */ -#include <sys/types.h> /* For system types defines */ - - - -/* - * BUS ADAPTER CLASS SPECIFIC FUNCTIONS - */ - -#define I2O_HBA_ADAPTER_RESET 0x85 -#define I2O_HBA_BUS_QUIESCE 0x8b -#define I2O_HBA_BUS_RESET 0x87 -#define I2O_HBA_BUS_SCAN 0x89 - - -/* - * Detailed Status Codes for HBA operations - * - * Note: - * The 16-bit Detailed Status Code field for HBA operations is divided - * into two separate 8-bit fields. The lower 8 bits are reserved. The - * upper 8 bits are used to report Adapter Status information. The - * definitions for these two fields, however, will be consistent with - * the standard reply message frame structure declaration, which treats - * this as a single 16-bit field. In addition, the values used will be - * consistent with the Adapter Status codes defined for the SCSI - * Peripheral class. Theses codes are based on CAM-1. In other words, - * these definitions are a subset of the SCSI peripheral class codes. - * Where applicable, "SCSI" has been removed from the definition. - * - */ - -#define I2O_HBA_DSC_MASK 0xFF00 - -#define I2O_HBA_DSC_SUCCESS 0x0000 -#define I2O_HBA_DSC_ADAPTER_BUSY 0x0500 -#define I2O_HBA_DSC_COMMAND_TIMEOUT 0x0B00 -#define I2O_HBA_DSC_COMPLETE_WITH_ERROR 0x0400 -#define I2O_HBA_DSC_FUNCTION_UNAVAILABLE 0x3A00 -#define I2O_HBA_DSC_NO_ADAPTER 0x1100 -#define I2O_HBA_DSC_PARITY_ERROR_FAILURE 0x0F00 -#define I2O_HBA_DSC_PATH_INVALID 0x0700 -#define I2O_HBA_DSC_PROVIDE_FAILURE 0x1600 -#define I2O_HBA_DSC_QUEUE_FROZEN 0x4000 -#define I2O_HBA_DSC_REQUEST_ABORTED 0x0200 -#define I2O_HBA_DSC_REQUEST_INVALID 0x0600 -#define I2O_HBA_DSC_REQUEST_LENGTH_ERROR 0x1500 -#define I2O_HBA_DSC_REQUEST_TERMINATED 0x1800 -#define I2O_HBA_DSC_RESOURCE_UNAVAILABLE 0x3400 -#define I2O_HBA_DSC_BUS_BUSY 0x3F00 -#define I2O_HBA_DSC_BUS_RESET 0x0E00 -#define I2O_HBA_DSC_ID_INVALID 0x3900 -#define I2O_HBA_DSC_SEQUENCE_FAILURE 0x1400 -#define I2O_HBA_DSC_UNABLE_TO_ABORT 0x0300 -#define I2O_HBA_DSC_UNABLE_TO_TERMINATE 0x0900 -#define I2O_HBA_DSC_UNACKNOWLEDGED_EVENT 0x3500 -#define I2O_HBA_DSC_UNEXPECTED_BUS_FREE 0x1300 - -/* - * Bus Adapter Parameter Groups - */ - -#define I2O_HBA_CONTROLLER_INFO_GROUP_NO 0x0000 -#define I2O_HBA_HISTORICAL_STATS_GROUP_NO 0x0100 -#define I2O_HBA_SCSI_CONTROLLER_INFO_GROUP_NO 0x0200 -#define I2O_HBA_SCSI_BUS_PORT_INFO_GROUP_NO 0x0201 -#define I2O_HBA_FCA_CONTROLLER_INFO_GROUP_NO 0x0300 -#define I2O_HBA_FCA_PORT_INFO_GROUP_NO 0x0301 - -/* - * - 0000h - HBA Controller Information Parameter Group - */ - -/* - * Bus Type - */ - -#define I2O_HBA_BUS_TYPE_GENERIC 0x00 -#define I2O_HBA_BUS_TYPE_SCSI 0x01 -#define I2O_HBA_BUS_TYPE_FCA 0x10 - -typedef struct i2o_hba_controller_info_scalar { - uint8_t BusType; - uint8_t BusState; - uint16_t Reserved2; - uint8_t BusName[12]; -} i2o_hba_controller_info_scalar_t; - -/* - * - 0100h - HBA Historical Stats Parameter Group - */ - -typedef struct i2o_hba_hist_stats_scalar { - uint32_t TimeLastPoweredUp; - uint32_t TimeLastReset; -} i2o_hba_hist_stats_scalar_t; - -/* - * - 0200h - HBA SCSI Controller Information Parameter Group - */ - -/* - * SCSI Type - */ - -#define I2O_SCSI_TYPE_UNKNOWN 0x00 -#define I2O_SCSI_TYPE_SCSI_1 0x01 -#define I2O_SCSI_TYPE_SCSI_2 0x02 -#define I2O_SCSI_TYPE_SCSI_3 0x03 - -/* - * Protection Management - */ - -#define I2O_SCSI_PORT_PROT_OTHER 0x00 -#define I2O_SCSI_PORT_PROT_UNKNOWN 0x01 -#define I2O_SCSI_PORT_PROT_UNPROTECTED 0x02 -#define I2O_SCSI_PORT_PROT_PROTECTED 0x03 -#define I2O_SCSI_PORT_PROT_SCC 0x04 - -/* - * Settings - */ - -#define I2O_SCSI_PORT_PARITY_FLAG 0x01 -#define I2O_SCSI_PORT_PARITY_DISABLED 0x00 -#define I2O_SCSI_PORT_PARITY_ENABLED 0x01 - -#define I2O_SCSI_PORT_SCAN_ORDER_FLAG 0x02 -#define I2O_SCSI_PORT_SCAN_LOW_TO_HIGH 0x00 -#define I2O_SCSI_PORT_SCAN_HIGH_TO_LOW 0x02 - -#define I2O_SCSI_PORT_IID_FLAG 0x04 -#define I2O_SCSI_PORT_IID_DEFAULT 0x00 -#define I2O_SCSI_PORT_IID_SPECIFIED 0x04 - -#define I2O_SCSI_PORT_SCAM_FLAG 0x08 -#define I2O_SCSI_PORT_SCAM_DISABLED 0x00 -#define I2O_SCSI_PORT_SCAM_ENABLED 0x08 - -#define I2O_SCSI_PORT_TYPE_FLAG 0x80 -#define I2O_SCSI_PORT_TYPE_PARALLEL 0x00 -#define I2O_SCSI_PORT_TYPE_SERIAL 0x80 - -typedef struct i2o_hba_scsi_controller_info_scalar { - uint8_t SCSIType; - uint8_t ProtectionManagement; - uint8_t Settings; - uint8_t Reserved1; - uint32_t InitiatorID; - uint64_t ScanLun0Only; - uint16_t DisableDevice; - uint8_t MaxOffset; - uint8_t MaxDataWidth; - uint64_t MaxSyncRate; -} i2o_hba_scsi_controller_info_scalar_t; - -/* - * - 0201h - HBA SCSI Bus Port Information Parameter Group - */ - -/* - * NOTE: Refer to the SCSI Peripheral Class Bus Port Information - * Parameter Group field definitions for HBA SCSI Bus Port - * field definitions. - */ - -typedef struct i2o_hba_scsi_bus_port_info_scalar { - uint8_t PhysicalInterface; - uint8_t ElectricalInterface; - uint8_t Isochronous; - uint8_t ConnectorType; - uint8_t ConnectorGender; - uint8_t Reserved1; - uint16_t Reserved2; - uint32_t MaxNumberDevices; - uint32_t DeviceIdBegin; - uint32_t DeviceIdEnd; - uint8_t LunBegin[8]; - uint8_t LunEnd[8]; -} i2o_hba_scsi_bus_port_info_scalar_t; - -/* - * - 0300h - HBA FCA Controller Information Parameters Group defines - */ - -/* - * SCSI Type - */ - -#define I2O_FCA_TYPE_UNKNOWN 0x00 -#define I2O_FCA_TYPE_FCAL 0x01 - -typedef struct i2o_hba_fca_controller_info_scalar { - uint8_t FcaType; - uint8_t Reserved1; - uint16_t Reserved2; -} i2o_hba_fca_controller_info_scalar_t; - -/* - * - 0301h - HBA FCA Port Information Parameters Group defines - */ - -typedef struct i2o_hba_fca_port_info_scalar { - uint32_t Reserved4; -} i2o_hba_fca_port_info_scalar_t; - -/* - * I2O BUS ADAPTER CLASS SPECIFIC MESSAGE DEFINITIONS - */ - -/* - * I2O Bus Adapter Class Reply Message Frame - */ - -typedef struct i2o_hba_reply_message_frame { - i2o_single_reply_message_frame_t StdReplyFrame; -} i2o_hba_reply_message_frame_t; - -/* - * I2O HBA Adapter Reset Message Frame - */ - -typedef struct i2o_hba_adapter_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_hba_adapter_reset_message_t; - -/* - * I2O HBA Bus Quiesce Message Frame - */ - -typedef uint32_t i2o_hbq_flags_t; - -#define I2O_HBQ_FLAG_NORMAL 0x0000 -#define I2O_HBQ_FLAG_QUIESCE 0x0001 - -typedef struct i2o_hba_bus_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_hbq_flags_t Flags; -} i2o_hba_bus_quiesce_message_t; - -/* - * I2O HBA Bus Reset Message Frame - */ - -typedef struct i2o_hba_bus_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_hba_bus_reset_message_t; - -/* - * I2O HBA Bus Scan Message Frame - */ - -/* - * NOTE: SCSI-2 8-bit scalar LUN goes into offset 1 of Lun arrays - */ - -typedef struct i2o_hba_bus_scan_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_hba_bus_scan_message_t; - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OADPTR_H */ diff --git a/usr/src/uts/common/sys/i2o/i2obscsi.h b/usr/src/uts/common/sys/i2o/i2obscsi.h deleted file mode 100644 index 8cb3d33338..0000000000 --- a/usr/src/uts/common/sys/i2o/i2obscsi.h +++ /dev/null @@ -1,400 +0,0 @@ -/* - * ***************************************************************************** - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any kind, - * either express or implied, including but not limited to, implied warranties - * or merchantability and fitness for a particular purpose. I2O SIG does not - * warrant that this program will meet the user's requirements or that the - * operation of these programs will be uninterrupted or error-free. - * Acceptance and use of this program constitutes the user's understanding - * that he will have no recourse to I2O SIG for any actual or consequential - * damages including, but not limited to, loss profits arising out of use - * or inability to use this program. - * - * Member is permitted to create derivative works to this header-file program. - * However, all copies of the program and its derivative works must contain the - * I2O SIG copyright notice. - * - * ***************************************************************************** - */ - -/* - * *************************************************************************** - * - * I2OBSCSI.h -- I2O Base SCSI Device Class Message defintion file - * - * This file contains information presented in Chapter 6, Section 6 & 7 of - * the I2O Specification. - * - * *************************************************************************** - */ - -/* - * Copyright (c) 1998 by Sun Microsystems, Inc. - * All rights reserved. - */ - -#ifndef _SYS_I2OBSCSI_H -#define _SYS_I2OBSCSI_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define I2OBSCSI_REV 1_5_1 /* Header file revision string */ - -/* - * NOTES: See i2omsg.h for more info - */ - -#include <sys/i2o/i2omsg.h> /* Include the Base Message file */ -#include <sys/types.h> /* For system types defined */ - -/* - * SCSI Peripheral Class specific functions - * - * Although the names are SCSI Peripheral class specific, the values - * assigned are common with other classes when applicable. - */ - -#define I2O_SCSI_DEVICE_RESET 0x27 -#define I2O_SCSI_SCB_ABORT 0x83 -#define I2O_SCSI_SCB_EXEC 0x81 - -/* - * Detailed Status Codes for SCSI operations - * - * The 16-bit Detailed Status Code field for SCSI operations is divided - * into two separate 8-bit fields. The lower 8 bits are used to report - * Device Status information. The upper 8 bits are used to report - * Adapter Status information. The definitions for these two fields, - * however, will be consistent with the standard reply message frame - * structure declaration, which treats this as a single 16-bit field. - */ - - -/* - * SCSI Device Completion Status Codes (defined by SCSI-2/3) - */ - -#define I2O_SCSI_DEVICE_DSC_MASK 0x00FF - -#define I2O_SCSI_DSC_SUCCESS 0x0000 -#define I2O_SCSI_DSC_CHECK_CONDITION 0x0002 -#define I2O_SCSI_DSC_BUSY 0x0008 -#define I2O_SCSI_DSC_RESERVATION_CONFLICT 0x0018 -#define I2O_SCSI_DSC_COMMAND_TERMINATED 0x0022 -#define I2O_SCSI_DSC_TASK_SET_FULL 0x0028 -#define I2O_SCSI_DSC_ACA_ACTIVE 0x0030 - -/* - * SCSI Adapter Status Codes (based on CAM-1) - */ - -#define I2O_SCSI_HBA_DSC_MASK 0xFF00 - -#define I2O_SCSI_HBA_DSC_SUCCESS 0x0000 - -#define I2O_SCSI_HBA_DSC_REQUEST_ABORTED 0x0200 -#define I2O_SCSI_HBA_DSC_UNABLE_TO_ABORT 0x0300 -#define I2O_SCSI_HBA_DSC_COMPLETE_WITH_ERROR 0x0400 -#define I2O_SCSI_HBA_DSC_ADAPTER_BUSY 0x0500 -#define I2O_SCSI_HBA_DSC_REQUEST_INVALID 0x0600 -#define I2O_SCSI_HBA_DSC_PATH_INVALID 0x0700 -#define I2O_SCSI_HBA_DSC_DEVICE_NOT_PRESENT 0x0800 -#define I2O_SCSI_HBA_DSC_UNABLE_TO_TERMINATE 0x0900 -#define I2O_SCSI_HBA_DSC_SELECTION_TIMEOUT 0x0A00 -#define I2O_SCSI_HBA_DSC_COMMAND_TIMEOUT 0x0B00 - -#define I2O_SCSI_HBA_DSC_MR_MESSAGE_RECEIVED 0x0D00 -#define I2O_SCSI_HBA_DSC_SCSI_BUS_RESET 0x0E00 -#define I2O_SCSI_HBA_DSC_PARITY_ERROR_FAILURE 0x0F00 -#define I2O_SCSI_HBA_DSC_AUTOSENSE_FAILED 0x1000 -#define I2O_SCSI_HBA_DSC_NO_ADAPTER 0x1100 -#define I2O_SCSI_HBA_DSC_DATA_OVERRUN 0x1200 -#define I2O_SCSI_HBA_DSC_UNEXPECTED_BUS_FREE 0x1300 -#define I2O_SCSI_HBA_DSC_SEQUENCE_FAILURE 0x1400 -#define I2O_SCSI_HBA_DSC_REQUEST_LENGTH_ERROR 0x1500 -#define I2O_SCSI_HBA_DSC_PROVIDE_FAILURE 0x1600 -#define I2O_SCSI_HBA_DSC_BDR_MESSAGE_SENT 0x1700 -#define I2O_SCSI_HBA_DSC_REQUEST_TERMINATED 0x1800 - -#define I2O_SCSI_HBA_DSC_IDE_MESSAGE_SENT 0x3300 -#define I2O_SCSI_HBA_DSC_RESOURCE_UNAVAILABLE 0x3400 -#define I2O_SCSI_HBA_DSC_UNACKNOWLEDGED_EVENT 0x3500 -#define I2O_SCSI_HBA_DSC_MESSAGE_RECEIVED 0x3600 -#define I2O_SCSI_HBA_DSC_INVALID_CDB 0x3700 -#define I2O_SCSI_HBA_DSC_LUN_INVALID 0x3800 -#define I2O_SCSI_HBA_DSC_SCSI_TID_INVALID 0x3900 -#define I2O_SCSI_HBA_DSC_FUNCTION_UNAVAILABLE 0x3A00 -#define I2O_SCSI_HBA_DSC_NO_NEXUS 0x3B00 -#define I2O_SCSI_HBA_DSC_SCSI_IID_INVALID 0x3C00 -#define I2O_SCSI_HBA_DSC_CDB_RECEIVED 0x3D00 -#define I2O_SCSI_HBA_DSC_LUN_ALREADY_ENABLED 0x3E00 -#define I2O_SCSI_HBA_DSC_BUS_BUSY 0x3F00 - -#define I2O_SCSI_HBA_DSC_QUEUE_FROZEN 0x4000 - -/* - * SCSI Peripheral Device Parameter Groups - */ - -/* - * SCSI Configuration and Operating Structures and Defines - */ - -#define I2O_SCSI_DEVICE_INFO_GROUP_NO 0x0000 -#define I2O_SCSI_DEVICE_BUS_PORT_INFO_GROUP_NO 0x0001 - -/* - * - 0000h - SCSI Device Information Parameters Group defines - */ - -/* - * Device Type - */ - -#define I2O_SCSI_DEVICE_TYPE_DIRECT 0x00 -#define I2O_SCSI_DEVICE_TYPE_SEQUENTIAL 0x01 -#define I2O_SCSI_DEVICE_TYPE_PRINTER 0x02 -#define I2O_SCSI_DEVICE_TYPE_PROCESSOR 0x03 -#define I2O_SCSI_DEVICE_TYPE_WORM 0x04 -#define I2O_SCSI_DEVICE_TYPE_CDROM 0x05 -#define I2O_SCSI_DEVICE_TYPE_SCANNER 0x06 -#define I2O_SCSI_DEVICE_TYPE_OPTICAL 0x07 -#define I2O_SCSI_DEVICE_TYPE_MEDIA_CHANGER 0x08 -#define I2O_SCSI_DEVICE_TYPE_COMM 0x09 -#define I2O_SCSI_DEVICE_GRAPHICS_1 0x0A -#define I2O_SCSI_DEVICE_GRAPHICS_2 0x0B -#define I2O_SCSI_DEVICE_TYPE_ARRAY_CONT 0x0C -#define I2O_SCSI_DEVICE_TYPE_UNKNOWN 0x1F - -/* - * Flags - */ - -#define I2O_SCSI_PERIPHERAL_TYPE_FLAG 0x01 -#define I2O_SCSI_PERIPHERAL_TYPE_PARALLEL 0x00 -#define I2O_SCSI_PERIPHERAL_TYPE_SERIAL 0x01 - -#define I2O_SCSI_RESERVED_FLAG 0x02 - -#define I2O_SCSI_DISCONNECT_FLAG 0x04 -#define I2O_SCSI_DISABLE_DISCONNECT 0x00 -#define I2O_SCSI_ENABLE_DISCONNECT 0x04 - -#define I2O_SCSI_MODE_MASK 0x18 -#define I2O_SCSI_MODE_SET_DATA 0x00 -#define I2O_SCSI_MODE_SET_DEFAULT 0x08 -#define I2O_SCSI_MODE_SET_SAFEST 0x10 - -#define I2O_SCSI_DATA_WIDTH_MASK 0x60 -#define I2O_SCSI_DATA_WIDTH_8 0x00 -#define I2O_SCSI_DATA_WIDTH_16 0x20 -#define I2O_SCSI_DATA_WIDTH_32 0x40 - -#define I2O_SCSI_SYNC_NEGOTIATION_FLAG 0x80 -#define I2O_SCSI_DISABLE_SYNC_NEGOTIATION 0x00 -#define I2O_SCSI_ENABLE_SYNC_NEGOTIATION 0x80 - -/* - * - 0001h - SCSI Device Bus Port Info Parameters Group defines - */ - -/* - * Physical - */ - -#define I2O_SCSI_PORT_PHYS_OTHER 0x01 -#define I2O_SCSI_PORT_PHYS_UNKNOWN 0x02 -#define I2O_SCSI_PORT_PHYS_PARALLEL 0x03 -#define I2O_SCSI_PORT_PHYS_FIBRE_CHANNEL 0x04 -#define I2O_SCSI_PORT_PHYS_SERIAL_P1394 0x05 -#define I2O_SCSI_PORT_PHYS_SERIAL_SSA 0x06 - -/* - * Electrical - */ - -#define I2O_SCSI_PORT_ELEC_OTHER 0x01 -#define I2O_SCSI_PORT_ELEC_UNKNOWN 0x02 -#define I2O_SCSI_PORT_ELEC_SINGLE_ENDED 0x03 -#define I2O_SCSI_PORT_ELEC_DIFFERENTIAL 0x04 -#define I2O_SCSI_PORT_ELEC_LOW_VOLT_DIFF 0x05 -#define I2O_SCSI_PORT_ELEC_OPTICAL 0x06 - -/* - * Isochronous - */ - -#define I2O_SCSI_PORT_ISOC_NO 0x00 -#define I2O_SCSI_PORT_ISOC_YES 0x01 -#define I2O_SCSI_PORT_ISOC_UNKNOWN 0x02 - -/* - * Connector Type - */ - -#define I2O_SCSI_PORT_CONN_OTHER 0x01 -#define I2O_SCSI_PORT_CONN_UNKNOWN 0x02 -#define I2O_SCSI_PORT_CONN_NONE 0x03 -#define I2O_SCSI_PORT_CONN_SHIELDED_A_HD 0x04 -#define I2O_SCSI_PORT_CONN_UNSHIELDED_A_HD 0x05 -#define I2O_SCSI_PORT_CONN_SHIELDED_A_LD 0x06 -#define I2O_SCSI_PORT_CONN_UNSHIELDED_A_LD 0x07 -#define I2O_SCSI_PORT_CONN_SHIELDED_P_HD 0x08 -#define I2O_SCSI_PORT_CONN_UNSHIELDED_P_HD 0x09 -#define I2O_SCSI_PORT_CONN_SCA_I 0x0A -#define I2O_SCSI_PORT_CONN_SCA_II 0x0B -#define I2O_SCSI_PORT_CONN_FC_DB9 0x0C -#define I2O_SCSI_PORT_CONN_FC_FIBRE 0x0D -#define I2O_SCSI_PORT_CONN_FC_SCA_II_40 0x0E -#define I2O_SCSI_PORT_CONN_FC_SCA_II_20 0x0F -#define I2O_SCSI_PORT_CONN_FC_BNC 0x10 - -/* - * Connector Gender - */ - -#define I2O_SCSI_PORT_CONN_GENDER_OTHER 0x01 -#define I2O_SCSI_PORT_CONN_GENDER_UNKOWN 0x02 -#define I2O_SCSI_PORT_CONN_GENDER_FEMALE 0x03 -#define I2O_SCSI_PORT_CONN_GENDER_MALE 0x04 - - -/* - * SCSI Device Group 0000h - Device Information Parameter Group - */ - -typedef struct i2o_scsi_device_info_scalar { - uint8_t DeviceType; - uint8_t Flags; - uint16_t Reserved2; - uint32_t Identifier; - uint8_t LunInfo[8]; /* SCSI2 8-bit scalar LUN goes into */ - /* offset 1 */ - uint32_t QueueDepth; - uint8_t Reserved1a; - uint8_t NegOffset; - uint8_t NegDataWidth; - uint8_t Reserved1b; - uint64_t NegSyncRate; -} i2o_scsi_device_info_scalar_t; - -/* - * SCSI Device Group 0001h - Bus Port Information Parameter Group - */ - -typedef struct i2o_scsi_bus_port_info_scalar { - uint8_t PhysicalInterface; - uint8_t ElectricalInterface; - uint8_t Isochronous; - uint8_t ConnectorType; - uint8_t ConnectorGender; - uint8_t Reserved1; - uint16_t Reserved2; - uint32_t MaxNumberDevices; -} i2o_scsi_bus_port_info_scalar_t; - -/* - * I2O SCSI Peripheral Event Indicator Assignment - */ - -#define I2O_SCSI_EVENT_SCSI_SMART 0x00000010 - -/* - * SCSI Peripheral Class Specific Message Definitions - */ - -/* - * I2O SCSI Peripheral Successful Completion Reply Message Frame - */ - -typedef struct i2o_scsi_success_reply_message_frame { - i2o_single_reply_message_frame_t StdReplyFrame; - uint32_t TransferCount; -} i2o_scsi_success_reply_message_frame_t; - - - -/* - * I2O SCSI Peripheral Error Report Reply Message Frame - */ - -#define I2O_SCSI_SENSE_DATA_SZ 40 - -typedef struct i2o_scsi_error_reply_message_frame { - i2o_single_reply_message_frame_t StdReplyFrame; - uint32_t TransferCount; - uint32_t AutoSenseTransferCount; - uint8_t SenseData[I2O_SCSI_SENSE_DATA_SZ]; -} i2o_scsi_error_reply_message_frame_t; - - - -/* - * I2O SCSI Device Reset Message Frame - */ - -typedef struct i2o_scsi_device_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_scsi_device_reset_message_t; - - - -/* - * I2O SCSI Control Block Abort Message Frame - */ - -typedef struct i2o_scsi_scb_abort_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_transaction_context_t TransactionContextToAbort; -} i2o_scsi_scb_abort_message_t; - -/* - * I2O SCSI Control Block Execute Message Frame - */ - -#define I2O_SCSI_CDB_LENGTH 16 - -#define I2O_SCB_FLAG_XFER_DIR_MASK 0xC000 -#define I2O_SCB_FLAG_NO_DATA_XFER 0x0000 -#define I2O_SCB_FLAG_XFER_FROM_DEVICE 0x4000 -#define I2O_SCB_FLAG_XFER_TO_DEVICE 0x8000 - -#define I2O_SCB_FLAG_ENABLE_DISCONNECT 0x2000 - -#define I2O_SCB_FLAG_TAG_TYPE_MASK 0x0380 -#define I2O_SCB_FLAG_NO_TAG_QUEUEING 0x0000 -#define I2O_SCB_FLAG_SIMPLE_QUEUE_TAG 0x0080 -#define I2O_SCB_FLAG_HEAD_QUEUE_TAG 0x0100 -#define I2O_SCB_FLAG_ORDERED_QUEUE_TAG 0x0180 -#define I2O_SCB_FLAG_ACA_QUEUE_TAG 0x0200 - -#define I2O_SCB_FLAG_AUTOSENSE_MASK 0x0060 -#define I2O_SCB_FLAG_DISABLE_AUTOSENSE 0x0000 -#define I2O_SCB_FLAG_SENSE_DATA_IN_MESSAGE 0x0020 -#define I2O_SCB_FLAG_SENSE_DATA_IN_BUFFER 0x0060 - -typedef struct i2o_scsi_scb_execute_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t CDBLength; - uint8_t Reserved; - uint16_t SCBFlags; - uint8_t CDB[I2O_SCSI_CDB_LENGTH]; - uint32_t ByteCount; - i2o_sg_element_t SGL; -} i2o_scsi_scb_execute_message_t; - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OBSCSI_H */ diff --git a/usr/src/uts/common/sys/i2o/i2oexec.h b/usr/src/uts/common/sys/i2o/i2oexec.h deleted file mode 100644 index 9dfb92dba2..0000000000 --- a/usr/src/uts/common/sys/i2o/i2oexec.h +++ /dev/null @@ -1,2478 +0,0 @@ -/* - * ***************************************************************************** - * - * All software on this website is made available under the following terms and - * conditions. By downloading this software, you agree to abide by these terms - * and conditions with respect to this software. - * - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any kind, - * either express or implied, including but not limited to, implied warranties - * or merchantability and fitness for a particular purpose. I2O SIG does not - * warrant that this program will meet the user's requirements or that the - * operation of these programs will be uninterrupted or error-free. - * Acceptance and use of this program constitutes the user's understanding - * that he will have no recourse to I2O SIG for any actual or consequential - * damages including, but not limited to, loss profits arising out of use - * or inability to use this program. - * - * Member is permitted to create derivative works to this header-file program. - * However, all copies of the program and its derivative works must contain the - * I2O SIG copyright notice. - * - * ***************************************************************************** - */ - -/* - * ******************************************************************** - * I2OExec.h -- I2O Executive Class Message definition file - * - * This file contains information presented in Chapter 4 of the I2O(tm) - * Specification. - * ******************************************************************** - */ - -/* - * Copyright (c) 1998 by Sun Microsystems, Inc. - * All rights reserved. - */ - -#ifndef _SYS_I2OEXEC_H -#define _SYS_I2OEXEC_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#include <sys/i2o/i2omsg.h> /* the Base Message file */ -#include <sys/i2o/i2outil.h> -#include <sys/types.h> - - -#define I2OEXEC_REV 1_5_4 /* I2OExec header file revision string */ - - -/* - * **************************************************************************** - * NOTES: - * - * Gets, reads, receives, etc. are all even numbered functions. - * Sets, writes, sends, etc. are all odd numbered functions. - * Functions that both send and receive data can be either but an attempt - * is made to use the function number that indicates the greater transfer - * amount. Functions that do not send or receive data use odd function - * numbers. - * - * Some functions are synonyms like read, receive and send, write. - * - * All common functions will have a code of less than 0x80. - * Unique functions to a class will start at 0x80. - * Executive Functions start at 0xA0. - * - * Utility Message function codes range from 0 - 0x1f - * Base Message function codes range from 0x20 - 0xfe - * Private Message function code is 0xff. - * ***************************************************************************** - */ - -/* I2O Executive Function Codes. */ - -#define I2O_EXEC_ADAPTER_ASSIGN 0xB3 -#define I2O_EXEC_ADAPTER_READ 0xB2 -#define I2O_EXEC_ADAPTER_RELEASE 0xB5 -#define I2O_EXEC_BIOS_INFO_SET 0xA5 -#define I2O_EXEC_BOOT_DEVICE_SET 0xA7 -#define I2O_EXEC_CONFIG_VALIDATE 0xBB -#define I2O_EXEC_CONN_SETUP 0xCA -#define I2O_EXEC_DDM_DESTROY 0xB1 -#define I2O_EXEC_DDM_ENABLE 0xD5 -#define I2O_EXEC_DDM_QUIESCE 0xC7 -#define I2O_EXEC_DDM_RESET 0xD9 -#define I2O_EXEC_DDM_SUSPEND 0xAF -#define I2O_EXEC_DEVICE_ASSIGN 0xB7 -#define I2O_EXEC_DEVICE_RELEASE 0xB9 -#define I2O_EXEC_HRT_GET 0xA8 -#define I2O_EXEC_IOP_CLEAR 0xBE -#define I2O_EXEC_IOP_CONNECT 0xC9 -#define I2O_EXEC_IOP_RESET 0xBD -#define I2O_EXEC_LCT_NOTIFY 0xA2 -#define I2O_EXEC_OUTBOUND_INIT 0xA1 -#define I2O_EXEC_PATH_ENABLE 0xD3 -#define I2O_EXEC_PATH_QUIESCE 0xC5 -#define I2O_EXEC_PATH_RESET 0xD7 -#define I2O_EXEC_STATIC_MF_CREATE 0xDD -#define I2O_EXEC_STATIC_MF_RELEASE 0xDF -#define I2O_EXEC_STATUS_GET 0xA0 -#define I2O_EXEC_SW_DOWNLOAD 0xA9 -#define I2O_EXEC_SW_UPLOAD 0xAB -#define I2O_EXEC_SW_REMOVE 0xAD -#define I2O_EXEC_SYS_ENABLE 0xD1 -#define I2O_EXEC_SYS_MODIFY 0xC1 -#define I2O_EXEC_SYS_QUIESCE 0xC3 -#define I2O_EXEC_SYS_TAB_SET 0xA3 - - -/* I2O Get Status State values */ - -#define I2O_IOP_STATE_INITIALIZING 0x01 -#define I2O_IOP_STATE_RESET 0x02 -#define I2O_IOP_STATE_HOLD 0x04 -#define I2O_IOP_STATE_READY 0x05 -#define I2O_IOP_STATE_OPERATIONAL 0x08 -#define I2O_IOP_STATE_FAILED 0x10 -#define I2O_IOP_STATE_FAULTED 0x11 - - -/* Event Indicator Assignments for the Executive Class. */ - -#define I2O_EVENT_IND_RESOURCE_LIMIT 0x00000001 -#define I2O_EVENT_IND_CONNECTION_FAIL 0x00000002 -#define I2O_EVENT_IND_ADAPTER_FAULT 0x00000004 -#define I2O_EVENT_IND_POWER_FAIL 0x00000008 -#define I2O_EVENT_IND_RESET_PENDING 0x00000010 -#define I2O_EVENT_IND_RESET_IMMINENT 0x00000020 -#define I2O_EVENT_IND_HARDWARE_FAIL 0x00000040 -#define I2O_EVENT_IND_XCT_CHANGE 0x00000080 -#define I2O_EVENT_IND_NEW_LCT_ENTRY 0x00000100 -#define I2O_EVENT_IND_MODIFIED_LCT 0x00000200 -#define I2O_EVENT_IND_DDM_AVAILABILITY 0x00000400 - -/* Resource Limit Event Data */ - -#define I2O_EVENT_RESOURCE_LIMIT_LOW_MEMORY 0x00000001 -#define I2O_EVENT_RESOURCE_LIMIT_INBOUND_POOL_LOW 0x00000002 -#define I2O_EVENT_RESOURCE_LIMIT_OUTBOUND_POOL_LOW 0x00000004 - -/* Connection Fail Event Data */ - -#define I2O_EVENT_CONNECTION_FAIL_REPOND_NORMAL 0x00000000 -#define I2O_EVENT_CONNECTION_FAIL_NOT_REPONDING 0x00000001 -#define I2O_EVENT_CONNECTION_FAIL_NO_AVAILABLE_FRAMES 0x00000002 - -/* Reset Pending Event Data */ - -#define I2O_EVENT_RESET_PENDING_POWER_LOSS 0x00000001 -#define I2O_EVENT_RESET_PENDING_CODE_VIOLATION 0x00000002 - -/* Reset Imminent Event Data */ - -#define I2O_EVENT_RESET_IMMINENT_UNKNOWN_CAUSE 0x00000000 -#define I2O_EVENT_RESET_IMMINENT_POWER_LOSS 0x00000001 -#define I2O_EVENT_RESET_IMMINENT_CODE_VIOLATION 0x00000002 -#define I2O_EVENT_RESET_IMMINENT_PARITY_ERROR 0x00000003 -#define I2O_EVENT_RESET_IMMINENT_CODE_EXCEPTION 0x00000004 -#define I2O_EVENT_RESET_IMMINENT_WATCHDOG_TIMEOUT 0x00000005 - -/* Hardware Fail Event Data */ - -#define I2O_EVENT_HARDWARE_FAIL_UNKNOWN_CAUSE 0x00000000 -#define I2O_EVENT_HARDWARE_FAIL_CPU_FAILURE 0x00000001 -#define I2O_EVENT_HARDWARE_FAIL_MEMORY_FAULT 0x00000002 -#define I2O_EVENT_HARDWARE_FAIL_DMA_FAILURE 0x00000003 -#define I2O_EVENT_HARDWARE_FAIL_IO_BUS_FAILURE 0x00000004 - -/* DDM Availability Event Data */ - -#define I2O_EVENT_DDM_AVAILIBILITY_RESPOND_NORMAL 0x00000000 -#define I2O_EVENT_DDM_AVAILIBILITY_CONGESTED 0x00000001 -#define I2O_EVENT_DDM_AVAILIBILITY_NOT_RESPONDING 0x00000002 -#define I2O_EVENT_DDM_AVAILIBILITY_PROTECTION_VIOLATION 0x00000003 -#define I2O_EVENT_DDM_AVAILIBILITY_CODE_VIOLATION 0x00000004 - - -#define I2O_OPERATION_FLAG_ASSIGN_PERMANENT 0x01 - -/* ExecAdapterAssign Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_adapter_assign_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DdmTID:12; - uint32_t reserved:12; - uint32_t OperationFlags:8; - } s; - uint32_t w; - } u1; - i2o_hrt_entry_t HRTEntry; -} i2o_exec_adappter_assign_message_t; - -/* macros to access the bit fields in exec adapter assign message */ - -#define get_i2o_exec_adapter_DdmTID(mp, hdl) \ - (mp)->u1.s.DdmTID -#define put_i2o_exec_adapter_DdmTID(mp, id, hdl) \ - ((mp)->u1.s.DdmTID = (id)) -#define get_i2o_exec_adapter_OperationFlags(mp, hdl) \ - (mp)->u1.s.OperationFlags -#define put_i2o_exec_adapter_OperationFlags(mp, n, hdl) \ - ((mp)->u1.s.OperationFlags = (n)) - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_adapter_assign_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t OperationFlags:8; - uint32_t reserved:12; - uint32_t DdmTID:12; - } s; - uint32_t w; - } u1; - i2o_hrt_entry_t HRTEntry; -} i2o_exec_adappter_assign_message_t; - -/* macros to access the bit fields in exec adapter assign message */ - - -#define get_i2o_exec_adapter_OperationFlags(mp, hdl) \ - (mp)->u1.s.OperationFlags -#define put_i2o_exec_adapter_OperatonFlags(mp, n, hdl) \ - ((mp)->u1.s.OperationFlags = (n)) - -#define get_i2o_exec_adapter_DdmTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_adapter_DdmTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - -#define I2O_REQUEST_FLAG_CONFIG_REGISTER 0x00000000 -#define I2O_REQUEST_FLAG_IO_REGISTER 0x00000001 -#define I2O_REQUEST_FLAG_ADAPTER_MEMORY 0x00000002 - -/* ExecAdapterRead Function Message Frame structure. */ - -typedef struct i2o_exec_adapter_read_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t AdapterID; - uint32_t RequestFlags; - uint32_t Offset; - uint32_t Length; - i2o_sg_element_t SGL; -} i2o_exec_adapter_read_message_t; - - -#define I2O_OPERATION_FLAG_RELEASE_PERMANENT 0x01 - -/* ExecAdapterRelease Function Message Frame structure. */ - -typedef struct i2o_exec_dapater_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t reserved[3]; - uint8_t OperationFlags; - i2o_hrt_entry_t HRTEntry; -} i2o_exec_adapter_release_message_t; - - - -/* ExecBiosInfoSet Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_bios_info_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t reserved:12; - uint32_t BiosInfo:8; - } s; - uint32_t w; - } u1; -} i2o_exec_bios_info_set_message_t; - -/* macros to access the bit fields in exec bios info set message structure */ - -#define get_i2o_exec_bios_DeviceTID(mp, hdl) \ - (mp)->u1.s.DeviceTID -#define put_i2o_exec_bios_DeviceTID(mp, id, hdl) \ - ((mp)->u1.s.DeviceTID = (id)) -#define get_i2o_exec_BiosInfo(mp, hdl) \ - (mp)->u1.s.BiosInfo -#define put_i2o_exec_BiosInfo(mp, n, hdl) \ - ((mp)->u1.s.BiosInfo = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_bios_info_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t BiosInfo:8; - uint32_t reserved:12; - uint32_t DeviceTID:12; - } s; - uint32_t w; - } u1; -} i2o_exec_bios_info_set_message_t; - -/* macros to access the bit fields in exec bios info set message structure */ - -#define get_i2o_exec_BiosInfo(mp, hdl) \ - (mp)->u1.s.BiosInfo -#define put_i2o_exec_BiosInfo(mp, n, hdl) \ - ((mp)->u1.s.BiosInfo = (n)) - -#define get_i2o_exec_bios_DeviceID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_bios_DeviceID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -/* ExecBootDeviceSet Function Message Frame structure. */ - -typedef struct i2o_exec_boot_device_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t BootDevice:12; - uint32_t reserved:20; - } s; - uint32_t w; - } u1; -} i2o_exec_boot_device_set_message_t; - -/* macros to access the bit fields in exec boot set message structure */ - -#define get_i2o_exec_boot_BootDevice(mp, hdl) \ - (mp)->u1.s.BootDevice -#define put_i2o_exec_boot_BootDevice(mp, id, hdl) \ - ((mp)->u1.s.BootDevice = (id)) - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_boot_device_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved:20; - uint32_t BootDevice:12; - } s; - uint32_t w; - } u1; -} i2o_exec_boot_device_set_message_t; - -#define get_i2o_exec_boot_BootDevice(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_boot_BootDevice(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecConfigValidate Function Message Frame structure. */ - -typedef struct i2o_exec_config_validate_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_exec_config_validate_message_t; - - - -/* ExecConnSetup Requestor */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_alias_connect_setup { - union { - struct { - uint32_t IOP1AliasForTargetDevice:12; - uint32_t IOP2AliasForInitiatorDevice:12; - uint32_t reserved:8; - } s; - uint32_t w; - } u1; -} i2o_alias_connect_setup_t; - -/* macros to access the bit fields in alias connect setup structure */ - -#define get_i2o_exec_setup_IOP1AliasForTargetDevice(mp, hdl) \ - (mp)->u1.s.IOP1AliasForTargetDevice -#define put_i2o_exec_setup_IOP1AliasForTargetDevice(mp, id, hdl) \ - ((mp)->u1.s.IOP1AliasForTargetDevice = (id)) -#define get_i2o_exec_setup_IOP2AliasForInitiatorDevice(mp, hdl) \ - (mp)->u1.s.IOP2AliasForInitiatorDevice -#define put_i2o_exec_setup_IOP2AliasForInitiatortDevice(mp, n, hdl) \ - ((mp)->u1.s.IOP2AliasForInitiatortDevice = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_alias_connect_setup { - union { - struct { - uint32_t reserved:8; - uint32_t IOP2AliasForInitiatorDevice:12; - uint32_t IOP1AliasForTargetDevice:12; - } s; - uint32_t w; - } u1; -} i2o_alias_connect_setup_t; - -/* macros to access the bit fields in alias connect setup structure */ - -#define get_i2o_exec_setup_IOP2ForInitiatorDevice(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u1.w) >> 12) & 0xFFF) -#define put_i2o_exec_setup_IOP2ForInitiatorDevice(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, (ddi_get32(hdl, &(mp)->u.w) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#define get_i2o_exec_setup_IOP1AliasForTargetDevice(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_setup_IOP1AliasForTargetDevice(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -#define I2O_OPERATION_FLAG_PEER_TO_PEER_BIDIRECTIONAL 0x01 - -/* ExecConnSetup Object */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_object_connect_setup { - union { - struct { - uint32_t TargetDevice:12; - uint32_t InitiatorDevice:12; - uint32_t OperationFlags:8; - } s; - uint32_t w; - } u1; -} i2o_object_connect_setup_t; - -/* macros to access the bit fields in object connect setup structure */ - -#define get_i2o_exec_setup_TargetDevice(mp, hdl) \ - (mp)->u1.s.TargetDevice -#define put_i2o_exec_setup_TargetDevice(mp, id, hdl) \ - ((mp)->u1.s.TargetDevice = (id)) -#define get_i2o_exec_setup_InitiatorDevice(mp, hdl) \ - (mp)->u1.s.InitiatorDevice -#define put_i2o_exec_setup_InitiatorDevice(mp, n, hdl) \ - ((mp)->u1.s.InitiatorDevice = (id)) -#define get_i2o_exec_setup_OperationFlags(mp, hdl) \ - (mp)->u1.s.OpetationFlags -#define put_i2o_exec_setup_OperationFlags(mp, id, hdl) \ - ((mp)->u1.s.OperationFlags = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_object_connect_setup { - union { - struct { - uint32_t OperationFlags:8; - uint32_t InitiatorDevice:12; - uint32_t TargetDevice:12; - } s; - uint32_t w; - } u1; -} i2o_object_connect_setup_t; - -/* macros to access the bit fields in object connect setup structure */ - -#define get_i2o_exec_setup_OperationFlags(mp, hdl) \ - (mp)->u1.s.OperationFlags -#define put_i2o_exec_setup_OperationFlags(mp, n, hdl) \ - ((mp)->u1.s.OperationFlags = (n)) - -#define get_i2o_exec_setup_InitiatorDevice(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u1.w) >> 12) & 0xFFF) -#define put_i2o_exec_setup_InitiatorDevice(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, (ddi_get32(hdl, &(mp)->u.w) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#define get_i2o_exec_setup_TargetDevice(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_setup_TargetDevice(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecConnSetup Function Message Frame structure. */ - -typedef struct i2o_exec_conn_setup_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_object_connect_setup_t ObjectInfo; - i2o_alias_connect_setup_t AliasInfo; - uint16_t IOP2InboundMFrameSize; - uint16_t reserved; - uint32_t MessageClass; -} i2o_exec_conn_setup_message_t; - - -/* ExecConnSetup Object Reply */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_object_connect_reply { - union { - struct { - uint32_t TargetDevice:12; - uint32_t InitiatorDevice:12; - uint32_t ReplyStatusCode:8; - } s; - uint32_t w; - } u1; -} i2o_object_connect_reply_t; - -/* macros to access the bit fields in object connect reply structure */ - -#define get_connect_reply_TargetDevice(mp, hdl) \ - (mp)->u1.s.TargetDevice -#define get_connect_reply_InitiatorDevice(mp, hdl) \ - (mp)->u1.s.InitiatorDevice -#define get_connect_reply_RepluStatus(mp, hdl) \ - (mp)->u1.s.ReplyStatusCode - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_object_connect_reply { - union { - struct { - uint32_t ReplyStatusCode:8; - uint32_t InitiatorDevice:12; - uint32_t TargetDevice:12; - } s; - uint32_t w; - } u1; -} i2o_object_connect_reply_t; - -/* macros to access the bit fields in object connect reply structure */ - -#define get_connect_reply_ReplyStatusCode(mp, hdl) \ - (mp)->u1.s.ReplyStatusCode - -#define get_connect_reply_InitiatorDevice(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u1.w) >> 12) & 0xFFF) - -#define get_connect_reply_TargetDevice(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) - -#endif - - -/* ExecConnSetup reply structure. */ - -typedef struct i2o_exec_conn_setup_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_object_connect_reply_t ObjectInfo; - i2o_alias_connect_setup_t AliasInfo; - uint16_t IOP2InboundMFrameSize; - uint16_t reserved; -} i2o_exec_conn_setup_reply_t; - - -/* ExecDdmDestroy Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_ddm_destroy_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DdmTID:12; - uint32_t reserved:20; - } s; - uint32_t w; - } u1; -} i2o_exec_ddm_destroy_message_t; - -/* macros to access the bit fields in exec ddm destroy message structure */ - -#define get_i2o_exec_ddm_destroy_DdmTID(mp, hdl) \ - (mp)->u1.s.DdmTID -#define put_i2o_exec_ddm_destroy_DdmTID(mp, id, hdl) \ - ((mp)->u1.s.DdmTID = (id)) - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_ddm_destroy_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved:20; - uint32_t DdmTID:12; - } s; - uint32_t w; - } u1; -} i2o_exec_ddm_destroy_message_t; - -/* macros to access the bit fields in exec ddm destroy message structure */ - -#define get_i2o_exec_ddm_destroy_DdmTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_ddm_destroy_DdmTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecDdmEnable Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_ddm_enable_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t reserved1:20; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_enable_message_t; - -/* macros to access the bit fields in exec ddm enable message structure */ - -#define get_i2o_exec_ddm_enable_DeviceTID(mp, hdl) \ - (mp)->u2.s2.DeviceTID -#define put_i2o_exec_ddm_enable_DeviceTID(mp, id, hdl) \ - ((mp)->u2.s2.DeviceTID = (id)) - -#define get_i2o_exec_ddm_enable_IOP_ID(mp, hdl) \ - (mp)->u3.s3.IOP_ID -#define put_i2o_exec_ddm_enable_IOP_ID(mp, id, hdl) \ - ((mp)->u3.s3.IOP_ID = (id)) - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_ddm_enable_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved1:20; - uint32_t DeviceTID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_enable_message_t; - -/* macros to access the bit fields in exec ddm enable message structure */ - -#define get_i2o_exec_ddm_enable_DeviceTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_ddm_enable_DeviceTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_ddm_enable_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) - -#define put_i2o_exec_ddm_enable_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h1, \ - (ddi_get16(hdl, &(mp)->u3.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - -/* ExecDdmQuiesce Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_ddm_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t reserved1:20; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_quiesce_message_t; - -/* macros to access the bit fields in exec ddm quiesce message structure */ - -#define get_i2o_exec_ddm_quiesce_DeviceTID(mp, hdl) \ - (mp)->u2.s2.DeviceTID -#define put_i2o_exec_ddm_quiesce_DeviceTID(mp, id, hdl) \ - ((mp)->u2.s2.DeviceTID = (id)) - -#define get_i2o_exec_ddm_quiesce_IOP_ID(mp, hdl) \ - (mp)->u3.s3.IOP_ID -#define put_i2o_exec_ddm_quiesce_IOP_ID(mp, id, hdl) \ - ((mp)->u3.s3.IOP_ID = (id)) - -#endif - - -/* ExecDdmQuiesce Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_ddm_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved1:20; - uint32_t DeviceTID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_quiesce_message_t; - -/* macros to access the bit fields in exec ddm quiesce message structure */ - -#define get_i2o_exec_ddm_quiesce_DeviceTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_ddm_quiesce_DeviceTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_ddm_quiesce_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) - -#define put_i2o_exec_ddm_quiesce_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h1, \ - (ddi_get16(hdl, &(mp)->u3.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecDdmReset Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_ddm_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t reserved1:20; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_reset_message_t; - -/* macros to access the bit fields in exec ddm reset message structure */ - -#define get_i2o_exec_ddm_reset_DeviceTID(mp, hdl) \ - (mp)->u2.s2.DeviceTID -#define put_i2o_exec_ddm_reset_DeviceTID(mp, id, hdl) \ - ((mp)->u2.s2.DeviceTID = (id)) - -#define get_i2o_exec_ddm_reset_IOP_ID(mp, hdl) \ - (mp)->u3.s3.IOP_ID -#define put_i2o_exec_ddm_resetquiesce_IOP_ID(mp, id, hdl) \ - ((mp)->u3.s3.IOP_ID = (id)) - -#endif - - -/* ExecDdmReset Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_ddm_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved1:20; - uint32_t DeviceTID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_ddm_reset_message_t; - -/* macros to access the bit fields in exec ddm reset message structure */ - -#define get_i2o_exec_ddm_reset_DeviceTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_ddm_reset_DeviceTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_ddm_reset_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) - -#define put_i2o_exec_ddm_reset_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h1, \ - (ddi_get16(hdl, &(mp)->u3.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecDdmSuspend Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_ddm_suspend_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DdmTID:12; - uint32_t reserved:20; - } s; - uint32_t w; - } u1; -} i2o_exec_ddm_suspend_message_t; - -/* macros to access the bit fields in exec ddm suspend message structure */ - -#define get_i2o_exec_ddm_suspend_DdmTID(mp, hdl) \ - (mp)->u1.s.DdmTID -#define put_i2o_exec_ddm_suspend_DdmTID(mp, id, hdl) \ - ((mp)->u1.s.DdmTID = (id)) - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_ddm_suspend_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved:20; - uint32_t DdmTID:12; - } s; - uint32_t w; - } u1; -} i2o_exec_ddm_suspend_message_t; - -/* macros to access the bit fields in exec ddm suspend message structure */ - -#define get_i2o_exec_ddm_suspend_DdmTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u1.w) & 0xFFF) -#define put_i2o_exec_ddm_suspend_DdmTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u1.w, \ - (ddi_get32(hdl, &(mp)->u1.w) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -#define I2O_OPERATION_FLAG_ASSIGN_PERMANENT 0x01 - - -/* ExecDeviceAssign Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_device_assign_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t DdmTID:12; - uint32_t OperationFlags:8; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_device_assign_message_t; - - -/* macros to access the bit fields in device assign message structure */ - -#define get_i2o_exec_device_assign_DeviceTID(mp, hdl) \ - (mp)->u2.s2.DeviceTID -#define put_i2o_exec_device_assign_DeviceTID(mp, id, hdl) \ - ((mp)->u2.s2.DeviceTID = (id)) -#define get_i2o_exec_device_assign_DdmTID(mp, hdl) \ - (mp)->u2.s2.DdmTID -#define put_i2o_exec_device_assign_DdmTID(mp, n, hdl) \ - ((mp)->u2.s2.DdmTID = (id)) -#define get_i2o_exec_device_assign_OperationFlags(mp, hdl) \ - (mp)->u2.s2.OpetationFlags -#define put_i2o_exec_device_assign_OperationFlags(mp, id, hdl) \ - ((mp)->u2.s2.OperationFlags = (id)) - -#define get_i2o_exec_device_assign_IOP_ID(mp, hdl) \ - (mp)->u3.s3.IOP_ID -#define put_i2o_exec_device_assign_IOP_ID(mp, id, hdl) \ - ((mp)->u3.s3.IOP_ID = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - - -typedef struct i2o_exec_device_assign_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t OperationFlags:8; - uint32_t DdmTID:12; - uint32_t DeviceTID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_device_assign_message_t; - -/* macros to access the bit fields in device assign message structure */ - -#define get_i2o_exec_device_assign_OperationFlags(mp, hdl) \ - (mp)->u2.s2.OperationFlags -#define put_i2o_exec_device_assign_OperationFlags(mp, n, hdl) \ - ((mp)->u2.s2.OperationFlags = (n)) - -#define get_i2o_exec_device_assign_DdmTID(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u2.w2) >> 12) & 0xFFF) -#define put_i2o_exec_device_assign_DdmTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, (ddi_get32(hdl, &(mp)->u2.w2) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#define get_i2o_exec_device_assign_DeviceTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_device_assign_DeviceTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_device_assign_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) -#define put_i2o_exec_device_assign_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h1, \ - (ddi_get16(hdl, &(mp)->u3.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -#define I2O_OPERATION_FLAG_RELEASE_PERMANENT 0x01 - -/* ExecDeviceRelease Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_device_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t DeviceTID:12; - uint32_t DdmTID:12; - uint32_t OperationFlags:8; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_device_release_message_t; - - -/* macros to access the bit fields in device release message structure */ - -#define get_i2o_exec_device_release_DeviceTID(mp, hdl) \ - (mp)->u2.s2.DeviceTID -#define put_i2o_exec_device_release_DeviceTID(mp, id, hdl) \ - ((mp)->u2.s2.DeviceTID = (id)) -#define get_i2o_exec_device_release_DdmTID(mp, hdl) \ - (mp)->u2.s2.DdmTID -#define put_i2o_exec_device_release_DdmTID(mp, n, hdl) \ - ((mp)->u2.s2.DdmTID = (id)) -#define get_i2o_exec_device_release_OperationFlags(mp, hdl) \ - (mp)->u2.s2.OpetationFlags -#define put_i2o_exec_device_release_OperationFlags(mp, id, hdl) \ - ((mp)->u2.s2.OperationFlags = (id)) - -#define get_i2o_exec_device_release_IOP_ID(mp, hdl) \ - (mp)->u3.s3.IOP_ID -#define put_i2o_exec_device_release_IOP_ID(mp, id, hdl) \ - ((mp)->u3.s3.IOP_ID = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - - -typedef struct i2o_exec_device_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t OperationFlags:8; - uint32_t DdmTID:12; - uint32_t DeviceTID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s3; - uint16_t h1; - } u3; - uint16_t HostUnitID; -} i2o_exec_device_release_message_t; - -/* macros to access the bit fields in device assign message structure */ - - -#define get_i2o_exec_device_release_OperationFlags(mp, hdl) \ - (mp)->u2.s2.OperationFlags -#define put_i2o_exec_device_release_OperationFlags(mp, n, hdl) \ - ((mp)->u2.s2.OperationFlags = (n)) - -#define get_i2o_exec_device_release_DdmTID(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u2.w2) >> 12) & 0xFFF) -#define put_i2o_exec_device_release_DdmTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, (ddi_get32(hdl, &(mp)->u2.w2) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#define get_i2o_exec_device_release_DeviceTID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_device_release_DeviceTID(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_device_release_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) - -#define put_i2o_exec_device_release_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h1, \ - (ddi_get16(hdl, &(mp)->u3.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* HRT Entry Structure defined in I2OMSG.H */ - -/* ExecHrtGet Function Message Frame structure. */ - -typedef struct i2o_exec_hrt_get_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_sg_element_t SGL; -} i2o_exec_hrt_get_message_t; - - - -/* ExecIopClear Function Message Frame structure. */ - -typedef struct i2o_exec_iop_clear_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_exec_iop_clear_message_t; - - -/* ExecIopConnect Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_iop_connect_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t reserved:24; - uint32_t IOP1MsgerType:8; - - } s2; - uint32_t w2; - } u2; - uint16_t IOP1InboundMFrameSize; - union { - struct { - uint16_t IOP1AliasForIOP2:12; - uint16_t reserved1:4; - } s3; - uint16_t h2; - } u3; - union { - struct { - uint16_t IOP_ID1:12; - uint16_t reserved2:4; - } s4; - uint16_t h1; - } u4; - uint16_t HostUnitID1; -} i2o_exec_iop_connect_message_t; - - -/* macros to access the bit fields in exec iop connect message structure */ - -#define get_i2o_exec_iop_connect_IOP1MsgerType(p, hdl) \ - (mp)->u2.s2.IOP1MsgerType - -#define put_i2o_exec_iop_connect_IOP1MsgerType(mp, id, hdl) \ - ((mp)->u2.s2.IOP1MsgerType = (id)) - - -#define get_i2o_exec_iop_connect_IOP1AliasForIOP2(p, hdl) \ - (mp)->u3.s3.IOP1AliasForIOP2 - -#define put_i2o_exec_iop_connect_IOP1AliasForIOP2(mp, id, hdl) \ - ((mp)->u3.s3.IOP1AliasForIOP2 = (id)) - -#define get_i2o_exec_iop_connect_IOP_ID1(p, hdl) \ - (mp)->u4.s4.IOP_ID1 - -#define put_i2o_exec_iop_connect_IOP_ID1(mp, id, hdl) \ - ((mp)->u4.s4.IOP_ID1 = (id)) - - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_iop_connect_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint32_t IOP1MsgerType:8; - uint32_t reserved:24; - } s2; - uint32_t w2; - } u2; - - uint16_t IOP1InboundMFrameSize; - union { - struct { - uint16_t reserved1:8; - uint16_t IOP1AliasForIOP2:12; - } s3; - uint16_t h2; - } u3; - union { - struct { - uint16_t reserved2:4; - uint16_t IOP_ID1:12; - } s4; - uint16_t h1; - } u4; - uint16_t HostUnitID1; -} i2o_exec_iop_connect_message_t; - -/* macros to access the bit fields in exec iop connect message structure */ - -#define get_i2o_exec_iop_connect_IOP1MsgerType(p, hdl) \ - ((ddi_get32(hdl, &(p)->u2.w2) >> 24) & 0xFF) - -#define put_i2o_exec_iop_connect_IOP1MsgerType(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFF) | (((id) & 0xFF) << 24)) - - -#define get_i2o_exec_iop_connect_IOP1AliasForIOP2(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h2) & 0xFFF) - -#define put_i2o_exec_iop_connect_IOP1AliasForIOP2(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h2, \ - (ddi_get16(hdl, &(mp)->u3.h2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_iop_connect_IOP_ID1(p, hdl) \ - (ddi_get32(hdl, &(p)->u4.h1) & 0xFFF) - -#define put_i2o_exec_iop_connect_IOP_ID1(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u4.h1, \ - (ddi_get16(hdl, &(mp)->u4.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecIopConnect reply structure */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_iop_connect_iop_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t DetailedStatusCode; - uint8_t reserved; - uint8_t ReqStatus; - uint16_t IOP2InboundMFrameSize; - union { - struct { - uint16_t IOP2AliasForIOP1:12; - uint16_t reserved1:4; - } s3; - uint16_t h2; - } u3; - union { - struct { - uint16_t IOP_ID2:12; - uint16_t reserved2:4; - } s4; - uint16_t w4; - } u4; - uint16_t HostUnitID2; -} i2o_exec_iop_connect_reply_t; - -/* macros to access the bit fields in exec iop connect reply structure */ - -#define get_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(p, hdl) \ - (mp)->u3.s3.IOP2AliasForIOP1 - -#define put_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(mp, id, hdl) \ - ((mp)->u3.s3.IOP2AliasForIOP1 = (id)) - -#define get_i2o_exec_iop_connect_reply_IOP_ID2(p, hdl) \ - (mp)->u4.s4.IOP_ID2 - -#define put_i2o_exec_iop_connect_reply_IOP_ID2(mp, id, hdl) \ - ((mp)->u4.s4.IOP_ID2 = (id)) - -#endif - - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_iop_connect_iop_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t DetailedStatusCode; - uint8_t reserved; - uint8_t ReqStatus; - uint16_t IOP2InboundMFrameSize; - union { - struct { - uint16_t reserved1:8; - uint16_t IOP2AliasForIOP1:12; - } s3; - uint16_t h2; - } u3; - union { - struct { - uint16_t reserved2:4; - uint16_t IOP_ID2:12; - } s4; - uint16_t h1; - } u4; - uint16_t HostUnitID2; -} i2o_exec_iop_connect_reply_t; - -/* macros to access the bit fields in exec iop connect reply structure */ - -#define get_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h2) & 0xFFF) - -#define put_i2o_exec_iop_connect_reply_IOP2AliasForIOP1(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u3.h2, \ - (ddi_get16(hdl, &(mp)->u3.h2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_iop_connect_reply_IOP_ID2(p, hdl) \ - (ddi_get32(hdl, &(p)->u4.h1) & 0xFFF) - -#define put_i2o_exec_iop_connect_reply_IOP_ID2(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u4.h1, \ - (ddi_get16(hdl, &(mp)->u4.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -#define I2O_EXEC_IOP_RESET_RESERVED_SZ 16 - -#define I2O_EXEC_IOP_RESET_IN_PROGRESS 0x01 -#define I2O_EXEC_IOP_RESET_REJECTED 0x02 - -#define I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ 3 - -typedef struct i2o_exec_iop_reset_status { - volatile uint8_t ResetStatus; - uint8_t reserved[I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ]; -} i2o_exec_iop_reset_status_t; - - -/* ExecIopReset Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_iop_reset_message { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t TargetAddress:12; - uint32_t InitiatorAddress:12; - uint32_t Function:8; - } s2; - uint32_t w2; - } u2; - uint8_t Reserved[I2O_EXEC_IOP_RESET_RESERVED_SZ]; - uint32_t StatusWordLowAddress; - uint32_t StatusWordHighAddress; -} i2o_exec_iop_reset_message_t; - -/* macros to access the bit fields in iop reset message */ - -#define get_i2o_exec_reset_TargetAddress(mp, hdl) \ - (mp)->u2.s2.TargetAddress -#define put_i2o_exec_reset_TargetAddress(mp, id, hdl) \ - ((mp)->u2.s2.TargetAddress = (id)) -#define get_i2o_exec_reset_InitiatorAddress(mp, hdl) \ - (mp)->u2.s2.InitiatorAddress -#define put_i2o_exec_reset_InitiatorAddress(mp, id, hdl) \ - ((mp)->u2.s2.InitiatorAddress = (id)) -#define get_i2o_exec_reset_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_i2o_exec_reset_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_iop_reset_message { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t Function:8; - uint32_t InitiatorAddress:12; - uint32_t TargetAddress:12; - } s2; - uint32_t w2; - } u2; - - uint8_t Reserved[I2O_EXEC_IOP_RESET_RESERVED_SZ]; - uint32_t StatusWordLowAddress; - uint32_t StatusWordHighAddress; -} i2o_exec_iop_reset_message_t; - -/* macros to access the bit fields in iop reset message */ - -#define get_i2o_exec_reset_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_i2o_exec_reset_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) - -#define get_i2o_exec_reset_TargetAddress(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_reset_TargetAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_reset_InitiatorAddress(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u2.w2) >> 12) & 0xFFF) -#define put_i2o_exec_reset_InitiatorAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, (ddi_get32(hdl, &(mp)->u2.w2) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#endif - - -/* LCT Entry Structure defined in I2OMSG.H */ - -/* ExecLCTNotify Function Message Frame structure. */ - -typedef struct i2o_exec_lct_notify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t ClassIdentifier; - uint32_t LastReportedChangeIndicator; - i2o_sg_element_t SGL; -} i2o_exec_lct_notify_message_t; - - -/* ExecOutboundInit Function Message Frame structure. */ - -typedef struct i2o_exec_outbound_init_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t HostPageFrameSize; - uint8_t InitCode; - uint8_t reserved; - uint16_t OutboundMFrameSize; - i2o_sg_element_t SGL; -} i2o_exec_outbound_init_message_t; - - -#define I2O_EXEC_OUTBOUND_INIT_IN_PROGRESS 0x01 -#define I2O_EXEC_OUTBOUND_INIT_REJECTED 0x02 -#define I2O_EXEC_OUTBOUND_INIT_FAILED 0x03 -#define I2O_EXEC_OUTBOUND_INIT_COMPLETE 0x04 - -#define I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ 3 - - -typedef struct i2o_exec_outbound_init_status { - uint8_t InitStatus; - uint8_t reserved[I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ]; -} i2o_exec_outbound_init_status_t; - - -typedef struct i2o_exec_outbound_init_reclaim_list { - uint32_t MFACount; - uint32_t MFAReleaseCount; - uint32_t MFAAddress[1]; -} i2o_exec_outbound_init_reclaim_list_t; - - -/* ExecPathEnable Function Message Frame structure. */ - - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_path_enable_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_enable_message_t; - -/* macros to access the bit fields in exec path enable message structure */ - -#define get_i2o_exec_path_enable_IOP_ID(mp, hdl) \ - (mp)->u2.s2.IOP_ID -#define put_i2o_exec_path_enable_IOP_ID(mp, id, hdl) \ - ((mp)->u2.s2.IOP_ID = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_path_enable_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_enable_message_t; - -/* macros to access the bit fields in exec path enable message structure */ - -#define get_i2o_exec_path_enable_IOP_ID(p, hdl) \ - (ddi_get32(hdl, &(p)->u2.h1) & 0xFFF) - -#define put_i2o_exec_path_enable_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u2.h1, \ - (ddi_get16(hdl, &(mp)->u2.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecPathQuiesce Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_path_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_quiesce_message_t; - -/* macros to access the bit fields in exec path quiesce message structure */ - -#define get_i2o_exec_path_quiesce_IOP_ID(mp, hdl) \ - (mp)->u2.s2.IOP_ID -#define put_i2o_exec_path_quiesce_IOP_ID(mp, id, hdl) \ - ((mp)->u2.s2.IOP_ID = (id)) - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_path_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_quiesce_message_t; - -/* macros to access the bit fields in exec path quiesce message structure */ - -#define get_i2o_exec_path_quiesce_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u2.h1) & 0xFFF) - -#define put_i2o_exec_path_quiesce_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u2.h1, \ - (ddi_get16(hdl, &(mp)->u2.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecPathReset Function Message Frame structure. */ - - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_path_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_reset_message_t; - -/* macros to access the bit fields in exec path reset message structure */ - -#define get_i2o_exec_path_reset_IOP_ID(mp, hdl) \ - (mp)->u2.s2.IOP_ID -#define put_i2o_exec_path_reset_IOP_ID(mp, id, hdl) \ - ((mp)->u2.s2.IOP_ID = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_path_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; -} i2o_exec_path_reset_message_t; - -/* macros to access the bit fields in exec path reset message structure */ - -#define get_i2o_exec_path_reset_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u2.h1) & 0xFFF) - -#define put_i2o_exec_path_reset_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u2.h1, \ - (ddi_get16(hdl, &(mp)->u2.h1) & ~0xFFF) | ((id) & 0xFFF)) - - -#endif - - -#define I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ 3 - -/* ExecStaticMfCreate Message Frame structure */ - -typedef struct i2o_exec_static_mf_create_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t MaxOutstanding; - uint8_t reserved[I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ]; - i2o_message_frame_t StaticMessageFrame; -} i2o_exec_static_mf_create_message_t; - - -/* ExecStaticMfCreate Message Frame reply */ - -typedef struct i2o_exec_static_mf_create_reply { - i2o_single_reply_message_frame_t StdReplyFrame; - i2o_message_frame_t StaticMFA; -} i2o_exec_static_mf_create_reply_t; - - -/* ExecStaticMfRelease Message Frame structure */ - -typedef struct i2o_exec_static_mf_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_message_frame_t StaticMFA; -} i2o_exec_static_mf_release_message_t; - - - -#define I2O_EXEC_STATUS_GET_RESERVED_SZ 16 - -/* ExecStatusGet Function Message Frame structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_status_get_message { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t Function:8; - uint32_t InitiatorAddress:12; - uint32_t TargetAddress:12; - } s2; - uint32_t w2; - } u2; - uint8_t Reserved[I2O_EXEC_STATUS_GET_RESERVED_SZ]; - uint32_t ReplyBufferAddressLow; - uint32_t ReplyBufferAddressHigh; - uint32_t ReplyBufferLength; -} i2o_exec_status_get_message_t; - -/* macros to access the bit fields in i2o exec status get message */ - -#define get_i2o_exec_status_TargetAddress(mp, hdl) \ - (mp)->u2.s2.TargetAddress -#define put_i2o_exec_status_TargetAddress(mp, id, hdl) \ - ((mp)->u2.s2.TargetAddress = (id)) -#define get_i2o_exec_status_InitiatorAddress(mp, hdl) \ - (mp)->u2.s2.InitiatorAddress -#define put_i2o_exec_status_InitiatorAddress(mp, id, hdl) \ - ((mp)->u2.s2.InitiatorAddress = (id)) -#define get_i2o_exec_status_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_i2o_exec_status_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_status_get_message { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t Function:8; - uint32_t InitiatorAddress:12; - uint32_t TargetAddress:12; - } s2; - uint32_t w2; - } u2; - uint8_t Reserved[I2O_EXEC_STATUS_GET_RESERVED_SZ]; - uint32_t ReplyBufferAddressLow; - uint32_t ReplyBufferAddressHigh; - uint32_t ReplyBufferLength; -} i2o_exec_status_get_message_t; - -/* macros to access the bit fields in i2o exec status get message */ - -#define get_i2o_exec_status_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_i2o_exec_status_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) - -#define get_i2o_exec_status_TargetAddress(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_i2o_exec_status_TargetAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_status_InitiatorAddress(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u2.w2) >> 12) & 0xFFF) -#define put_i2o_exec_status_InitiatorAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, (ddi_get32(hdl, &(mp)->u2.w2) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) - -#endif - - -#define I2O_IOP_STATUS_PROD_ID_STR_SZ 24 -#define I2O_EXEC_STATUS_GET_REPLY_RESERVED_SZ 6 - -/* ExecStatusGet reply Structure */ - -#define I2O_IOP_CAP_CONTEXT_32_ONLY 0x00000000 -#define I2O_IOP_CAP_CONTEXT_64_ONLY 0x00000001 -#define I2O_IOP_CAP_CONTEXT_32_64_NOT_CURRENTLY 0x00000002 -#define I2O_IOP_CAP_CONTEXT_32_64_CURRENTLY 0x00000003 -#define I2O_IOP_CAP_CURRENT_CONTEXT_NOT_CONFIG 0x00000000 -#define I2O_IOP_CAP_CURRENT_CONTEXT_32_ONLY 0x00000004 -#define I2O_IOP_CAP_CURRENT_CONTEXT_64_ONLY 0x00000008 -#define I2O_IOP_CAP_CURRENT_CONTEXT_32_64 0x0000000C -#define I2O_IOP_CAP_INBOUND_PEER_SUPPORT 0x00000010 -#define I2O_IOP_CAP_OUTBOUND_PEER_SUPPORT 0x00000020 -#define I2O_IOP_CAP_PEER_TO_PEER_SUPPORT 0x00000040 - - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_status_get_reply { - uint16_t OrganizationID; - uint16_t reserved; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved1:4; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; - union { - struct { - uint16_t SegmentNumber:12; - uint16_t I2oVersion:4; - } s3; - uint16_t h1; - } u3; - uint8_t IopState; - uint8_t MessengerType; - uint16_t InboundMFrameSize; - uint8_t InitCode; - uint8_t reserved2; - uint32_t MaxInboundMFrames; - uint32_t CurrentInboundMFrames; - uint32_t MaxOutboundMFrames; - uint8_t ProductIDString[I2O_IOP_STATUS_PROD_ID_STR_SZ]; - uint32_t ExpectedLCTSize; - uint32_t IopCapabilities; - uint32_t DesiredPrivateMemSize; - uint32_t CurrentPrivateMemSize; - uint32_t CurrentPrivateMemBase; - uint32_t DesiredPrivateIOSize; - uint32_t CurrentPrivateIOSize; - uint32_t CurrentPrivateIOBase; - uint8_t reserved3[3]; - volatile uint8_t SyncByte; -} i2o_exec_status_get_reply_t; - -#define get_i2o_exec_status_reply_IOP_ID(p, hdl) (p)->u2.s2.IOP_ID -#define get_i2o_exec_status_reply_SegmentNumber(p, hdl)(p)->u3.s3.SegmentNumber -#define get_i2o_exec_status_reply_I2oVersion(p, hdl)(p)->u3.s3.I2oVersion - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_status_get_reply { - uint16_t OrganizationID; - uint16_t reserved; - union { - struct { - uint16_t reserved1:4; - uint16_t IOP_ID:12; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; - union { - struct { - uint16_t I2oVersion:4; - uint16_t SegmentNumber:12; - } s3; - uint16_t h1; - } u3; - uint8_t IopState; - uint8_t MessengerType; - uint16_t InboundMFrameSize; - uint8_t InitCode; - uint8_t reserved2; - uint32_t MaxInboundMFrames; - uint32_t CurrentInboundMFrames; - uint32_t MaxOutboundMFrames; - uint8_t ProductIDString[I2O_IOP_STATUS_PROD_ID_STR_SZ]; - uint32_t ExpectedLCTSize; - uint32_t IopCapabilities; - uint32_t DesiredPrivateMemSize; - uint32_t CurrentPrivateMemSize; - uint32_t CurrentPrivateMemBase; - uint32_t DesiredPrivateIOSize; - uint32_t CurrentPrivateIOSize; - uint32_t CurrentPrivateIOBase; - uint8_t reserved3[3]; - uint8_t SyncByte; -} i2o_exec_status_get_reply_t; - -#define get_i2o_exec_status_reply_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u2.h1) & 0xFFF) - -#define get_i2o_exec_status_reply_I2oVersion(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) >> 4) -#define get_i2o_exec_staus_reply_SegmentNumber(p, hdl) \ - (ddi_get16(hdl, &(p)->u3.h1) & 0xFFF) - -#endif - - -#define I2O_EXEC_SW_DOWNLOAD_FLAG_LOAD_MEMORY 0x00 -#define I2O_EXEC_SW_DOWNLOAD_FLAG_PERMANENT_STORE 0x01 -#define I2O_EXEC_SW_DOWNLOAD_FLAG_EXPERIMENTAL 0x00 -#define I2O_EXEC_SW_DOWNLOAD_FLAG_OVERRIDE 0x02 - -#define I2O_EXEC_SW_TYPE_DDM 0x01 -#define I2O_EXEC_SW_TYPE_DDM_MPB 0x02 -#define I2O_EXEC_SW_TYPE_DDM_CONFIG_TABLE 0x03 -#define I2O_EXEC_SW_TYPE_IRTOS 0x11 -#define I2O_EXEC_SW_TYPE_IRTOS_PRIVATE_MODULE 0x12 -#define I2O_EXEC_SW_TYPE_IRTOS_DIALOG_TABLE 0x13 -#define I2O_EXEC_SW_TYPE_IOP_PRIVATE_MODULE 0x22 -#define I2O_EXEC_SW_TYPE_IOP_DIALOG_TABLE 0x23 - - -/* I2O ExecSwDownload/Upload/Remove SwID Structure */ - -typedef struct i2o_sw_id { - uint16_t ModuleID; - uint16_t OrganizationID; -} i2o_sw_id_t; - - -/* ExecSwDownload Function Message Frame structure. */ - -typedef struct i2o_exec_sw_donwload_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t CurrentFragment; - uint8_t TotalFragments; - uint8_t SwType; - uint8_t DownloadFlags; - uint32_t SWSize; - i2o_sw_id_t SwID; - i2o_sg_element_t SGL; -} i2o_exec_sw_download_message_t; - - - - -/* ExecSwUpload Function Message Frame structure. */ - -typedef struct i2o_exec_sw_upload_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t CurrentFragment; - uint8_t TotalFragments; - uint8_t SwType; - uint8_t UploadFlags; - uint32_t SWSize; - i2o_sw_id_t SwID; - i2o_sg_element_t SGL; -} i2o_exec_sw_upload_message_t; - - -/* ExecSwRemove Function Message Frame structure. */ - -typedef struct i2o_exec_sw_remove_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t reserved; - uint8_t SwType; - uint8_t RemoveFlags; - uint32_t SWSize; - i2o_sw_id_t SwID; -} i2o_exec_sw_remove_message_t; - - -/* ExecSysEnable Function Message Frame structure. */ - -typedef struct i2o_exec_sys_enable_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_exec_sys_enable_message_t; - - -/* ExecSysModify Function Message Frame structure. */ - -typedef struct i2o_exec_sys_modify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_sg_element_t SGL; -} i2o_exec_sys_modify_message_t; - - -/* ExecSysQuiesce Function Message Frame structure. */ - -typedef struct i2o_exec_sys_quiesce_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_exec_sys_quiesce_message_t; - - -/* ExecSysTabSet (System Table) Function Message Frame structure. */ - -#define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_IOP 0x000 -#define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_HOST 0x001 -#define I2O_EXEC_SYS_TAB_IOP_ID_UNKNOWN_IOP 0xFFF -#define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_LOCAL_UNIT 0x0000 -#define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_UNKNOWN_UNIT 0xffff -#define I2O_EXEC_SYS_TAB_SEG_NUMBER_LOCAL_SEGMENT 0x000 -#define I2O_EXEC_SYS_TAB_SEG_NUMBER_UNKNOWN_SEGMENT 0xfff - - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_exec_sys_tab_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t IOP_ID:12; - uint16_t reserved:4; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; - union { - struct { - uint32_t SegmentNumber:12; - uint32_t reserved1:20; - } s3; - uint32_t w3; - } u3; - i2o_sg_element_t SGL; -} i2o_exec_sys_tab_set_message_t; - -/* macros to access the bit fields in exec ddm enable message structure */ - -#define get_i2o_exec_sys_tab_set_IOP_ID(mp, hdl) \ - (mp)->u2.s2.IOP_ID -#define put_i2o_exec_sys_tab_set_IOP_ID(mp, id, hdl) \ - ((mp)->u2.s2.IOP_ID = (id)) - -#define get_i2o_exec_sys_tab_set_SegmentNumber(mp, hdl) \ - (mp)->u3.s3.SegmentNumber -#define put_i2o_exec_sys_tab_set_SegmentNumber(mp, id, hdl) \ - ((mp)->u3.s3.SegmentNumber = (id)) -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_exec_sys_tab_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - union { - struct { - uint16_t reserved:4; - uint16_t IOP_ID:12; - } s2; - uint16_t h1; - } u2; - uint16_t HostUnitID; - union { - struct { - uint32_t reserved1:20; - uint32_t SegmentNumnber:12; - } s3; - uint32_t w3; - } u3; - i2o_sg_element_t SGL; -} i2o_exec_sys_tab_set_message_t; - -/* macros to access the bit fields in exec ddm enable message structure */ - -#define get_i2o_exec_sys_tab_set_IOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u2.h1) & 0xFFF) - -#define put_i2o_exec_sys_tab_set_IOP_ID(mp, id, hdl) \ - ddi_put16(hdl, &(mp)->u2.h1, \ - (ddi_get16(hdl, &(mp)->u2.h1) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_i2o_exec_sys_tab_set_SegmentNumber(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u3.w3) & 0xFFF) -#define put_i2o_exec_sys_tab_set_SegmentNumber(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u3.w3, \ - (ddi_get32(hdl, &(mp)->u3.w3) & ~0xFFF) | ((id) & 0xFFF)) - -#endif - - -/* ExecSysTabSet (System Table) Header Reply structure. */ - -#define I2O_SET_SYSTAB_RESERVED_SZ 8 - -typedef struct i2o_set_systab_header { - uint8_t NumberEntries; - uint8_t SysTabVersion; - uint16_t reserved; - uint32_t CurrentChangeIndicator; - uint8_t reserved1[I2O_SET_SYSTAB_RESERVED_SZ]; -/* I2O_SYSTAB_ENTRY SysTabEntry[1]; */ -} i2o_set_systab_header_t; - - -#define I2O_RESOURCE_MANAGER_VERSION 0 - -typedef struct i2o_messenger_info { - uint32_t InboundMessagePortAddressLow; - uint32_t InboundMessagePortAddressHigh; -} i2o_messenger_info_t; - -/* ExecSysTabSet IOP Descriptor Entry structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_iop_entry { - uint16_t OrganizationID; - uint16_t reserved; - union { - struct { - uint32_t IOP_ID:12; - uint32_t reserved1:20; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t SegmentNumber:12; - uint16_t I2oVersion:4; - } s3; - uint16_t h1; - } u3; - uint8_t IopState; - uint8_t MessengerType; - uint16_t InboundMessageFrameSize; - uint16_t reserved2; - uint32_t LastChanged; - uint32_t IopCapabilities; - i2o_messenger_info_t MessengerInfo; -} i2o_iop_entry_t; - - -#define get_i2o_iop_entry_IOP_ID(mp, hdl) \ - ((mp)->u2.s2.IOP_ID) - -#define put_i2o_iop_entry_IOP_ID(mp, v, hdl) \ - ((mp)->u2.s2.IOP_ID) = (v) - -#define get_i2o_iop_entry_SegmentNumber(mp, hdl) \ - ((mp)->u3.s3.SegmentNumber) - -#define put_i2o_iop_entry_SegmentNumber(mp, v, hdl) \ - ((mp)->u3.s3.SegmentNumber) = (v) - -#define get_i2o_iop_entry_I2oVersion(mp, hdl) \ - ((mp)->u3.s3.I2oVersion) - -#define put_i2o_iop_entry_I2oVersion(mp, v, hdl) \ - ((mp)->u3.s3.I2oVersion) = (v) - -#endif - - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_iop_entry { - uint16_t OrganizationID; - uint16_t reserved; - union { - struct { - uint32_t reserved1:20; - uint32_t IOP_ID:12; - } s2; - uint32_t w2; - } u2; - union { - struct { - uint16_t I2oVersion:4; - uint16_t SegmentNumber:12; - } s3; - uint16_t h1; - } u3; - uint8_t IopState; - uint8_t MessengerType; - uint16_t InboundMessageFrameSize; - uint16_t reserved2; - uint32_t LastChanged; - uint32_t IopCapabilities; - i2o_messenger_info_t MessengerInfo; -} i2o_iop_entry_t; - - -#define get_i2o_iop_entry_IOP_ID(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) - -#define put_i2o_iop_entry_IOP_ID(mp, v, hdl) \ - (ddi_put32(hdl, &(mp)->u2.w2) & 0xFFF, (v)) - -#define get_i2o_iop_entry_SegmentNumber(mp, hdl) \ - (ddi_get16(hdl, &(mp)->u3.h1) & 0xFFF) - -#define put_i2o_iop_entry_SegmentNumber(mp, v, hdl) \ - (ddi_put16(hdl, &(mp)->u3.h1) & 0xFFF, (v)) - -#define get_i2o_iop_entry_I2oVersion(mp, hdl) \ - ((ddi_get16(hdl, &(mp)->u3.h1) >> 12) & 0xF) - -#define put_i2o_iop_entry_I2oVersion(mp, v, hdl) \ - ((ddi_put16(hdl, &(mp)->u3.h1) >> 12) & 0xF, (v)) - -#endif - - -/* ************************************************************************** */ -/* Executive Parameter Groups */ -/* ************************************************************************** */ - - -#define I2O_EXEC_IOP_HARDWARE_GROUP_NO 0x0000 -#define I2O_EXEC_IOP_MESSAGE_IF_GROUP_NO 0x0001 -#define I2O_EXEC_EXECUTING_ENVIRONMENT_GROUP_NO 0x0002 -#define I2O_EXEC_EXECUTING_DDM_LIST_GROUP_NO 0x0003 -#define I2O_EXEC_DRIVER_STORE_GROUP_NO 0x0004 -#define I2O_EXEC_DRIVER_STORE_TABLE_GROUP_NO 0x0005 -#define I2O_EXEC_IOP_BUS_ATTRIBUTES_GROUP_NO 0x0006 -#define I2O_EXEC_IOP_SW_ATTRIBUTES_GROUP_NO 0x0007 -#define I2O_EXEC_HARDWARE_RESOURCE_TABLE_GROUP_NO 0x0100 -#define I2O_EXEC_LCT_SCALAR_GROUP_NO 0x0101 -#define I2O_EXEC_LCT_TABLE_GROUP_NO 0x0102 -#define I2O_EXEC_SYSTEM_TABLE_GROUP_NO 0x0103 -#define I2O_EXEC_EXTERNAL_CONN_TABLE_GROUP_NO 0x0104 - - -/* EXEC Group 0000h - IOP Hardware Parameter Group */ - -/* IOP HardWare Capabilities defines */ - -#define I2O_IOP_HW_CAP_SELF_BOOT 0x00000001 -#define I2O_IOP_HW_CAP_IRTOS_UPGRADEABLE 0x00000002 -#define I2O_IOP_HW_CAP_DOWNLOADABLE_DDM 0x00000004 -#define I2O_IOP_HW_CAP_INSTALLABLE_DDM 0x00000008 -#define I2O_IOP_HW_CAP_BATTERY_BACKUP_RAM 0x00000010 - -/* IOP Processor Type defines */ - -#define I2O_IOP_PROC_TYPE_INTEL_80960 0x00 -#define I2O_IOP_PROC_TYPE_AMD_29000 0x01 -#define I2O_IOP_PROC_TYPE_MOTOROLA_68000 0x02 -#define I2O_IOP_PROC_TYPE_ARM 0x03 -#define I2O_IOP_PROC_TYPE_MIPS 0x04 -#define I2O_IOP_PROC_TYPE_SPARC 0x05 -#define I2O_IOP_PROC_TYPE_POWER_PC 0x06 -#define I2O_IOP_PROC_TYPE_ALPHA 0x07 -#define I2O_IOP_PROC_TYPE_INTEL_X86 0x08 -#define I2O_IOP_PROC_TYPE_OTHER 0xFF - - -typedef struct i2o_exec_iop_hardware_scalar { - uint16_t I2oVendorID; - uint16_t ProductID; - uint32_t ProcessorMemory; - uint32_t PermMemory; - uint32_t HWCapabilities; - uint8_t ProcessorType; - uint8_t ProcessorVersion; -} i2o_exec_iop_hardware_scalar_t; - - -/* EXEC Group 0001h - IOP Message Interface Parameter Group */ - -/* InitCode defines */ -#define I2O_MESSAGE_IF_INIT_CODE_NO_OWNER 0x00 -#define I2O_MESSAGE_IF_INIT_CODE_BIOS 0x10 -#define I2O_MESSAGE_IF_INIT_CODE_OEM_BIOS_EXTENSION 0x20 -#define I2O_MESSAGE_IF_INIT_CODE_ROM_BIOS_EXTENSION 0x30 -#define I2O_MESSAGE_IF_INIT_CODE_OS 0x80 - -typedef struct i2o_exec_iop_message_if_scalar { - uint32_t InboundFrameSize; - uint32_t InboundSizeTarget; - uint32_t InboundMax; - uint32_t InboundTarget; - uint32_t InboundPoolCount; - uint32_t InboundCurrentFree; - uint32_t InboundCurrentPost; - uint16_t StaticCount; - uint16_t StaticInstanceCount; - uint16_t StaticLimit; - uint16_t StaticInstanceLimit; - uint32_t OutboundFrameSize; - uint32_t OutboundMax; - uint32_t OutboundMaxTarget; - uint32_t OutboundCurrentFree; - uint32_t OutboundCurrentPost; - uint8_t InitCode; -} i2o_exec_iop_message_if_scalar_t; - - -/* EXEC Group 0002h - Executing Environment Parameter Group */ - -typedef struct i2o_exec_execute_environment_scalar { - uint32_t MemTotal; - uint32_t MemFree; - uint32_t PageSize; - uint32_t EventQMax; - uint32_t EventQCurrent; - uint32_t DDMLoadMax; -} i2o_exec_execute_environment_scalar_t; - - -/* EXEC Group 0003h - Executing DDM's Parameter Group */ - -/* ModuleType Defines */ - -#define I2O_EXEC_DDM_MODULE_TYPE_OTHER 0x00 -#define I2O_EXEC_DDM_MODULE_TYPE_DOWNLOAD 0x01 -#define I2O_EXEC_DDM_MODULE_TYPE_EMBEDDED 0x22 - - -typedef struct i2o_exec_execute_ddm_table { - uint16_t DdmTID; - uint8_t ModuleType; - uint8_t reserved; - uint16_t I2oVendorID; - uint16_t ModuleID; - uint8_t ModuleName[I2O_MODULE_NAME_SZ]; - uint32_t ModuleVersion; - uint32_t DataSize; - uint32_t CodeSize; -} i2o_exec_execute_ddm_table_t; - - -/* EXEC Group 0004h - Driver Store Environment Parameter Group */ - - -typedef struct i2o_exec_driver_store_scalar { - uint32_t ModuleLimit; - uint32_t ModuleCount; - uint32_t CurrentSpace; - uint32_t FreeSpace; -} i2o_exec_driver_store_scalar_t; - - -/* EXEC Group 0005h - Driver Store Parameter Group */ - - -typedef struct i2o_exec_driver_store_table { - uint16_t StoredDdmIndex; - uint8_t ModuleType; - uint8_t reserved; - uint16_t I2oVendorID; - uint16_t ModuleID; - uint8_t ModuleName[I2O_MODULE_NAME_SZ]; - uint32_t ModuleVersion; - uint16_t DateDay; - uint16_t DateMonth; - uint32_t DateYear; - uint32_t ModuleSize; - uint32_t MpbSize; - uint32_t ModuleFlags; -} i2o_exec_driver_store_table_t; - - -/* EXEC Group 0006h - IOP's Bus Attributes Parameter Group */ - -#define I2O_EXEC_IOP_BUS_ATTRIB_SYSTEM_BUS 0x00 -#define I2O_EXEC_IOP_BUS_ATTRIB_BRIDGED_SYSTEM_BUS 0x01 -#define I2O_EXEC_IOP_BUS_ATTRIB_PRIVATE 0x02 - -typedef struct i2o_exec_iop_bus_attribute_table { - uint32_t BusID; - uint8_t BusType; - uint8_t MaxAdapters; - uint8_t AdapterCount; - uint8_t BusAttributes; -} i2o_exec_iop_bus_attribute_table_t; - - -/* EXEC Group 0007h - IOP's Bus Attributes Parameter Group */ - -#define I2O_EXEC_IOP_SW_CAP_IRTOS_I2O_COMPLIANT 0x00000001 -#define I2O_EXEC_IOP_SW_CAP_IRTOS_UPGRADEABLE 0x00000002 -#define I2O_EXEC_IOP_SW_CAP_DOWNLOADABLE_DDM 0x00000004 -#define I2O_EXEC_IOP_SW_CAP_INSTALLABLE_DDM 0x00000008 - -typedef struct i2o_exec_iop_sw_attributes_scalar { - uint16_t I2oVendorID; - uint16_t ProductID; - uint32_t CodeSize; - uint32_t SWCapabilities; -} i2o_exec_iop_sw_attributes_scalar_t; - - -/* EXEC Group 0100h - Hardware Resource Table Parameter Group */ - -typedef struct i2o_exec_hardware_resource_table { - uint32_t AdapterID; - uint16_t StateInfo; /* AdapterState plus Local TID */ - uint8_t BusNumber; - uint8_t BusType; - u_longlong_t PhysicalLocation; - uint32_t MemorySpace; - uint32_t IoSpace; -} i2o_exec_hardware_resource_table_t; - -/* EXEC Group 0101h - Logical Configuration Table Scalar Parameter Group */ - -typedef struct i2o_exec_lct_scalar { - uint16_t BootDevice; - uint32_t IopFlags; - uint32_t CurrentChangeIndicator; -} i2o_exec_lct_scalar_t; - -/* EXEC Group 0102h - Logical Configuration Table Parameter Group */ - -typedef struct i2o_exec_lct_table { - uint16_t LocalTID; - uint16_t UserTID; - uint16_t ParentTID; - uint16_t DdmTID; - uint32_t ChangeIndicator; - uint32_t DeviceFlags; - uint32_t ClassID; - uint32_t SubClass; - uint8_t IdentityTag[I2O_IDENTITY_TAG_SZ]; - uint32_t EventCapabilities; - uint8_t BiosInfo; -} i2o_exec_lct_table_t; - -/* EXEC Group 0103h - System Table Parameter Group */ - -#define I2O_MESSENGER_TYPE_MEMORY_MAPPED_MESSAGE_UNIT 0x0 - -typedef struct i2o_exec_system_table { - uint16_t IOP_ID; - uint16_t OrganizationID; - uint16_t SegmentNumber; - uint8_t Version; - uint8_t IopState; - uint8_t MessengerType; - uint8_t reserved; - uint32_t InboundMessagePortAddress; - uint16_t InboundMessageFrameSize; - uint32_t IopCapabilities; - i2o_messenger_info_t MessengerInfo; -} i2o_exec_system_table_t; - - -/* EXEC Group 0104h - External Connection Table Parameter Group */ - -#define I2O_EXEC_XCT_FLAGS_REMOTE_IOP_CREATED_CONNECTION 0x00 -#define I2O_EXEC_XCT_FLAGS_THIS_IOP_CREATED_CONNECTION 0x01 - -typedef struct i2o_exec_external_connection_table { - uint16_t LocalAliasTID; - uint16_t RemoteTID; - uint16_t RemoteIOP; - uint16_t RemoteUnitID; - uint8_t Flags; - uint8_t reserved; -} i2o_exec_external_connection_table_t; - - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OEXEC_H */ diff --git a/usr/src/uts/common/sys/i2o/i2omsg.h b/usr/src/uts/common/sys/i2o/i2omsg.h deleted file mode 100644 index bad40e2733..0000000000 --- a/usr/src/uts/common/sys/i2o/i2omsg.h +++ /dev/null @@ -1,1570 +0,0 @@ -/* - * Copyright (c) 1998-1999 by Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * ************************************************************************* - * All software on this website is made available under the following - * terms and conditions. By downloading this software, you agree to - * abide by these terms and conditions with respect to this software. - * - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any - * kind, either express or implied, including but not limited to, - * implied warranties or merchantability and fitness for a particular - * purpose. I2O SIG does not warrant that this program will meet the - * user's requirements or that the operation of these programs will be - * uninterrupted or error-free. Acceptance and use of this program - * constitutes the user's understanding that he will have no recourse - * to I2O SIG for any actual or consequential damages including, but - * not limited to, loss profits arising out of use or inability to use - * this program. - * - * Member is permitted to create deriavative works to this header-file - * program. However, all copies of the program and its derivative - * works must contain the I2O SIG copyright notice. - * ************************************************************************* - */ - -/* - * ************************************************************************* - * i2omsg.h -- I2O Message defintion file - * - * This file contains information presented in Chapter 3, 4 and 6 of - * the I2O(tm) Specification and most of the I2O Global defines and - * Typedefs. - * ************************************************************************* - */ - -#ifndef _SYS_I2OMSG_H -#define _SYS_I2OMSG_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define I2OMSG_REV 1_5_4 /* I2OMsg header file revision string */ - -/* - * ************************************************************************* - * NOTES: - * - * Gets, reads, receives, etc. are all even numbered functions. - * Sets, writes, sends, etc. are all odd numbered functions. - * Functions that both send and receive data can be either but an attempt is - * made to use the function number that indicates the greater transfer amount. - * Functions that do not send or receive data use odd function numbers. - * - * Some functions are synonyms like read, receive and send, write. - * - * All common functions will have a code of less than 0x80. - * Unique functions to a class will start at 0x80. - * Executive Functions start at 0xA0. - * - * Utility Message function codes range from 0 - 0x1f - * Base Message function codes range from 0x20 - 0xfe - * Private Message function code is 0xff. - * ************************************************************************* - */ - -#include <sys/types.h> -#include <sys/dditypes.h> - -/* Set to 1 for 64 bit Context Fields */ -#define I2O_64BIT_CONTEXT 0 - -/* ************************************************************************** */ - -/* Common functions accross all classes. */ - -#define I2O_PRIVATE_MESSAGE 0xFF - -/* ************************************************************************** */ -/* Class ID and Code Assignments */ - - -#define I2O_CLASS_VERSION_10 0x00 -#define I2O_CLASS_VERSION_11 0x01 - -/* Class Code Names: Table 6-1 Class Code Assignments. */ - -#define I2O_CLASS_EXECUTIVE 0x000 -#define I2O_CLASS_DDM 0x001 -#define I2O_CLASS_RANDOM_BLOCK_STORAGE 0x010 -#define I2O_CLASS_SEQUENTIAL_STORAGE 0x011 -#define I2O_CLASS_LAN 0x020 -#define I2O_CLASS_WAN 0x030 -#define I2O_CLASS_FIBRE_CHANNEL_PORT 0x040 -#define I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL 0x041 -#define I2O_CLASS_SCSI_PERIPHERAL 0x051 -#define I2O_CLASS_ATE_PORT 0x060 -#define I2O_CLASS_ATE_PERIPHERAL 0x061 -#define I2O_CLASS_FLOPPY_CONTROLLER 0x070 -#define I2O_CLASS_FLOPPY_DEVICE 0x071 -#define I2O_CLASS_BUS_ADAPTER_PORT 0x080 -/* Class Codes 0x090 - 0x09f are reserved for Peer-to-Peer classes */ -#define I2O_CLASS_MATCH_ANYCLASS 0xffffffff - -#define I2O_SUBCLASS_i960 0x001 -#define I2O_SUBCLASS_HDM 0x020 -#define I2O_SUBCLASS_ISM 0x021 - -/* ************************************************************************** */ -/* Message Frame defines and structures */ - -/* Defines for the Version_Status field. */ - -#define I2O_VERSION_10 0x00 -#define I2O_VERSION_11 0x01 - -#define I2O_VERSION_OFFSET_NUMBER_MASK 0x07 -#define I2O_VERSION_OFFSET_SGL_TRL_OFFSET_MASK 0xF0 - -/* - * Defines for the Message Flags Field. - * Please Note that the FAIL bit is only set in the Transport Fail Message. - */ -#define I2O_MESSAGE_FLAGS_STATIC 0x01 -#define I2O_MESSAGE_FLAGS_64BIT_CONTEXT 0x02 -#define I2O_MESSAGE_FLAGS_MULTIPLE 0x10 -#define I2O_MESSAGE_FLAGS_FAIL 0x20 -#define I2O_MESSAGE_FLAGS_LAST 0x40 -#define I2O_MESSAGE_FLAGS_REPLY 0x80 - -/* Defines for Request Status Codes: Table 3-1 Reply Status Codes. */ - -#define I2O_REPLY_STATUS_SUCCESS 0x00 -#define I2O_REPLY_STATUS_ABORT_DIRTY 0x01 -#define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER 0x02 -#define I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER 0x03 -#define I2O_REPLY_STATUS_ERROR_DIRTY 0x04 -#define I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER 0x05 -#define I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER 0x06 -#define I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY 0x08 -#define I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER 0x09 -#define I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER 0x0A -#define I2O_REPLY_STATUS_TRANSACTION_ERROR 0x0B -#define I2O_REPLY_STATUS_PROGRESS_REPORT 0x80 - -/* - * DetailedStatusCode defines for ALL messages: Table 3-2 Detailed Status Codes. - */ - -#define I2O_DETAIL_STATUS_SUCCESS 0x0000 -#define I2O_DETAIL_STATUS_BAD_KEY 0x0002 -#define I2O_DETAIL_STATUS_TCL_ERROR 0x0003 -#define I2O_DETAIL_STATUS_REPLY_BUFFER_FULL 0x0004 -#define I2O_DETAIL_STATUS_NO_SUCH_PAGE 0x0005 -#define I2O_DETAIL_STATUS_INSUFFICIENT_RESOURCE_SOFT 0x0006 -#define I2O_DETAIL_STATUS_INSUFFICIENT_RESOURCE_HARD 0x0007 -#define I2O_DETAIL_STATUS_CHAIN_BUFFER_TOO_LARGE 0x0009 -#define I2O_DETAIL_STATUS_UNSUPPORTED_FUNCTION 0x000A -#define I2O_DETAIL_STATUS_DEVICE_LOCKED 0x000B -#define I2O_DETAIL_STATUS_DEVICE_RESET 0x000C -#define I2O_DETAIL_STATUS_INAPPROPRIATE_FUNCTION 0x000D -#define I2O_DETAIL_STATUS_INVALID_INITIATOR_ADDRESS 0x000E -#define I2O_DETAIL_STATUS_INVALID_MESSAGE_FLAGS 0x000F -#define I2O_DETAIL_STATUS_INVALID_OFFSET 0x0010 -#define I2O_DETAIL_STATUS_INVALID_PARAMETER 0x0011 -#define I2O_DETAIL_STATUS_INVALID_REQUEST 0x0012 -#define I2O_DETAIL_STATUS_INVALID_TARGET_ADDRESS 0x0013 -#define I2O_DETAIL_STATUS_MESSAGE_TOO_LARGE 0x0014 -#define I2O_DETAIL_STATUS_MESSAGE_TOO_SMALL 0x0015 -#define I2O_DETAIL_STATUS_MISSING_PARAMETER 0x0016 -#define I2O_DETAIL_STATUS_TIMEOUT 0x0017 -#define I2O_DETAIL_STATUS_UNKNOWN_ERROR 0x0018 -#define I2O_DETAIL_STATUS_UNKNOWN_FUNCTION 0x0019 -#define I2O_DETAIL_STATUS_UNSUPPORTED_VERSION 0x001A -#define I2O_DEATIL_STATUS_DEVICE_BUSY 0x001B -#define I2O_DETAIL_STATUS_DEVICE_NOT_AVAILABLE 0x001C - -/* Common I2O Field sizes */ - -#define I2O_TID_SZ 12 -#define I2O_FUNCTION_SZ 8 -#define I2O_UNIT_ID_SZ 16 -#define I2O_SEGMENT_NUMBER_SZ 12 - -#define I2O_IOP_ID_SZ 12 -#define I2O_GROUP_ID_SZ 16 -#define I2O_IOP_STATE_SZ 8 -#define I2O_MESSENGER_TYPE_SZ 8 - -#define I2O_CLASS_ID_SZ 12 -#define I2O_CLASS_ORGANIZATION_ID_SZ 16 - -#define I2O_4BIT_VERSION_SZ 4 -#define I2O_8BIT_FLAGS_SZ 8 -#define I2O_COMMON_LENGTH_FIELD_SZ 16 - -#define I2O_DEVID_DESCRIPTION_SZ 16 -#define I2O_DEVID_VENDOR_INFO_SZ 16 -#define I2O_DEVID_PRODUCT_INFO_SZ 16 -#define I2O_DEVID_REV_LEVEL_SZ 8 -#define I2O_MODULE_NAME_SZ 24 - -#define I2O_BIOS_INFO_SZ 8 - -#define I2O_RESERVED_4BITS 4 -#define I2O_RESERVED_8BITS 8 -#define I2O_RESERVED_12BITS 12 -#define I2O_RESERVED_16BITS 16 -#define I2O_RESERVED_20BITS 20 -#define I2O_RESERVED_24BITS 24 -#define I2O_RESERVED_28BITS 28 - -typedef uint32_t I2O_PARAMETER_TID; - -#if I2O_64BIT_CONTEXT - -typedef union { - void (* i2o_msg_complete)(void *, ddi_acc_handle_t); - uint64_t initiator_context_64bits; -} i2o_initiator_context_t; - -typedef uint64_t i2o_transaction_context_t; - -#else - -typedef union { - void (* i2o_msg_complete)(void *, ddi_acc_handle_t); - uint32_t initiator_context_32bits; -} i2o_initiator_context_t; - -typedef uint32_t i2o_transaction_context_t; - -#endif - -/* Serial Number format defines */ - -#define I2O_SERIAL_FORMAT_UNKNOWN 0 -#define I2O_SERIAL_FORMAT_BINARY 1 -#define I2O_SERIAL_FORMAT_ASCII 2 -#define I2O_SERIAL_FORMAT_UNICODE 3 -#define I2O_SERIAL_FORMAT_LAN_MAC 4 -#define I2O_SERIAL_FORMAT_WAN 5 - -/* Special TID Assignments */ - -#define I2O_IOP_TID 0 -#define I2O_HOST_TID 1 - - -/* ************************************************************************** */ - -/* I2O Message Frame common for all messages */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_message_frame { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t TargetAddress:12; - uint32_t InitiatorAddress:12; - uint32_t Function:8; - } s2; - uint32_t w2; - } u2; - i2o_initiator_context_t InitiatorContext; -} i2o_message_frame_t; - -/* macros to access the bit fields in Message Frame */ - -#define get_msg_TargetAddress(mp, hdl) \ - (mp)->u2.s2.TargetAddress -#define put_msg_TargetAddress(mp, id, hdl) \ - ((mp)->u2.s2.TargetAddress = (id)) -#define get_msg_InitiatorAddress(mp, hdl) \ - (mp)->u2.s2.InitiatorAddress -#define put_msg_InitiatorAddress(mp, id, hdl) \ - ((mp)->u2.s2.InitiatorAddress = (id)) -#define get_msg_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_msg_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_message_frame { - uint8_t VersionOffset; - uint8_t MsgFlags; - uint16_t MessageSize; - union { - struct { - uint32_t Function:8; - uint32_t InitiatorAddress:12; - uint32_t TargetAddress:12; - } s2; - uint32_t w2; - } u2; - i2o_initiator_context_t InitiatorContext; -} i2o_message_frame_t; - -/* macros to access the bit fields in Message Frame */ - -#define get_msg_Function(mp, hdl) \ - (mp)->u2.s2.Function -#define put_msg_Function(mp, n, hdl) \ - ((mp)->u2.s2.Function = (n)) - -#define get_msg_TargetAddress(mp, hdl) \ - (ddi_get32(hdl, &(mp)->u2.w2) & 0xFFF) -#define put_msg_TargetAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, \ - (ddi_get32(hdl, &(mp)->u2.w2) & ~0xFFF) | ((id) & 0xFFF)) - -#define get_msg_InitiatorAddress(mp, hdl) \ - ((ddi_get32(hdl, &(mp)->u2.w2) >> 12) & 0xFFF) -#define put_msg_InitiatorAddress(mp, id, hdl) \ - ddi_put32(hdl, &(mp)->u2.w2, (ddi_get32(hdl, &(mp)->u2.w2) & \ - ~0xFFF000) | (((id) & 0xFFF) << 12)) -#endif - - -/* ************************************************************************** */ - -/* Transaction Reply Lists (TRL) Control Word structure */ - -#define I2O_TRL_FLAGS_SINGLE_FIXED_LENGTH 0x00 -#define I2O_TRL_FLAGS_SINGLE_VARIABLE_LENGTH 0x40 -#define I2O_TRL_FLAGS_MULTIPLE_FIXED_LENGTH 0x80 - -typedef struct i2o_trl_control_word { - uint8_t TrlCount; - uint8_t TrlElementSize; - uint8_t reserved; - uint8_t TrlFlags; -#if I2O_64BIT_CONTEXT - uint32_t Padding; /* Padding for 64 bit */ -#endif -} i2o_trl_control_word_t; - -/* ************************************************************************** */ - -/* I2O Successful Single Transaction Reply Message Frame structure. */ - -typedef struct i2o_single_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t DetailedStatusCode; - uint8_t reserved; - uint8_t ReqStatus; - /* ReplyPayload */ -} i2o_single_reply_message_frame_t; - -/* ************************************************************************** */ - -/* I2O Successful Multiple Transaction Reply Message Frame structure. */ - -typedef struct i2o_multiple_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_trl_control_word_t TrlControlWord; - uint16_t DetailedStatusCode; - uint8_t reserved; - uint8_t ReqStatus; - /* TransactionDetails[] */ -} i2o_multiple_reply_message_frame_t; - -/* ************************************************************************** */ - -/* I2O Private Message Frame structure. */ - -typedef struct i2o_private_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t XFunctionCode; - uint16_t OrganizationID; - /* PrivatePayload[] */ -} i2o_private_message_frame_t; - -/* ************************************************************************** */ - -/* Message Failure Severity Codes */ - -#define I2O_SEVERITY_FORMAT_ERROR 0x1 -#define I2O_SEVERITY_PATH_ERROR 0x2 -#define I2O_SEVERITY_PATH_STATE 0x4 -#define I2O_SEVERITY_CONGESTION 0x8 - -/* Transport Failure Codes: Table 3-3 Mesasge Failure Codes */ - -#define I2O_FAILURE_CODE_TRANSPORT_SERVICE_SUSPENDED 0x81 -#define I2O_FAILURE_CODE_TRANSPORT_SERVICE_TERMINATED 0x82 -#define I2O_FAILURE_CODE_TRANSPORT_CONGESTION 0x83 -#define I2O_FAILURE_CODE_TRANSPORT_FAIL 0x84 -#define I2O_FAILURE_CODE_TRANSPORT_STATE_ERROR 0x85 -#define I2O_FAILURE_CODE_TRANSPORT_TIME_OUT 0x86 -#define I2O_FAILURE_CODE_TRANSPORT_ROUTING_FAILURE 0x87 -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_VERSION 0x88 -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_OFFSET 0x89 -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_MSG_FLAGS 0x8A -#define I2O_FAILURE_CODE_TRANSPORT_FRAME_TOO_SMALL 0x8B -#define I2O_FAILURE_CODE_TRANSPORT_FRAME_TOO_LARGE 0x8C -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_TARGET_ID 0x8D -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_INITIATOR_ID 0x8E -#define I2O_FAILURE_CODE_TRANSPORT_INVALID_INITIATOR_CONTEXT 0x8F -#define I2O_FAILURE_CODE_TRANSPORT_UNKNOWN_FAILURE 0xFF - -/* IOP_ID and Severity sizes */ - -#define I2O_FAILCODE_SEVERITY_SZ 8 -#define I2O_FAILCODE_CODE_SZ 8 - -/* I2O Transport Message Reply for Message Failure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_failure_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t LowestVersion; - uint8_t HighestVersion; - uint8_t Severity; - uint8_t FailureCode; - union { - struct { - uint16_t FailingIOP_ID:12; - uint16_t reserved:4; - } s; - uint16_t h; - } u1; - uint16_t FailingHostUnitID; - uint32_t AgeLimit; - i2o_message_frame_t *PreservedMFA; -} i2o_failure_reply_message_frame_t; - -/* macros to access the bit field(s) */ - -#define get_reply_msg_FailingIOP_ID(p, hdl) \ - ((p)->u1.s.FailingIOP_ID) -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_failure_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t LowestVersion; - uint8_t HighestVersion; - uint8_t Severity; - uint8_t FailureCode; - union { - struct { - uint16_t reserved:4; - uint16_t FailingIOP_ID:12; - } s; - uint16_t h; - } u1; - uint16_t FailingHostUnitID; - uint32_t AgeLimit; - i2o_message_frame_t *PreservedMFA; -} i2o_failure_reply_message_frame_t; - -/* macros to access the bit field(s) */ - -#define get_reply_msg_FailingIOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u1.h) & 0xFFF) -#endif - -/* I2O Transport Message Reply for Transaction Error. */ - -typedef struct i2o_transaction_error_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t DetailedStatusCode; - uint8_t reserved; - uint8_t ReqStatus; /* Should Transaction Error */ - uint32_t ErrorOffset; - uint8_t BitOffset; - uint8_t reserved1; - uint16_t reserved2; -} i2o_transaction_error_reply_message_frame_t; - -/* ************************************************************************** */ - -/* Misc. commonly used structures */ - -#define I2O_MAX_SERIAL_NUMBER_SZ 256 - -typedef struct i2o_serial_info { - uint8_t SerialNumberLength; - uint8_t SerialNumberFormat; - uint8_t SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ]; -} i2o_serial_info_t; - - -/* ************************************************************************** */ -/* Hardware Resource Table (HRT) and Logical Configuration Table (LCT) */ -/* ************************************************************************** */ - -/* Bus Type Code defines */ - -#define I2O_LOCAL_BUS 0 -#define I2O_ISA_BUS 1 -#define I2O_EISA_BUS 2 -#define I2O_PCI_BUS 4 -#define I2O_PCMCIA_BUS 5 -#define I2O_NUBUS_BUS 6 -#define I2O_CARDBUS_BUS 7 -#define I2O_OTHER_BUS 0x80 - -#define I2O_HRT_STATE_SZ 4 -#define I2O_HRT_BUS_NUMBER_SZ 8 -#define I2O_HRT_BUS_TYPE_SZ 8 - - -/* Bus Structures */ - -/* PCI Bus */ -typedef struct i2o_pci_bus_info { - uint8_t PciFunctionNumber; - uint8_t PciDeviceNumber; - uint8_t PciBusNumber; - uint8_t reserved; - uint16_t PciVendorID; - uint16_t PciDeviceID; -} i2o_pci_bus_info_t; - -/* Local Bus */ -typedef struct i2o_local_bus_info { - uint16_t LbBaseIOPort; - uint16_t reserved; - uint32_t LbBaseMemoryAddress; -} i2o_local_bus_info_t; - -/* ISA Bus */ -typedef struct i2o_isa_bus_info { - uint16_t IsaBaseIOPort; - uint8_t CSN; - uint8_t reserved; - uint32_t IsaBaseMemoryAddress; -} i2o_isa_bus_info_t; - -/* EISA Bus */ -typedef struct i2o_eisa_bus_info { - uint16_t EisaBaseIOPort; - uint8_t reserved; - uint8_t EisaSlotNumber; - uint32_t EisaBaseMemoryAddress; -} i2o_eisa_bus_info_t; - -/* Other Bus */ -typedef struct i2o_other_bus_info { - uint16_t BaseIOPort; - uint16_t reserved; - uint32_t BaseMemoryAddress; -} i2o_other_bus_info_t; - - -/* HRT Entry Block */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_hrt_entry { - uint32_t AdapterID; - union { - struct { - uint16_t ControllingTID:12; - uint16_t AdapterState:4; - } s2; - uint16_t h2; - } u2; - uint8_t BusNumber; - uint8_t BusType; - union { - /* PCI Bus */ - i2o_pci_bus_info_t PCIBus; - - /* Local Bus */ - i2o_local_bus_info_t LocalBus; - - /* ISA Bus */ - i2o_isa_bus_info_t ISABus; - - /* EISA Bus */ - i2o_eisa_bus_info_t EISABus; - - /* Other. */ - i2o_other_bus_info_t OtherBus; - } uBus; -} i2o_hrt_entry_t; - -/* macros to access the bit fields */ - -#define get_hrt_entry_ControllingTID(p, hdl) (p)->u2.s2.ControllingTID -#define get_hrt_entry_AdapterState(p, hdl) (p)->u2.s2.AdapterState - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_hrt_entry { - uint32_t AdapterID; - union { - struct { - uint16_t AdapterState:4; - uint16_t ControllingTID:12; - } s2; - uint16_t h2; - } u2; - uint8_t BusNumber; - uint8_t BusType; - union { - /* PCI Bus */ - i2o_pci_bus_info_t PCIBus; - - /* Local Bus */ - i2o_local_bus_info_t LocalBus; - - /* ISA Bus */ - i2o_isa_bus_info_t ISABus; - - /* EISA Bus */ - i2o_eisa_bus_info_t EISABus; - - /* Other. */ - i2o_other_bus_info_t OtherBus; - } uBus; -} i2o_hrt_entry_t; - -/* macros to access the bit fields */ - -#define get_hrt_entry_ControllingTID(p, hdl) \ - (ddi_get16(hdl, &(p)->u2.h2) & 0xFFF) -#define get_hrt_entry_AdapterState(p, hdl) \ - ((ddi_get16(hdl, &(p)->u2.h2) >> 12) & 0xF) -#endif - -/* I2O Hardware Resource Table structure. */ - -typedef struct i2o_hrt { - uint16_t NumberEntries; - uint8_t EntryLength; - uint8_t HRTVersion; - uint32_t CurrentChangeIndicator; - i2o_hrt_entry_t HRTEntry[1]; -} i2o_hrt_t; - - -/* ************************************************************************** */ -/* Logical Configuration Table */ -/* ************************************************************************** */ - -/* I2O Logical Configuration Table structures. */ - -#define I2O_IDENTITY_TAG_SZ 8 - -/* I2O Logical Configuration Table Device Flags */ - -#define I2O_LCT_DEVICE_FLAGS_CONF_DIALOG_REQUEST 0x01 -#define I2O_LCT_DEVICE_FLAGS_MORE_THAN_1_USER 0x02 -#define I2O_LCT_DEVICE_FLAGS_PEER_SERVICE_DISABLED 0x10 -#define I2O_LCT_DEVICE_FLAGS_MANAGEMENT_SERVICE_DISABLED 0x20 - -/* LCT Entry Block */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_lct_entry { - union { - struct { - uint32_t TableEntrySize:16; - uint32_t LocalTID:12; - uint32_t reserved:4; - } s1; - uint32_t w1; - } u1; - uint32_t ChangeIndicator; - uint32_t DeviceFlags; - union { - struct i2o_class_id { - uint32_t Class:12; - uint32_t Version:4; - uint32_t OrganizationID:16; - } s4; - uint32_t w4; - } u4; - uint32_t SubClassInfo; - union { - struct { - uint32_t UserTID:12; - uint32_t ParentTID:12; - uint32_t BiosInfo:8; - } s6; - uint32_t w6; - } u6; - uint8_t IdentityTag[I2O_IDENTITY_TAG_SZ]; - uint32_t EventCapabilities; -} i2o_lct_entry_t; - -/* macros to access the bit fields */ - -#define get_lct_entry_LocalTID(p, hdl) (p)->u1.s1.LocalTID -#define get_lct_entry_TableEntrySize(p, hdl) (p)->u1.s1.TableEntrySize - -#define get_lct_entry_Class(p, hdl) (p)->u4.s4.Class -#define get_lct_entry_Version(p, hdl) (p)->u4.s4.Version -#define get_lct_entry_OrganizationID(p, hdl) (p)->u4.s4.OrganizationID - -#define get_lct_entry_BiosInfo(p, hdl) (p)->u6.s6.BiosInfo -#define get_lct_entry_ParentTID(p, hdl) (p)->u6.s6.ParentTID -#define get_lct_entry_UserTID(p, hdl) (p)->u6.s6.UserTID - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_lct_entry { - union { - struct { - uint32_t reserved:4; - uint32_t LocalTID:12; - uint32_t TableEntrySize:16; - } s1; - uint32_t w1; - } u1; - uint32_t ChangeIndicator; - uint32_t DeviceFlags; - union { - struct i2o_class_id { - uint32_t OrganizationID:16; - uint32_t Version:4; - uint32_t Class:12; - } s4; - uint32_t w4; - } u4; - uint32_t SubClassInfo; - union { - struct { - uint32_t BiosInfo:8; - uint32_t ParentTID:12; - uint32_t UserTID:12; - } s6; - uint32_t w6; - } u6; - uint8_t IdentityTag[I2O_IDENTITY_TAG_SZ]; - uint32_t EventCapabilities; -} i2o_lct_entry_t; - -/* macros to access the bit fields */ - -#define get_lct_entry_TableEntrySize(p, hdl) \ - (ddi_get32(hdl, &(p)->u1.w1) & 0xFFFF) -#define get_lct_entry_LocalTID(p, hdl) \ - ((ddi_get32(hdl, (p)->u1.w1) >> 16) & 0xFFF) - -#define get_lct_entry_OrganizationID(p, hdl) \ - ((ddi_get16(hdl, (p)->u4.w4) >> 16) & 0xFFFF) -#define get_lct_entry_Version(p, hdl) \ - ((ddi_get32(hdl, &(p)->u4.w4) >> 12) & 0xF) -#define get_lct_entry_Class(p, hdl) \ - (ddi_get32(hdl, &(p)->u4.w4) & 0xFFF) - -#define get_lct_entry_BiosInfo(p, hdl) (p)->u6.s6.BiosInfo -#define get_lct_entry_ParentTID(p, hdl) \ - ((ddi_get32(hdtl, &(p)->u6.w6) >> 12) & 0xFFF) -#define get_lct_entry_UserTID(p, hdl) \ - (ddi_get32(hdtl, &(p)->u6.w6) & 0xFFF) - -#endif - -/* I2O Logical Configuration Table structure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_lct { - uint16_t TableSize; - union { - struct { - uint16_t BootDeviceTID:12; - uint16_t LctVer:4; - } s1; - uint16_t h1; - } u1; - uint32_t IopFlags; - uint32_t CurrentChangeIndicator; - i2o_lct_entry_t LCTEntry[1]; -} i2o_lct_t; - -/* macros to access the bit fields */ - -#define get_lct_BootDeviceTID(p, hdl) (p)->u1.s1.BootDeviceTID -#define get_lct_LctVer(p, hdl) (p)->u1.s1.LctVer - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_lct { - uint16_t TableSize; - union { - struct { - uint16_t LctVer:4; - uint16_t BootDeviceTID:12; - } s1; - uint16_t h1; - } u1; - uint32_t IopFlags; - uint32_t CurrentChangeIndicator; - i2o_lct_entry_t LCTEntry[1]; -} i2o_lct_t; - -/* macros to access the bit fields */ - -#define get_lct_BootDeviceTID(p, hdl) \ - ((ddi_get32(hdl, &(p)->u1.w1) >> 16) & 0xFFF) -#define get_lct_LctVer(p, hdl) \ - ((ddi_get32(hdl, &(p)->u1.w1) >> 28) & 0xF) - -#endif - -/* ************************************************************************** */ - -/* Memory Addressing structures and defines. */ - -/* SglFlags defines. */ - -#define I2O_SGL_FLAGS_LAST_ELEMENT 0x80 -#define I2O_SGL_FLAGS_END_OF_BUFFER 0x40 - -#define I2O_SGL_FLAGS_IGNORE_ELEMENT 0x00 -#define I2O_SGL_FLAGS_TRANSPORT_ELEMENT 0x04 -#define I2O_SGL_FLAGS_BIT_BUCKET_ELEMENT 0x08 -#define I2O_SGL_FLAGS_IMMEDIATE_DATA_ELEMENT 0x0C -#define I2O_SGL_FLAGS_SIMPLE_ADDRESS_ELEMENT 0x10 -#define I2O_SGL_FLAGS_PAGE_LIST_ADDRESS_ELEMENT 0x20 -#define I2O_SGL_FLAGS_CHAIN_POINTER_ELEMENT 0x30 -#define I2O_SGL_FLAGS_LONG_TRANSACTION_ELEMENT 0x40 -#define I2O_SGL_FLAGS_SHORT_TRANSACTION_ELEMENT 0x70 -#define I2O_SGL_FLAGS_SGL_ATTRIBUTES_ELEMENT 0x7C - -#define I2O_SGL_FLAGS_BC0 0x01 -#define I2O_SGL_FLAGS_BC1 0x02 -#define I2O_SGL_FLAGS_DIR 0x04 -#define I2O_SGL_FLAGS_LOCAL_ADDRESS 0x08 - -#define I2O_SGL_FLAGS_CONTEXT_COUNT_MASK 0x03 -#define I2O_SGL_FLAGS_ADDRESS_MODE_MASK 0x3C -#define I2O_SGL_FLAGS_NO_CONTEXT 0x00 - -/* Scatter/Gather Truth Table */ - -/* - * - * typedef enum _SG_TYPE { - * INVALID, - * Ignore, - * TransportDetails, - * BitBucket, - * ImmediateData, - * Simple, - * PageList, - * ChainPointer, - * ShortTransaction, - * LongTransaction, - * SGLAttributes, - * INVALID/ReservedLongFormat, - * INVALID/ReservedShortFormat - * } SG_TYPE, *PSG_TYPE; - * - * - * 0x00 Ignore; - * 0x04 TransportDetails; - * 0x08 BitBucket; - * 0x0C ImmediateData; - * 0x10 Simple; - * 0x14 Simple; - * 0x18 Simple; - * 0x1C Simple; - * 0x20 PageList; - * 0x24 PageList; - * 0x28 PageList; - * 0x2C PageList; - * 0x30 ChainPointer; - * 0x34 INVALID; - * 0x38 ChainPointer; - * 0x3C INVALID; - * 0x40 LongTransaction; - * 0x44 INVALID/ReservedLongFormat; - * 0x48 BitBucket; - * 0x4C ImmediateData; - * 0x50 Simple; - * 0x54 Simple; - * 0x58 Simple; - * 0x5C Simple; - * 0x60 PageList; - * 0x64 PageList; - * 0x68 PageList; - * 0x6C PageList; - * 0x70 ShortTransaction; - * 0x74 INVALID/ReservedShortFormat; - * 0x78 INVALID/ReservedShortFormat; - * 0X7C SGLATTRIBUTES; - */ - - -/* 32 Bit Context Field defines */ - -#define I2O_SGL_FLAGS_CONTEXT32_NULL 0x00 -#define I2O_SGL_FLAGS_CONTEXT32_U32 0x01 -#define I2O_SGL_FLAGS_CONTEXT32_U64 0x02 -#define I2O_SGL_FLAGS_CONTEXT32_U96 0x03 - -#define I2O_SGL_FLAGS_CONTEXT32_NULL_SZ 0x00 -#define I2O_SGL_FLAGS_CONTEXT32_U32_SZ 0x04 -#define I2O_SGL_FLAGS_CONTEXT32_U64_SZ 0x08 -#define I2O_SGL_FLAGS_CONTEXT32_U96_SZ 0x0C - -/* 64 Bit Context Field defines */ - -#define I2O_SGL_FLAGS_CONTEXT64_NULL 0x00 -#define I2O_SGL_FLAGS_CONTEXT64_U64 0x01 -#define I2O_SGL_FLAGS_CONTEXT64_U128 0x02 -#define I2O_SGL_FLAGS_CONTEXT64_U192 0x03 - -#define I2O_SGL_FLAGS_CONTEXT64_NULL_SZ 0x00 -#define I2O_SGL_FLAGS_CONTEXT64_U64_SZ 0x08 -#define I2O_SGL_FLAGS_CONTEXT64_U128_SZ 0x10 -#define I2O_SGL_FLAGS_CONTEXT64_U192_SZ 0x18 - -/* SGL Attribute Element defines */ - -#define I2O_SGL_ATTRIBUTE_FLAGS_BIT_BUCKET_HINT 0x0400 -#define I2O_SGL_ATTRIBUTE_FLAGS_IMMEDIATE_DATA_HINT 0x0200 -#define I2O_SGL_ATTRIBUTE_FLAGS_LOCAL_ADDRESS_HINT 0x0100 -#define I2O_SGL_ATTRIBUTE_FLAGS_32BIT_TRANSACTION 0x0000 -#define I2O_SGL_ATTRIBUTE_FLAGS_64BIT_TRANSACTION 0x0004 -#define I2O_SGL_ATTRIBUTE_FLAGS_32BIT_LOCAL_ADDRESS 0x0000 - -/* SG Size defines */ - -#define I2O_SG_COUNT_SZ 24 -#define I2O_SG_FLAGS_SZ 8 - -/* Standard Flags and Count fields for SG Elements */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef union i2o_flags_count { - struct { - uint32_t Count:24; - uint32_t Flags:8; - } flags_count; - uint32_t cword; -} i2o_flags_count_t; - -#define get_flags_count_Count(p, hdl) (p)->flags_count.Count -#define put_flags_count_Count(p, v, hdl) ((p)->flags_count.Count = (v)) -#define get_flags_count_Flags(p, hdl) (p)->flags_count.Flags -#define put_flags_count_Flags(p, v, hdl) ((p)->flags_count.Flags = (v)) - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef union i2o_flags_count { - struct { - uint32_t Flags:8; - uint32_t Count:24; - } flags_count; - uint32_t cword; -} i2o_flags_count_t; - -#define get_flags_count_Count(p, hdl) \ - (ddi_get32(hdl, &(p)->cword) & 0xFFFFFF) -#define put_flags_count_Count(p, v, hdl) \ - ddi_put32(hdl, &(p)->cword, \ - (ddi_get32(hdl, &(p)->cword) & ~0xFFFFFF) | \ - ((uint32_t)(v) & 0xFFFFFF)) -#define get_flags_count_Flags(p, hdl) \ - ((ddi_get32(hdl, &(p)->cword) >> 24) & 0xFF) -#define put_flags_count_Flags(p, v, hdl) \ - ddi_put32(hdl, &(p)->cword, \ - (ddi_get32(hdl, &(p)->cword) & ~0xFF000000) | ((uint32_t)(v) << 24)) -#endif - -/* Bit Bucket Element */ - -typedef struct i2o_sge_bit_bucket_element { - i2o_flags_count_t FlagsCount; - uint32_t BufferContext; -} i2o_sge_bit_bucket_element_t; - -/* Chain Addressing Scatter-Gather Element */ - -typedef struct i2o_sge_chain_element { - i2o_flags_count_t FlagsCount; - uint32_t PhysicalAddress; -} i2o_sge_chain_element_t; - -/* Chain Addressing with Context Scatter-Gather Element */ - -typedef struct i2o_sge_chain_context_element { - i2o_flags_count_t FlagsCount; - uint32_t Context[1]; - uint32_t PhysicalAddress; -} i2o_sge_chain_context_element_t; - -/* Ignore Scatter-Gather Element */ - -typedef struct i2o_sge_ignore_element { - i2o_flags_count_t FlagsCount; -} i2o_sge_ignore_element_t; - -/* Immediate Data Element */ - -typedef struct i2o_sge_immediate_data_element { - i2o_flags_count_t FlagsCount; -} i2o_sge_immediate_data_element_t; - -/* Immediate Data with Context Element */ - -typedef struct i2o_sge_immediate_data_context_element { - i2o_flags_count_t FlagsCount; - uint32_t BufferContext; -} i2o_sge_immediate_data_context_element_t; - -/* Long Transaction Parameters Element */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_sge_long_transaction_element { - union { - struct { - uint32_t LongElementLength:24; - uint32_t Flags:8; - } s1; - uint32_t w1; - } u1; - uint32_t BufferContext; -} i2o_sge_long_transaction_element_t; - -#define get_sge_long_LongElementLength(p, hdl) \ - (p)->u1.s1.LongElementLength -#define put_sge_long_LongElementLength(p, v, hdl) \ - ((p)->u1.s1.LongElementLength = (v)) -#define get_sge_long_Flags(p, hdl) \ - (p)->u1.s1.Flags -#define put_sge_long_Flags(p, v, hdl) \ - ((p)->u1.s1.Flags = (v)) - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_sge_long_transaction_element { - union { - struct { - uint32_t Flags:8; - uint32_t LongElementLength:24; - } s1; - uint32_t w1; - } u1; - uint32_t BufferContext; -} i2o_sge_long_transaction_element_t; - -#define get_sge_long_LongElementLength(p, hdl) \ - (ddi_get32(hdl, &(p)->u1.w1) & 0xFFFFFF) -#define put_sge_long_LongElementLength(p, v, hdl) \ - ddi_put32(hdl, &(p)->u1.w1, \ - (ddi_get32(hdl, &(p)->u1.w1) & ~0xFFFFFF) | \ - ((uint32_t)(v) & 0xFFFFFF)) -#define get_sge_long_Flags(p, hdl) \ - (ddi_get32(hdl, &(p)->u1.w1) >> 24) -#define put_sge_long_Flags(p, v, hdl) \ - ddi_put32(hdl, &(p)->u1.w1, \ - (ddi_get32(hdl, &(p)->u1.w1) & ~0xFF000000) | \ - ((uint32_t)(v) << 24)) -#endif - -/* Page List Scatter-Gather Element */ - -typedef struct i2o_sge_page_element { - i2o_flags_count_t FlagsCount; - uint32_t PhysicalAddress[1]; -} i2o_sge_page_element_t; - -/* Page List with Context Scatter-Gather Element */ - -typedef struct i2o_sge_page_context_element { - i2o_flags_count_t FlagsCount; - uint32_t BufferContext[1]; - uint32_t PhysicalAddress[1]; -} i2o_sge_page_context_element_t; - -/* SGL Attribute Element */ - -typedef struct i2o_sge_sgl_attributes_element { - uint16_t SglAttributeFlags; - uint8_t ElementLength; - uint8_t Flags; - uint32_t PageFrameSize; -} i2o_sge_sgl_attributes_element_t; - -/* Short Transaction Parameters Element */ - -typedef struct i2o_sge_short_transaction_element { - uint16_t ClassFields; - uint8_t ElementLength; - uint8_t Flags; - uint32_t BufferContext; -} i2o_sge_short_transaction_element_t; - -/* Simple Addressing Scatter-Gather Element */ - -typedef struct i2o_sge_simple_element { - i2o_flags_count_t FlagsCount; - uint32_t PhysicalAddress; -} i2o_sge_simple_element_t; - -/* Simple Addressing with Context Scatter-Gather Element */ - -typedef struct i2o_sge_simple_context_element { - i2o_flags_count_t FlagsCount; - uint32_t BufferContext[1]; - uint32_t PhysicalAddress; -} i2o_sge_simple_context_element_t; - -/* Transport Detail Element */ - -typedef struct i2o_sge_transport_element { - uint_t LongElementLength:24; - uint_t Flags:8; -} i2o_sge_transport_element_t; - -typedef struct i2o_sg_element { - union { - /* Bit Bucket Element */ - i2o_sge_bit_bucket_element_t BitBucket; - - /* Chain Addressing Element */ - i2o_sge_chain_element_t Chain; - - /* Chain Addressing with Context Element */ - i2o_sge_chain_context_element_t ChainContext; - - /* Ignore Scatter-Gather Element */ - i2o_sge_ignore_element_t Ignore; - - /* Immediate Data Element */ - i2o_sge_immediate_data_element_t ImmediateData; - - /* Immediate Data with Context Element */ - i2o_sge_immediate_data_context_element_t ImmediateDataContext; - - /* Long Transaction Parameters Element */ - i2o_sge_long_transaction_element_t LongTransaction; - - /* Page List Element */ - i2o_sge_page_element_t Page; - - /* Page List with Context Element */ - i2o_sge_page_context_element_t PageContext; - - /* SGL Attribute Element */ - i2o_sge_sgl_attributes_element_t SGLAttribute; - - /* Short Transaction Parameters Element */ - i2o_sge_short_transaction_element_t ShortTransaction; - - /* Simple Addressing Element */ - i2o_sge_simple_element_t Simple[1]; - - /* Simple Addressing with Context Element */ - i2o_sge_simple_context_element_t SimpleContext[1]; - - /* Transport Detail Element */ - i2o_sge_transport_element_t Transport; - } u1; -} i2o_sg_element_t; - -/* ************************************************************************** */ -/* Basic Parameter Group Access */ -/* ************************************************************************** */ - -/* Operation Function Numbers */ - -#define I2O_PARAMS_OPERATION_FIELD_GET 0x0001 -#define I2O_PARAMS_OPERATION_LIST_GET 0x0002 -#define I2O_PARAMS_OPERATION_MORE_GET 0x0003 -#define I2O_PARAMS_OPERATION_SIZE_GET 0x0004 -#define I2O_PARAMS_OPERATION_TABLE_GET 0x0005 -#define I2O_PARAMS_OPERATION_FIELD_SET 0x0006 -#define I2O_PARAMS_OPERATION_LIST_SET 0x0007 -#define I2O_PARAMS_OPERATION_ROW_ADD 0x0008 -#define I2O_PARAMS_OPERATION_ROW_DELETE 0x0009 -#define I2O_PARAMS_OPERATION_TABLE_CLEAR 0x000A - -/* Operations List Header */ - -typedef struct i2o_param_operations_list_header { - uint16_t OperationCount; - uint16_t Reserved; -} i2o_param_operations_list_header_t; - -/* Results List Header */ - -typedef struct i2o_param_results_list_header { - uint16_t ResultCount; - uint16_t Reserved; -} i2o_param_results_list_header_t; - -/* Read Operation Result Block Template Structure */ - -typedef struct i2o_param_read_operation_result { - uint16_t BlockSize; - uint8_t BlockStatus; - uint8_t ErrorInfoSize; - /* Operations Results */ - /* Pad (if any) */ - /* ErrorInformation (if any) */ -} i2o_param_read_operation_result_t; - -typedef struct i2o_table_read_operation_result { - uint16_t BlockSize; - uint8_t BlockStatus; - uint8_t ErrorInfoSize; - uint16_t RowCount; - uint16_t MoreFlag; - /* Operations Results */ - /* Pad (if any) */ - /* ErrorInformation (if any) */ -} i2o_table_read_operation_result_t; - -/* Error Information Template Structure */ - -typedef struct i2o_param_error_info_template { - uint16_t OperationCode; - uint16_t GroupNumber; - uint16_t FieldIdx; - uint8_t AdditionalStatus; - uint8_t NumberKeys; - /* List of Key Values (variable) */ - /* Pad (if any) */ -} i2o_param_error_info_template_t; - -/* Operation Template for Specific Fields */ - -typedef struct i2o_param_operation_specific_template { - uint16_t Operation; - uint16_t GroupNumber; - uint16_t FieldCount; - uint16_t FieldIdx[1]; - /* Pad (if any) */ -} i2o_param_operation_specific_template_t; - -/* Operation Template for All Fields */ - -typedef struct i2o_param_operation_all_template { - uint16_t Operation; - uint16_t GroupNumber; - uint16_t FieldCount; - /* Pad (if any) */ -} i2o_param_operation_all_template_t; - -/* Operation Template for All List Fields */ - -typedef struct i2o_param_operation_all_list_template { - uint16_t Operation; - uint16_t GroupNumber; - uint16_t FieldCount; - uint16_t KeyCount; - uint8_t KeyValue; - /* Pad (if any) */ -} i2o_param_operation_all_list_template_t; - -/* Modify Operation Result Block Template Structure */ - -typedef struct i2o_param_modify_operation_result { - uint16_t BlockSize; - uint8_t BlockStatus; - uint8_t ErrorInfoSize; - /* ErrorInformation (if any) */ -} i2o_param_modify_operation_result_t; - -/* Operation Template for Row Delete */ - -typedef struct i2o_param_operation_row_delete_template { - uint16_t Operation; - uint16_t GroupNumber; - uint16_t RowCount; - uint8_t KeyValue; -} i2o_param_operation_row_delete_template_t; - -/* Operation Template for Table Clear */ - -typedef struct i2o_param_operation_table_clear_template { - uint16_t Operation; - uint16_t GroupNumber; -} i2o_param_operation_table_clear_template_t; - -/* Status codes and Error Information for Parameter functions */ - -#define I2O_PARAMS_STATUS_SUCCESS 0x00 -#define I2O_PARAMS_STATUS_BAD_KEY_ABORT 0x01 -#define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE 0x02 -#define I2O_PARAMS_STATUS_BUFFER_FULL 0x03 -#define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL 0x04 -#define I2O_PARAMS_STATUS_FIELD_UNREADABLE 0x05 -#define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE 0x06 -#define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS 0x07 -#define I2O_PARAMS_STATUS_INVALID_GROUP_ID 0x08 -#define I2O_PARAMS_STATUS_INVALID_OPERATION 0x09 -#define I2O_PARAMS_STATUS_NO_KEY_FIELD 0x0A -#define I2O_PARAMS_STATUS_NO_SUCH_FIELD 0x0B -#define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP 0x0C -#define I2O_PARAMS_STATUS_OPERATION_ERROR 0x0D -#define I2O_PARAMS_STATUS_SCALAR_ERROR 0x0E -#define I2O_PARAMS_STATUS_TABLE_ERROR 0x0F -#define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE 0x10 - - -/* ************************************************************************** */ -/* GROUP Parameter Groups */ -/* ************************************************************************** */ - -/* GROUP Configuration and Operating Structures and Defines */ - -/* Groups Numbers */ - -#define I2O_UTIL_PARAMS_DESCRIPTOR_GROUP_NO 0xF000 -#define I2O_UTIL_PHYSICAL_DEVICE_TABLE_GROUP_NO 0xF001 -#define I2O_UTIL_CLAIMED_TABLE_GROUP_NO 0xF002 -#define I2O_UTIL_USER_TABLE_GROUP_NO 0xF003 -#define I2O_UTIL_PRIVATE_MESSAGE_EXTENSIONS_GROUP_NO 0xF005 -#define I2O_UTIL_AUTHORIZED_USER_TABLE_GROUP_NO 0xF006 -#define I2O_UTIL_DEVICE_IDENTITY_GROUP_NO 0xF100 -#define I2O_UTIL_DDM_IDENTITY_GROUP_NO 0xF101 -#define I2O_UTIL_USER_INFORMATION_GROUP_NO 0xF102 -#define I2O_UTIL_SGL_OPERATING_LIMITS_GROUP_NO 0xF103 -#define I2O_UTIL_SENSORS_GROUP_NO 0xF200 - -/* UTIL Group F000h - GROUP DESCRIPTORS Parameter Group */ - -#define I2O_UTIL_GROUP_PROPERTIES_GROUP_TABLE 0x01 -#define I2O_UTIL_GROUP_PROPERTIES_ROW_ADDITION 0x02 -#define I2O_UTIL_GROUP_PROPERTIES_ROW_DELETION 0x04 -#define I2O_UTIL_GROUP_PROPERTIES_CLEAR_OPERATION 0x08 - -typedef struct i2o_util_group_descriptor_table { - uint16_t GroupNumber; - uint16_t FieldCount; - uint16_t RowCount; - uint8_t Properties; - uint8_t reserved; -} i2o_util_group_descriptor_table_t; - -/* UTIL Group F001h - Physical Device Table Parameter Group */ - -typedef struct i2o_util_physical_device_table { - uint32_t AdapterID; -} i2o_util_physical_device_table_t; - -/* UTIL Group F002h - Claimed Table Parameter Group */ - -typedef struct i2o_util_claimed_table { - uint16_t ClaimedTID; -} i2o_util_claimed_table_t; - -/* UTIL Group F003h - User Table Parameter Group */ - -typedef struct i2o_util_user_table { - uint16_t Instance; - uint16_t UserTID; - uint8_t ClaimType; - uint8_t reserved1; - uint16_t reserved2; -} i2o_util_user_table_t; - -/* UTIL Group F005h - Private Message Extensions Parameter Group */ - -typedef struct i2o_util_private_message_extensions_table { - uint16_t ExtInstance; - uint16_t OrganizationID; - uint16_t XFunctionCode; -} i2o_util_private_message_extensions_table_t; - -/* UTIL Group F006h - Authorized User Table Parameter Group */ - -typedef struct i2o_util_authorized_user_table { - uint16_t AlternateTID; -} i2o_util_authorized_user_table_t; - -/* UTIL Group F100h - Device Identity Parameter Group */ - -typedef struct i2o_util_device_identity_scalar { - uint32_t ClassID; - uint16_t OwnerTID; - uint16_t ParentTID; - uint8_t VendorInfo[I2O_DEVID_VENDOR_INFO_SZ]; - uint8_t ProductInfo[I2O_DEVID_PRODUCT_INFO_SZ]; - uint8_t Description[I2O_DEVID_DESCRIPTION_SZ]; - uint8_t ProductRevLevel[I2O_DEVID_REV_LEVEL_SZ]; - uint8_t SNFormat; - uint8_t SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ]; -} i2o_util_device_identity_scalar_t; - -/* UTIL Group F101h - DDM Identity Parameter Group */ - -typedef struct i2o_util_ddm_identity_scalar { - uint16_t DdmTID; - uint8_t ModuleName[I2O_MODULE_NAME_SZ]; - uint8_t ModuleRevLevel[I2O_DEVID_REV_LEVEL_SZ]; - uint8_t SNFormat; - uint8_t SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ]; -} i2o_util_ddm_identity_scalar_t; - -/* UTIL Group F102h - User Information Parameter Group */ - -#define I2O_USER_DEVICE_NAME_SZ 64 -#define I2O_USER_SERVICE_NAME_SZ 64 -#define I2O_USER_PHYSICAL_LOCATION_SZ 64 - -typedef struct i2o_util_user_information_scalar { - uint8_t DeviceName[I2O_USER_DEVICE_NAME_SZ]; - uint8_t ServiceName[I2O_USER_SERVICE_NAME_SZ]; - uint8_t PhysicalLocation[I2O_USER_PHYSICAL_LOCATION_SZ]; - uint32_t InstanceNumber; -} i2o_util_user_information_scalar_t; - -/* UTIL Group F103h - SGL Operating Limits Parameter Group */ - -typedef struct i2o_util_sgl_operating_limits_scalar { - uint32_t SglChainSize; - uint32_t SglChainSizeMax; - uint32_t SglChainSizeTarget; - uint16_t SglFragCount; - uint16_t SglFragCountMax; - uint16_t SglFragCountTarget; -} i2o_util_sgl_operating_limits_scalar_t; - -/* UTIL Group F200h - Sensors Parameter Group */ - -#define I2O_SENSOR_COMPONENT_OTHER 0x00 -#define I2O_SENSOR_COMPONENT_PLANAR_LOGIC_BOARD 0x01 -#define I2O_SENSOR_COMPONENT_CPU 0x02 -#define I2O_SENSOR_COMPONENT_CHASSIS 0x03 -#define I2O_SENSOR_COMPONENT_POWER_SUPPLY 0x04 -#define I2O_SENSOR_COMPONENT_STORAGE 0x05 -#define I2O_SENSOR_COMPONENT_EXTERNAL 0x06 - -#define I2O_SENSOR_SENSOR_CLASS_ANALOG 0x00 -#define I2O_SENSOR_SENSOR_CLASS_DIGITAL 0x01 - -#define I2O_SENSOR_SENSOR_TYPE_OTHER 0x00 -#define I2O_SENSOR_SENSOR_TYPE_THERMAL 0x01 -#define I2O_SENSOR_SENSOR_TYPE_DC_VOLTAGE 0x02 -#define I2O_SENSOR_SENSOR_TYPE_AC_VOLTAGE 0x03 -#define I2O_SENSOR_SENSOR_TYPE_DC_CURRENT 0x04 -#define I2O_SENSOR_SENSOR_TYPE_AC_CURRENT 0x05 -#define I2O_SENSOR_SENSOR_TYPE_DOOR_OPEN 0x06 -#define I2O_SENSOR_SENSOR_TYPE_FAN_OPERATIONAL 0x07 - -#define I2O_SENSOR_SENSOR_STATE_NORMAL 0x00 -#define I2O_SENSOR_SENSOR_STATE_ABNORMAL 0x01 -#define I2O_SENSOR_SENSOR_STATE_UNKNOWN 0x02 -#define I2O_SENSOR_SENSOR_STATE_LOW_CAT 0x03 -#define I2O_SENSOR_SENSOR_STATE_LOW 0x04 -#define I2O_SENSOR_SENSOR_STATE_LOW_WARNING 0x05 -#define I2O_SENSOR_SENSOR_STATE_HIGH_WARNING 0x06 -#define I2O_SENSOR_SENSOR_STATE_HIGH 0x07 -#define I2O_SENSOR_SENSOR_STATE_HIGH_CAT 0x08 - -#define I2O_SENSOR_EVENT_ENABLE_STATE_CHANGE 0x0001 -#define I2O_SENSOR_EVENT_ENABLE_LOW_CATASTROPHIC 0x0002 -#define I2O_SENSOR_EVENT_ENABLE_LOW_READING 0x0004 -#define I2O_SENSOR_EVENT_ENABLE_LOW_WARNING 0x0008 -#define I2O_SENSOR_EVENT_ENABLE_CHANGE_TO_NORMAL 0x0010 -#define I2O_SENSOR_EVENT_ENABLE_HIGH_WARNING 0x0020 -#define I2O_SENSOR_EVENT_ENABLE_HIGH_READING 0x0040 -#define I2O_SENSOR_EVENT_ENABLE_HIGH_CATASTROPHIC 0x0080 - -typedef struct i2o_util_sensors_table { - uint16_t SensorInstance; - uint8_t Component; - uint16_t ComponentInstance; - uint8_t SensorClass; - uint8_t SensorType; - int8_t ScalingExponent; - int32_t ActualReading; - int32_t MinimumReading; - int32_t Low2LowCatThreshold; - int32_t LowCat2LowThreshold; - int32_t LowWarn2LowThreshold; - int32_t Low2LowWarnThreshold; - int32_t Norm2LowWarnThreshold; - int32_t LowWarn2NormThreshold; - int32_t NominalReading; - int32_t HiWarn2NormThreshold; - int32_t Norm2HiWarnThreshold; - int32_t High2HiWarnThreshold; - int32_t HiWarn2HighThreshold; - int32_t HiCat2HighThreshold; - int32_t Hi2HiCatThreshold; - int32_t MaximumReading; - uint8_t SensorState; - uint16_t EventEnable; -} i2o_util_sensors_table_t; - -/* - * ************************************************************************* - * Definitions used in Solaris for I2O Framework support. - * - * (NOTE: Current commitment level is PROJECT PRIVATE.) - * ************************************************************************* - */ - -#define I2O_MSG_SLEEP DDI_DMA_SLEEP -#define I2O_MSG_DONTWAIT DDI_DMA_DONTWAIT - -typedef void *i2o_iop_handle_t; -typedef void *i2o_msg_handle_t; - -int i2o_msg_osm_register(dev_info_t *dip, i2o_iop_handle_t *handlep); -int i2o_msg_get_lct(i2o_iop_handle_t iop, void *buf, - size_t buf_size, size_t *lct_sizep, size_t *real_sizep); -int i2o_msg_alloc(i2o_iop_handle_t iop, int (*waitfp)(caddr_t), caddr_t arg, - void **msgp, i2o_msg_handle_t *msg_handlep, - ddi_acc_handle_t *acc_handlep); -int i2o_msg_send(i2o_iop_handle_t iop, void *msg, i2o_msg_handle_t handle); -void i2o_msg_osm_unregister(i2o_iop_handle_t *iop); - -/* - * PCI Extensions to I2O Spec 1.5. - * - * (Note: Should these definitons go into pci.h?) - */ -#define PCI_I2O_BASE_CLASS 0x0E -#define PCI_I2O_SUB_CLASS 0x00 -#define PCI_I2O_PROG_CLASS0 0x00 /* no IOP interrupt */ -#define PCI_I2O_PROG_CLASS1 0x01 /* IOP interrupt supported */ - -/* Offset definitions for FIFO registers in IOP's shared memory */ - -#define PCI_IOP_INBOUND_FREELIST_FIFO 0x40 -#define PCI_IOP_INBOUND_POSTLIST_FIFO 0x40 -#define PCI_IOP_OUTBOUND_FREELIST_FIFO 0x44 -#define PCI_IOP_OUTBOUND_POSTLIST_FIFO 0x44 - -/* Offset definitions for Interrupt Control registers in IOP's shared memory */ - -#define PCI_IOP_INTR_MASK_REG 0x34 -#define PCI_IOP_INTR_STATUS_REG 0x30 - -/* Bit definitions in Interrupt Mask Register */ -#define I2O_OUTBOUND_POSTLIST_SERVICE_INTR_MASK 0x08 - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OMSG_H */ diff --git a/usr/src/uts/common/sys/i2o/i2omstr.h b/usr/src/uts/common/sys/i2o/i2omstr.h deleted file mode 100644 index 3065c8c2f5..0000000000 --- a/usr/src/uts/common/sys/i2o/i2omstr.h +++ /dev/null @@ -1,920 +0,0 @@ -/* - * Copyright (c) 1998-1999 by Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * ***************************************************************************** - * - * All software on this website is made available under the following terms and - * conditions. By downloading this software, you agree to abide by these terms - * and conditions with respect to this software. - * - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any kind, - * either express or implied, including but not limited to, implied warranties - * or merchantability and fitness for a particular purpose. I2O SIG does not - * warrant that this program will meet the user's requirements or that the - * operation of these programs will be uninterrupted or error-free. - * Acceptance and use of this program constitutes the user's understanding - * that he will have no recourse to I2O SIG for any actual or consequential - * damages including, but not limited to, loss profits arising out of use - * or inability to use this program. - * - * Member is permitted to create derivative works to this header-file program. - * However, all copies of the program and its derivative works must contain the - * I2O SIG copyright notice. - * - * ***************************************************************************** - */ - -#ifndef _SYS_I2OMSTOR_H -#define _SYS_I2OMSTOR_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#include <sys/i2o/i2omsg.h> /* the Base Message file */ -#include <sys/types.h> - - - -#define I2OMSTOR_REV 1_5_1 /* Header file revision string */ - - -/* - * **************************************************************************** - * - * I2OMStor.h -- I2O Random Block Storage Devices Class Message defintion - * file - * - * This file contains information presented in Chapter 6, Section 4 of - * the I2O Specification. - * - * Revision History: (Revision History tracks the revision number of the I2O - * specification) - * - * .92 - First marked revsion used for Proof of Concept. - * .93 - Change to match the rev .93 of the spec. - * .95 - Updated to Rev .95 of 2/5/96. - * 1.00 - Checked and Updated against spec version 1.00 4/9/96. - * 1.xx - Updated to the 1.x version of the I2O Specification (11/04/96). - * (RAID disk parameter group definition is not complete.) - * 1.xx - 11/06/96 1) Changed to new SGL addressing nomenclature. - * 2) Changed I2O_BSA_FLAGS reference to i2o_bsa_ctl_flags_t. - * 3) Added BSA request message definitions. - * 4) Commented out subclass and RAID request message definitions. - * 1.xx - 11/11/96 - * 1) Updated BSA Cache Control parameters group definitions. - * 1.xx - 11/13/96 - * 1) Changed messages definitions from "I20" to "I2O". - * 2) Fixed I2O_BSA_MEDIA_EJECT references. - * 3) Added "DSC" to Detailed Status Code definitions. - * 1.xx 11/15/96 - Added #pragma statments for i960. - * 1.5d 03/05/97 - Update for spec. draft version 1.5d. - * 1) Added "_BSA" designation to the three reply messages. - * 2) Added BSA_TIMEOUT DSC. - * 1.5d 04/11/97 - Corrections from review cycle: - * 1) Added reserved1 field to OPERATIONAL_CONTROL parameter group. - * 2) Added reserved2 field to ERROR_LOG parameter group. - * 3) Added reserved1 field to HIST_STATS parameter group. - * 4) Added reserved2 field to HIST_STATS parameter group. - * 5) Added reserved1 field to STORAGE_HIST_STATS parameter group. - * 6) Added reserved2 field to STORAGE_HIST_STATS parameter group. - * 7) Removed double underscore from MEDIA_INFO parameter group. - * 1.5.1 05/02/97 - Corrections from review cycle: - * 1) Change reply templates to include RetryCount field. - * 2) Add Aborted Operation reply message. - * 3) Remove #include for i2outil.h. - * 4) Add field to 32-bit align CACHE_CONTROL parameter group. - * 5) Add optional RAID parameter group definitions. - * 6) Add fields to 32-bit align REDUNDANCY parameter group. - * 7) Add fields to 32-bit align COMPONENT_SPARES parm group. - * 8) Add fields to 32-bit align ASSOCIATION parameter group. - * 9) Add revision string. - * 10) Convert tabs to spaces. - * 11) New disclaimer. - * - * **************************************************************************** - */ - -/* - * **************************************************************************** - * NOTES: - * - * Gets, reads, receives, etc. are all even numbered functions. - * Sets, writes, sends, etc. are all odd numbered functions. - * Functions that both send and receive data can be either but an attempt - * is made to use the function number that indicates the greater transfer - * amount. Functions that do not send or receive data use odd function - * numbers. - * - * Some functions are synonyms like read, receive and send, write. - * - * All common functions will have a code of less than 0x80. - * Unique functions to a class will start at 0x80. - * Executive Functions start at 0xA0. - * - * Utility Message function codes range from 0 - 0x1f - * Base Message function codes range from 0x20 - 0xfe - * Private Message function code is 0xff. - * ***************************************************************************** - */ - - - - -/* - * Random Block Storage Class specific functions - * - * Although the names are block storage class specific, the values - * assigned are common with other classes when applicable. - */ - -#define I2O_BSA_BLOCK_READ 0x30 -#define I2O_BSA_BLOCK_REASSIGN 0x71 -#define I2O_BSA_BLOCK_WRITE 0x31 -#define I2O_BSA_BLOCK_WRITE_VERIFY 0x33 -#define I2O_BSA_CACHE_FLUSH 0x37 -#define I2O_BSA_DEVICE_RESET 0x27 -#define I2O_BSA_MEDIA_EJECT 0x43 -#define I2O_BSA_MEDIA_FORMAT 0x45 -#define I2O_BSA_MEDIA_LOCK 0x49 -#define I2O_BSA_MEDIA_MOUNT 0x41 -#define I2O_BSA_MEDIA_UNLOCK 0x4B -#define I2O_BSA_MEDIA_VERIFY 0x35 -#define I2O_BSA_POWER_MANAGEMENT 0x70 -#define I2O_BSA_STATUS_CHECK 0x25 - -/* RAID Additions. */ -/* - * #define I2O_MANAGEMENT 0x81 - * #define I2O_DIAGNOSTICS 0x83 - * #define I2O_INSTRUMENTATION 0x85 - */ - -/* Detailed Status Codes for Random Block Storage operations */ - -#define I2O_BSA_DSC_SUCCESS 0x0000 -#define I2O_BSA_DSC_MEDIA_ERROR 0x0001 -#define I2O_BSA_DSC_ACCESS_ERROR 0x0002 -#define I2O_BSA_DSC_DEVICE_FAILURE 0x0003 -#define I2O_BSA_DSC_DEVICE_NOT_READY 0x0004 -#define I2O_BSA_DSC_MEDIA_NOT_PRESENT 0x0005 -#define I2O_BSA_DSC_MEDIA_LOCKED 0x0006 -#define I2O_BSA_DSC_MEDIA_FAILURE 0x0007 -#define I2O_BSA_DSC_PROTOCOL_FAILURE 0x0008 -#define I2O_BSA_DSC_BUS_FAILURE 0x0009 -#define I2O_BSA_DSC_ACCESS_VIOLATION 0x000A -#define I2O_BSA_DSC_WRITE_PROTECTED 0x000B -#define I2O_BSA_DSC_DEVICE_RESET 0x000C -#define I2O_BSA_DSC_VOLUME_CHANGED 0x000D -#define I2O_BSA_DSC_TIMEOUT 0x000E - - -/* ************************************************************************** */ - -/* Block Storage Parameter Groups */ - -/* ************************************************************************* */ - -/* Block Storage Configuration and Operating Structures and Defines */ - -/* Block Storage Parameter Groups */ - -#define I2O_BSA_DEVICE_INFO_GROUP_NO 0x0000 -#define I2O_BSA_OPERATIONAL_CONTROL_GROUP_NO 0x0001 -#define I2O_BSA_POWER_CONTROL_GROUP_NO 0x0002 -#define I2O_BSA_CACHE_CONTROL_GROUP_NO 0x0003 -#define I2O_BSA_MEDIA_INFO_GROUP_NO 0x0004 -#define I2O_BSA_ERROR_LOG_GROUP_NO 0x0005 - -/* Block Storage Optional Historical Statistics Parameter Groups */ - -#define I2O_BSA_HISTORICAL_STATS_CONTROL_GROUP_NO 0x0180 -#define I2O_BSA_STORAGE_HISTORICAL_STATS_GROUP_NO 0x0181 -#define I2O_BSA_CACHE_HISTORICAL_STATS_GROUP_NO 0x0182 - -/* Block Storage Optional RAID Disk Parameter Groups */ - -#define I2O_BSA_VOLUME_SET_INFORMATION_GROUP_NO 0x0200 -#define I2O_BSA_PROTECTED_SPACE_EXTENT_GROUP_NO 0x0201 -#define I2O_BSA_AGGREGATE_PROT_SPACE_EXT_GROUP_NO 0x0202 -#define I2O_BSA_PHYSICAL_EXTENT_GROUP_NO 0x0203 -#define I2O_BSA_AGGREGATE_PHYSICAL_EXT_GROUP_NO 0x0204 -#define I2O_BSA_REDUNDANCY_GROUP_NO 0x0205 -#define I2O_BSA_COMPONENT_SPARES_GROUP_NO 0x0206 -#define I2O_BSA_ASSOCIATION_TABLE_GROUP_NO 0x0207 - - -/* - 0000h - Device Information Parameters Group defines */ - -/* Device Type */ - -#define I2O_BSA_DEVICE_TYPE_DIRECT 0x00 -#define I2O_BSA_DEVICE_TYPE_WORM 0x04 -#define I2O_BSA_DEVICE_TYPE_CDROM 0x05 -#define I2O_BSA_DEVICE_TYPE_OPTICAL 0x07 - -/* Device Capability Support */ - -#define I2O_BSA_DEV_CAP_CACHING 0x00000001 -#define I2O_BSA_DEV_CAP_MULTI_PATH 0x00000002 -#define I2O_BSA_DEV_CAP_DYNAMIC_CAPACITY 0x00000004 -#define I2O_BSA_DEV_CAP_REMOVABLE_MEDIA 0x00000008 -#define I2O_BSA_DEV_CAP_REMOVEABLE_DEVICE 0x00000010 -#define I2O_BSA_DEV_CAP_READ_ONLY 0x00000020 -#define I2O_BSA_DEV_CAP_LOCKOUT 0x00000040 -#define I2O_BSA_DEV_CAP_BOOT_BYPASS 0x00000080 -#define I2O_BSA_DEV_CAP_COMPRESSION 0x00000100 -#define I2O_BSA_DEV_CAP_DATA_SECURITY 0x00000200 -#define I2O_BSA_DEV_CAP_RAID 0x00000400 - -/* Device States */ - -#define I2O_BSA_DEV_STATE_CACHING 0x00000001 -#define I2O_BSA_DEV_STATE_POWERED_ON 0x00000002 -#define I2O_BSA_DEV_STATE_READY 0x00000004 -#define I2O_BSA_DEV_STATE_MEDIA_LOADED 0x00000008 -#define I2O_BSA_DEV_STATE_DEVICE_LOADED 0x00000010 -#define I2O_BSA_DEV_STATE_READ_ONLY 0x00000020 -#define I2O_BSA_DEV_STATE_LOCKOUT 0x00000040 -#define I2O_BSA_DEV_STATE_BOOT_BYPASS 0x00000080 -#define I2O_BSA_DEV_STATE_COMPRESSION 0x00000100 -#define I2O_BSA_DEV_STATE_DATA_SECURITY 0x00000200 -#define I2O_BSA_DEV_STATE_RAID 0x00000400 - - -/* - 0001h - Operational Control Parameters Group defines */ - -/* No definition required */ - - -/* - 0002h - Power Control Parameters Group defines */ - -/* On Access */ - -#define I2O_BSA_POWERED_UP_ON_ACCESS 0x00000001 -#define I2O_BSA_LOAD_ON_ACCESS 0x00000002 - - -/* - 0003h - Cache Control Parameters Group defines */ - -/* Write Policy */ - -#define I2O_BSA_NO_WRITE_CACHE 0x00 -#define I2O_BSA_WRITE_TO_CACHE 0x01 -#define I2O_BSA_WRITE_THRU_CACHE 0x02 - -/* Read Policy */ - -#define I2O_BSA_NO_READ_CACHE 0x00 -#define I2O_BSA_READ_CACHE 0x01 -#define I2O_BSA_READ_AHEAD_CACHE 0x02 -#define I2O_BSA_READ_READ_AHEAD_CACHE 0x03 - -/* Error Correction */ - -#define I2O_BSA_ERR_COR_NONE 0x00 -#define I2O_BSA_ERR_COR_UNKNOWN 0x01 -#define I2O_BSA_ERR_COR_OTHER 0x02 -#define I2O_BSA_ERR_COR_PARITY 0x03 -#define I2O_BSA_ERR_COR_SINGLE_BIT_ECC 0x04 -#define I2O_BSA_ERR_COR_MULTI_BIT_ECC 0x05 - - -/* - 0004h - Media Information Parameters Group defines */ - -/* No definition required */ - - -/* - 0005h - Error Log Parameters Group defines */ - -/* No definition required */ - - -/* - 0180h - Historical Statistics Control Parameters Group defines */ - -/* Statistis Control */ - -#define I2O_BSA_STAT_CTL_STORAGE_ENABLE 0x01 -#define I2O_BSA_STAT_CTL_CACHE_ENABLE 0x02 - - -/* - 0181h - Storage Historical Statistics Parameter Group defines */ - -/* No definition required */ - - -/* - 0182h - Cache Historical Statistics Parameter Group defines */ - -/* No definition required */ - - -/* - 0200H - Volume Set Information Parameter Group defines */ - -/* No definition required */ - - -/* - 0201h - Protected Space Extent Parameter Group defines */ - -/* Data Stripe Granularity */ - -#define I2O_BSA_DATA_STRIPE_OTHER 0x00 -#define I2O_BSA_DATA_STRIPE_UNKNOWN 0x01 -#define I2O_BSA_DATA_STRIPE_BITS 0x02 -#define I2O_BSA_DATA_STRIPE_BYTES 0x03 -#define I2O_BSA_DATA_STRIPE_16BIT_WORDS 0x04 -#define I2O_BSA_DATA_STRIPE_32BIT_DWORDS 0x05 -#define I2O_BSA_DATA_STRIPE_BLOCKS 0x06 - -/* - 0202h - Aggregate Protected Space Extent Parameter Group defines */ - -/* No definition required */ - - -/* - 0203h - Physical Extent Parameter Group defines */ - -/* Granularity Unit */ - -#define I2O_BSA_GRANULARITY_OTHER 0x00 -#define I2O_BSA_GRANULARITY_UNKNOWN 0x01 -#define I2O_BSA_GRANULARITY_BITS 0x02 -#define I2O_BSA_GRANULARITY_BYTES 0x03 -#define I2O_BSA_GRANULARITY_16BIT_WORDS 0x04 -#define I2O_BSA_GRANULARITY_32BIT_DWORDS 0x05 -#define I2O_BSA_GRANULARITY_BLOCKS 0x06 - - -/* - 0204h - Aggregate Physical Extent Parameter Group defines */ - -/* No definition required */ - - -/* - 0205h - Redundancy Parameter Group defines */ - -/* Redundancy Type */ - -#define I2O_BSA_REDUNDANCY_OTHER 0x00 -#define I2O_BSA_REDUNDANCY_UNKNOWN 0x01 -#define I2O_BSA_REDUNDANCY_NONE 0x02 -#define I2O_BSA_REDUNDANCY_COPY 0x03 -#define I2O_BSA_REDUNDANCY_XOR 0x04 -#define I2O_BSA_REDUNDANCY_P_Q 0x05 -#define I2O_BSA_REDUNDANCY_S 0x06 -#define I2O_BSA_REDUNDANCY_P_S 0x07 - - -/* - 0206h - Component Spares Parameter Group defines */ - -/* Spare Functioning State */ - -#define I2O_BSA_SPARE_STATE_OTHER 0x00 -#define I2O_BSA_SPARE_STATE_UNKNOWN 0x01 -#define I2O_BSA_SPARE_STATE_INACTIVE 0x02 -#define I2O_BSA_SPARE_STATE_ACTIVE 0x03 -#define I2O_BSA_SPARE_STATE_LOAD_BALANCE 0x04 - - -/* - 0207h - Association Table Parameter Group defines */ - -/* Type */ - -#define I2O_BSA_ASSOC_TYPE_PHYSICAL 0x00 -#define I2O_BSA_ASSOC_TYPE_LOGICAL 0x01 -#define I2O_BSA_ASSOC_TYPE_LOG_TO_PHYS 0x02 -#define I2O_BSA_ASSOC_TYPE_PROTECTION 0x03 -#define I2O_BSA_ASSOC_TYPE_SPARE 0x04 -#define I2O_BSA_ASSOC_TYPE_CACHE 0x05 -#define I2O_BSA_ASSOC_TYPE_SOFTWARE 0x06 - -/* Object 1 Type */ - -#define I2O_BSA_OBJECT_1_CONTROLLER 0x00 -#define I2O_BSA_OBJECT_1_DEVICE 0x01 -#define I2O_BSA_OBJECT_1_BUS_PORT 0x02 -#define I2O_BSA_OBJECT_1_VOLUME_SET 0x03 -#define I2O_BSA_OBJECT_1_PROT_SPACE_EXT 0x04 -#define I2O_BSA_OBJECT_1_AGG_PROT_SPACE_EXT 0x05 -#define I2O_BSA_OBJECT_1_PHYSICAL_EXT 0x06 -#define I2O_BSA_OBJECT_1_AGG_PHYSICAL_EXT 0x07 -#define I2O_BSA_OBJECT_1_REDUNDANCY 0x08 -#define I2O_BSA_OBJECT_1_CACHE 0x09 -#define I2O_BSA_OBJECT_1_SOFTWARE 0x0A - -/* Object 2 Type */ - -#define I2O_BSA_OBJECT_2_CONTROLLER 0x00 -#define I2O_BSA_OBJECT_2_DEVICE 0x01 -#define I2O_BSA_OBJECT_2_BUS_PORT 0x02 -#define I2O_BSA_OBJECT_2_VOLUME_SET 0x03 -#define I2O_BSA_OBJECT_2_PROT_SPACE_EXT 0x04 -#define I2O_BSA_OBJECT_2_AGG_PROT_SPACE_EXT 0x05 -#define I2O_BSA_OBJECT_2_PHYSICAL_EXT 0x06 -#define I2O_BSA_OBJECT_2_AGG_PHYSICAL_EXT 0x07 -#define I2O_BSA_OBJECT_2_REDUNDANCY 0x08 -#define I2O_BSA_OBJECT_2_CACHE 0x09 -#define I2O_BSA_OBJECT_2_SOFTWARE 0x0A - - - - -/* Block Storage Group 0000h - Device Information Parameter Group */ - -typedef struct i2o_bsa_device_info_scalar { - uint8_t DeviceType; - uint8_t NumberOfPaths; - uint16_t PowerState; - uint32_t BlockSize; - uint64_t DeviceCapacity; - uint32_t DeviceCapabilitySupport; - uint32_t DeviceState; -} i2o_bsa_device_info_scalar_t; - - -/* Block Storage Group 0001h - Operational Control Parameter Group */ - -typedef struct i2o_bsa_operational_control_scalar { - uint8_t AutoReassign; - uint8_t ReassignTolerance; - uint8_t RetryAttempts; - uint8_t reserved1; - uint32_t ReassignSize; - uint32_t ExpectedTimeout; - uint32_t RWVTimeout; - uint32_t RWVTimeoutBase; - uint32_t TimeoutBase; - uint32_t OrderedRequestDepth; - uint32_t AtomicWriteSize; -} i2o_bsa_operational_control_scalar_t; - - -/* Block Storage Group 0002h - Power Control Parameter Group */ - -typedef struct i2o_bsa_power_control_scalar { - uint32_t PowerdownTimeout; - uint32_t OnAccess; -} i2o_bsa_power_control_scalar_t; - - -/* Block Storage Group 0003h - Cache Control Parameter Group */ - -typedef struct i2o_bsa_cache_control_scalar { - uint32_t TotalCacheSize; - uint32_t ReadCacheSize; - uint32_t WriteCacheSize; - uint8_t WritePolicy; - uint8_t ReadPolicy; - uint8_t ErrorCorrection; - uint8_t reserved1; /* Note: not in 1.5 spec. */ -} i2o_bsa_cache_control_scalar_t; - - -/* Block Storage Group 0004h - Media Information Parameter Group */ - -typedef struct i2o_bsa_media_info_scalar { - uint64_t Capacity; - uint32_t BlockSize; -} i2o_bsa_media_info_scalar_t; - - -/* Block Storage Group 0005h - Error Log Parameter Group */ - -typedef struct i2o_bsa_error_log_table { - uint16_t ErrorDataIndex; - uint8_t Function; - uint8_t RetryCount; - uint16_t DetailedErrorCode; - uint16_t reserved2; - uint64_t TimeStamp; - uint32_t UserInfo; -} i2o_bsa_error_log_table_t; - - -/* Block Storage Group 0180h - Optional Historical STATS Support/Control */ - -typedef struct i2o_bsa_hist_stats_scalar { - uint8_t StatisticsControl; - uint8_t reserved1; - uint16_t reserved2; - uint32_t StorageStatistics; - uint32_t CacheStatistics; -} i2o_bsa_hist_stats_scalar_t; - - -/* Block Storage Group 0181h - Optional Storage Historical STATS */ - -typedef struct i2o_bsa_storage_hist_stats_scalar { - uint64_t ReadCommands; - uint64_t WriteCommands; - uint8_t DataUnit; - uint8_t reserved1; - uint16_t reserved2; - uint64_t IORange1Read; - uint64_t IORange2Read; - uint64_t IORange3Read; - uint64_t IORange4Read; - uint64_t IORange1Write; - uint64_t IORange2Write; - uint64_t IORange3Write; - uint64_t IORange4Write; - uint64_t NumberSeeks; -} i2o_bsa_storage_hist_stats_scalar_t; - - -/* Block Storage Group 0182h - Optional Cache Historical STATS */ - -typedef struct i2o_bsa_cache_hist_stats_scalar { - uint64_t CacheAccess; - uint64_t CacheHit; - uint64_t PartialCacheHit; - uint64_t HitDataSize; - uint32_t ValidUsage; - uint32_t DirtyUsage; - uint32_t TimeLastFault; - uint32_t LastFaultFailure; -} i2o_bsa_cache_hist_stats_scalar_t; - - -/* Block Storage Group 0200h - Optional Volume Set Information */ - -typedef struct i2o_bsa_volume_info_scalar { - uint8_t Name[64]; - uint64_t TotalStorageCapacity; - uint64_t StripeLength; - uint64_t InterleaveDepth; -} i2o_bsa_volume_info_scalar_t; - - -/* Block Storage Group 0201h - Optional Protected Space Extent */ - -typedef struct i2o_bsa_pro_space_ext_scalar { - uint64_t StartAddress; - uint64_t NumberBlocks; - uint32_t BlockSize; - uint32_t DataStripeGranularity; - uint32_t DataStripeLength; -} i2o_bsa_pro_space_ext_scalar_t; - - -/* Block Storage Group 0202h - Optional Aggregate Protected Space Extent */ - -typedef struct i2o_bsa_agg_prot_space_ext_scalar { - uint64_t NumberBlocks; -} i2o_bsa_agg_prot_space_ext_scalar_t; - - -/* Block Storage Group 0203h - Optional Physical Extent */ - -typedef struct i2o_bsa_phys_ext_scalar { - uint64_t StartAddress; - uint64_t NumberBlocks; - uint32_t BlockSize; - uint32_t GranularityUnit; - uint64_t CheckDataInterleave; - uint64_t CheckData; - uint64_t UserData; -} i2o_bsa_phys_ext_scalar_t; - - -/* Block Storage Group 0204h - Optional Aggregate Physical Extent */ - -typedef struct i2o_bsa_agg_phys_ext_scalar { - uint64_t NumberBlocks; - uint64_t CheckData; -} i2o_bsa_agg_phys_ext_scalar_t; - - -/* Block Storage Group 0205h - Optional Redundancy Table */ - -typedef struct i2o_bsa_redundancy_scalar { - uint8_t RedundancyType; - uint8_t reserved1; /* Note: not in 1.5 spec. */ - uint16_t reserved2; /* Note: not in 1.5 spec. */ -} i2o_bsa_redundancy_scalar_t; - - -/* Block Storage Group 0206h - Optional Component Spares */ - -typedef struct i2o_bsa_component_spares_table { - uint8_t RowNumber; - uint8_t SpareType; - uint8_t ToBeSparedIndex; - uint8_t SparedIndex; - uint8_t SpareFunctioningState; - uint8_t reserved1; /* Note: not in 1.5 spec. */ - uint16_t reserved2; /* Note: not in 1.5 spec. */ -} i2o_bsa_component_spares_table_t; - - -/* Block Storage Group 0207h - Optional Association Table */ - -typedef struct i2o_bsa_association_table { - uint8_t RowNumber; - uint8_t Type; - uint8_t Object1Type; - uint8_t Object1Index; - uint8_t Object2Type; - uint8_t Object2Index; - uint16_t reserved2; /* Note: not in 1.5 spec. */ -} i2o_bsa_association_table_t; - - - -/* I2O BSA Block Storage Event Indicator Assignment */ - -#define I2O_BSA_EVENT_VOLUME_LOAD 0x00000001 -#define I2O_BSA_EVENT_VOLUME_UNLOAD 0x00000002 -#define I2O_BSA_EVENT_VOLUME_UNLOAD_REQUEST 0x00000004 -#define I2O_BSA_EVENT_CAPACITY_CHANGE 0x00000008 -#define I2O_BSA_EVENT_SCSI_SMART 0x00000010 - - - - -/* Block Storage Class Specific Message Definitions */ - - -/* I2O Block Storage Reply Message Frame Template */ - -typedef struct i2o_bsa_reply_message_frame { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t DetailedStatusCode; - uint8_t RetryCount; - uint8_t ReqStatus; -/* ReplyPayload */ -} i2o_bsa_reply_message_frame_t; - - - -/* I2O Block Storage Successful Completion Reply Message Frame */ - -typedef struct i2o_bsa_success_reply_message_frame { - i2o_bsa_reply_message_frame_t BsaReplyFrame; - uint32_t TransferCount; -} i2o_bsa_success_reply_message_frame_t; - - - -/* I2O Block Storage Aborted Operation Reply Message Frame */ - -typedef struct i2o_bsa_abort_reply_message_frame { - i2o_bsa_reply_message_frame_t BsaReplyFrame; -} i2o_bsa_abort_reply_message_frame_t; - - - -/* I2O Block Storage Progress Report Reply Message Frame */ - -typedef struct i2o_bsa_progress_reply_message_frame { - i2o_bsa_reply_message_frame_t BsaReplyFrame; - uint8_t PercentComplete; - uint8_t Reserved[3]; -} i2o_bsa_progress_reply_message_frame_t; - - -/* I2O Block Storage Error Report Reply Message Frame */ - -typedef struct i2o_bsa_error_reply_message_frame { - i2o_bsa_reply_message_frame_t BsaReplyFrame; - uint32_t TransferCount; - uint64_t LogicalByteAddress; -} i2o_bsa_error_reply_message_frame_t; - - - - -/* I2O BSA request message flag definitions */ - -/* I2O BSA Control Flags */ - -typedef uint16_t i2o_bsa_ctl_flags_t; - -#define I2O_BSA_FLAG_PROGRESS_REPORT 0x0080 - -/* I2O BSA Block Read Message Control Flags */ - -typedef uint16_t i2o_bsa_read_flags_t; -#define I2O_BSA_RD_FLAG_DONT_RETRY 0x0001 -#define I2O_BSA_RD_FLAG_SOLO 0x0002 -#define I2O_BSA_RD_FLAG_CACHE_READ 0x0004 -#define I2O_BSA_RD_FLAG_READ_PREFETCH 0x0008 -#define I2O_BSA_RD_FLAG_CACHE_DATA 0x0010 - -/* I2O BSA Block Write Message Control Flags */ - -typedef uint16_t i2o_bsa_write_flags_t; -#define I2O_BSA_WR_FLAG_DONT_RETRY 0x0001 -#define I2O_BSA_WR_FLAG_SOLO 0x0002 -#define I2O_BSA_WR_FLAG_DONT_CACHE 0x0004 -#define I2O_BSA_WR_FLAG_WRITE_THRU 0x0008 -#define I2O_BSA_WR_FLAG_WRITE_TO 0x0010 - -/* I2O BSA Device Reset Message Control Flags */ - -typedef uint16_t i2o_bsa_reset_flags_t; -#define I2O_BSA_FLAG_HARD_RESET 0x0001 - -/* I2O BSA Media Verify Message Control Flags */ - -typedef uint16_t i2o_bsa_verify_flags_t; -/* Progress Report flag definition is valid */ -#define I2O_BSA_ERROR_CORRECTION 0x0040 - - -/* I2O BSA Removeable Media Identifier values */ - -typedef uint32_t i2o_bsa_media_id_t; -#define I2O_BSA_MEDIA_ID_CURRENT_MOUNTED 0xFFFFFFFF - - -/* I2O BSA Removeable Media Load Flags */ - -typedef uint8_t i2o_bsa_load_flags_t; -#define I2O_BSA_LOAD_FLAG_MEDIA_LOCK 0x80 - - -/* I2O BSA Power Management Operation values */ - -typedef uint8_t i2o_bsa_operation_t; -#define I2O_BSA_POWER_MGT_PARTIAL_POWER_UP 0x01 -#define I2O_BSA_POWER_MGT_POWER_UP 0x02 -#define I2O_BSA_POWER_MGT_POWER_UP_LOAD 0x03 -#define I2O_BSA_POWER_MGT_QUIESCE_DEVICE 0x20 -#define I2O_BSA_POWER_MGT_PARTIAL_POWER_DOWN 0x21 -#define I2O_BSA_POWER_MGT_PARTIAL_POWER_DOWN_UNLOAD 0x22 -#define I2O_BSA_POWER_MGT_POWER_DOWN_UNLOAD 0x23 -#define I2O_BSA_POWER_MGT_POWER_DOWN_RETAIN 0x24 - - - -/* I2O BSA Block Read Message Frame */ - -typedef struct i2o_bsa_read_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_read_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t FetchAhead; - uint32_t TransferByteCount; - uint64_t LogicalByteAddress; - i2o_sg_element_t SGL; -} i2o_bsa_read_message_t; - - - -/* I2O BSA Block Reassign Message Frame */ - -typedef struct i2o_bsa_block_reassign_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t Reserved1; - uint8_t TimeMultiplier; - uint8_t Reserved2; - i2o_sg_element_t SGL; -} i2o_bsa_block_reassign_message_t; - - - -/* I2O BSA Block Write Message Frame */ - -typedef struct i2o_bsa_write_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_write_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t Reserved; - uint32_t TransferByteCount; - uint64_t LogicalByteAddress; - i2o_sg_element_t SGL; -} i2o_bsa_write_message_t; - - - -/* I2O BSA Block Write and Verify Message Frame */ - -typedef struct i2o_bsa_write_verify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_write_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t Reserved; - uint32_t TransferByteCount; - uint64_t LogicalByteAddress; - i2o_sg_element_t SGL; -} i2o_bsa_write_verify_message_t; - - - -/* I2O BSA Cache Flush Message Frame */ - -typedef struct i2o_bsa_cache_flush_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_ctl_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t Reserved; -} i2o_bsa_cache_flush_message_t; - - - -/* I2O BSA Device Reset Message Frame */ - -typedef struct _12o_bsa_device_reset_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_reset_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t Reserved; -} i2o_bsa_device_reset_message_t; - - - -/* I2O BSA Media Eject for Removeable Media Message Frame */ - -typedef struct i2o_bsa_media_eject_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_media_id_t MediaIdentifier; -} i2o_bsa_media_eject_message_t; - - - -/* I2O BSA Media Lock Message Frame */ - -typedef struct i2o_bsa_media_lock_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_media_id_t MediaIdentifier; -} i2o_bsa_media_lock_message_t; - - - -/* I2O BSA Media Mount for Removeable Media Message Frame */ - -typedef struct i2o_bsa_media_mount_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_media_id_t MediaIdentifier; - i2o_bsa_load_flags_t LoadFlags; - uint8_t Reserved[3]; -} i2o_bsa_media_mount_message_t; - - - -/* I2O BSA Media Unlock Message Frame */ - -typedef struct i2o_bsa_media_unlock_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_media_id_t MediaIdentifier; -} i2o_bsa_media_unlock_message_t; - - - -/* I2O BSA Media Verify Message Frame */ - -typedef struct i2o_bsa_media_verify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_verify_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t Reserved; - uint32_t ByteCount; - uint64_t LogicalByteAddress; -} i2o_bsa_media_verify_message_t; - - - -/* I2O BSA Power Management Message Frame */ - -typedef struct i2o_bsa_power_management_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - i2o_bsa_ctl_flags_t ControlFlags; - uint8_t TimeMultiplier; - uint8_t ReplyType; - i2o_bsa_operation_t Operation; -} i2o_bsa_power_management_message_t; - - - -/* I2O BSA Status Check Message Frame */ - -typedef struct i2o_bsa_status_check_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_bsa_status_check_message_t; - - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OMSTOR_H */ diff --git a/usr/src/uts/common/sys/i2o/i2outil.h b/usr/src/uts/common/sys/i2o/i2outil.h deleted file mode 100644 index a3bbd40267..0000000000 --- a/usr/src/uts/common/sys/i2o/i2outil.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * ********************************************************************* - * All software on this website is made available under the following - * terms and conditions. By downloading this software, you agree to - * abide by these terms and conditions with respect to this software. - * - * I2O SIG All rights reserved. - * - * These header files are provided, pursuant to your I2O SIG membership - * agreement, free of charge on an as-is basis without warranty of any - * kind, either express or implied, including but not limited to, - * implied warranties or merchantability and fitness for a particular - * purpose. I2O SIG does not warrant that this program will meet the - * user's requirements or that the operation of these programs will be - * uninterrupted or error-free. Acceptance and use of this program - * constitutes the user's understanding that he will have no recourse - * to I2O SIG for any actual or consequential damages including, but - * not limited to, loss profits arising out of use or inability to use - * this program. - * - * Member is permitted to create deriavative works to this header-file - * program. However, all copies of the program and its derivative - * works must contain the I2O SIG copyright notice. - * ******************************************************************** - */ - -/* - * ******************************************************************** - * I2OUtil.h -- I2O Utility Class Message defintion file - * - * This file contains information presented in Chapter 6 of the I2O - * Specification. - * ******************************************************************** - */ - -/* - * Copyright (c) 1998 by Sun Microsystems, Inc. - * All rights reserved. - */ - -#ifndef _SYS_I2OUTIL_H -#define _SYS_I2OUTIL_H - -#pragma ident "%W% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define I2OUTIL_REV 1_5_4 /* I2OUtil header file revision string */ - -#include <sys/i2o/i2omsg.h> /* Include the Base Message file */ - -/* - * ******************************************************************** - * NOTES: - * - * Gets, reads, receives, etc. are all even numbered functions. - * Sets, writes, sends, etc. are all odd numbered functions. - * Functions that both send and receive data can be either but an attempt is - * made to use the function number that indicates the greater transfer amount. - * Functions that do not send or receive data use odd function numbers. - * - * Some functions are synonyms like read, receive and send, write. - * - * All common functions will have a code of less than 0x80. - * Unique functions to a class will start at 0x80. - * Executive Functions start at 0xA0. - * - * Utility Message function codes range from 0 - 0x1f - * Base Message function codes range from 0x20 - 0xfe - * Private Message function code is 0xff. - * ******************************************************************** - */ - -/* Utility Message class functions. */ - -#define I2O_UTIL_NOP 0x00 -#define I2O_UTIL_ABORT 0x01 -#define I2O_UTIL_CLAIM 0x09 -#define I2O_UTIL_CLAIM_RELEASE 0x0B -#define I2O_UTIL_CONFIG_DIALOG 0x10 -#define I2O_UTIL_DEVICE_RESERVE 0x0D -#define I2O_UTIL_DEVICE_RELEASE 0x0F -#define I2O_UTIL_EVENT_ACKNOWLEDGE 0x14 -#define I2O_UTIL_EVENT_REGISTER 0x13 -#define I2O_UTIL_LOCK 0x17 -#define I2O_UTIL_LOCK_RELEASE 0x19 -#define I2O_UTIL_PARAMS_GET 0x06 -#define I2O_UTIL_PARAMS_SET 0x05 -#define I2O_UTIL_REPLY_FAULT_NOTIFY 0x15 - -/* ************************************************************************** */ - -/* ABORT Abort type defines. */ - -#define I2O_ABORT_TYPE_EXACT_ABORT 0x00 -#define I2O_ABORT_TYPE_FUNCTION_ABORT 0x01 -#define I2O_ABORT_TYPE_TRANSACTION_ABORT 0x02 -#define I2O_ABORT_TYPE_WILD_ABORT 0x03 -#define I2O_ABORT_TYPE_CLEAN_EXACT_ABORT 0x04 -#define I2O_ABORT_TYPE_CLEAN_FUNCTION_ABORT 0x05 -#define I2O_ABORT_TYPE_CLEAN_TRANSACTION_ABORT 0x06 -#define I2O_ABORT_TYPE_CLEAN_WILD_ABORT 0x07 - -/* UtilAbort Function Message Frame structure. */ - -typedef struct i2o_util_abort_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t reserved; - uint8_t AbortType; - uint8_t FunctionToAbort; - i2o_transaction_context_t TransactionContextToAbort; -} i2o_util_abort_message_t; - -typedef struct i2o_util_abort_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t CountOfAbortedMessages; -} i2o_util_abort_reply_t; - -/* ************************************************************************** */ - -/* Claim Flag defines */ - -#define I2O_CLAIM_FLAGS_EXCLUSIVE 0x0001 /* Reserved */ -#define I2O_CLAIM_FLAGS_RESET_SENSITIVE 0x0002 -#define I2O_CLAIM_FLAGS_STATE_SENSITIVE 0x0004 -#define I2O_CLAIM_FLAGS_CAPACITY_SENSITIVE 0x0008 -#define I2O_CLAIM_FLAGS_PEER_SERVICE_DISABLED 0x0010 -#define I2O_CLAIM_FLAGS_MGMT_SERVICE_DISABLED 0x0020 - -/* Claim Type defines */ - -#define I2O_CLAIM_TYPE_PRIMARY_USER 0x01 -#define I2O_CLAIM_TYPE_AUTHORIZED_USER 0x02 -#define I2O_CLAIM_TYPE_SECONDARY_USER 0x03 -#define I2O_CLAIM_TYPE_MANAGEMENT_USER 0x04 - -/* UtilClaim Function Message Frame structure. */ - -typedef struct i2o_util_claim_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t ClaimFlags; - uint8_t reserved; - uint8_t ClaimType; -} i2o_util_claim_message_t; - -/* ************************************************************************** */ - -/* Claim Release Flag defines */ - -#define I2O_RELEASE_FLAGS_CONDITIONAL 0x0001 - -/* UtilClaimRelease Function Message Frame structure. */ - -typedef struct i2o_util_claim_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint16_t ReleaseFlags; - uint8_t reserved; - uint8_t ClaimType; -} i2o_util_claim_release_message_t; - -/* ************************************************************************** */ - -/* UtilConfigDialog Function Message Frame structure */ - -typedef struct i2o_util_config_dialog_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t PageNumber; - i2o_sg_element_t SGL; -} i2o_util_config_dialog_message_t; - -/* ************************************************************************** */ - -/* Event Acknowledge Function Message Frame structure */ - -typedef struct i2o_util_event_ack_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t EventIndicator; - uint32_t EventData[1]; -} i2o_util_event_ack_message_t; - -/* Event Ack Reply structure */ - -typedef struct i2o_util_event_ack_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t EventIndicator; - uint32_t EventData[1]; -} i2o_util_event_ack_reply_t; - -/* ************************************************************************** */ - -/* Event Indicator Mask Flags */ - -#define I2O_EVENT_IND_STATE_CHANGE 0x80000000 -#define I2O_EVENT_IND_GENERAL_WARNING 0x40000000 -#define I2O_EVENT_IND_CONFIGURATION_FLAG 0x20000000 -/* #define I2O_EVENT_IND_RESERVE_RELEASE 0x10000000 */ -#define I2O_EVENT_IND_LOCK_RELEASE 0x10000000 -#define I2O_EVENT_IND_CAPABILITY_CHANGE 0x08000000 -#define I2O_EVENT_IND_DEVICE_RESET 0x04000000 -#define I2O_EVENT_IND_EVENT_MASK_MODIFIED 0x02000000 -#define I2O_EVENT_IND_FIELD_MODIFIED 0x01000000 -#define I2O_EVENT_IND_VENDOR_EVENT 0x00800000 -#define I2O_EVENT_IND_DEVICE_STATE 0x00400000 - -/* Event Data for generic Events */ - -#define I2O_EVENT_STATE_CHANGE_NORMAL 0x00 -#define I2O_EVENT_STATE_CHANGE_SUSPENDED 0x01 -#define I2O_EVENT_STATE_CHANGE_RESTART 0x02 -#define I2O_EVENT_STATE_CHANGE_NA_RECOVER 0x03 -#define I2O_EVENT_STATE_CHANGE_NA_NO_RECOVER 0x04 -#define I2O_EVENT_STATE_CHANGE_QUIESCE_REQUEST 0x05 -#define I2O_EVENT_STATE_CHANGE_FAILED 0x10 -#define I2O_EVENT_STATE_CHANGE_FAULTED 0x11 - -#define I2O_EVENT_GEN_WARNING_NORMAL 0x00 -#define I2O_EVENT_GEN_WARNING_ERROR_THRESHOLD 0x01 -#define I2O_EVENT_GEN_WARNING_MEDIA_FAULT 0x02 - -#define I2O_EVENT_CAPABILITY_OTHER 0x01 -#define I2O_EVENT_CAPABILITY_CHANGED 0x02 - -#define I2O_EVENT_SENSOR_STATE_CHANGED 0x01 - -/* UtilEventRegister Function Message Frame structure */ - -typedef struct i2o_util_event_register_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t EventMask; -} i2o_util_event_register_message_t; - -/* UtilEventRegister Reply structure */ - -typedef struct i2o_util_event_register_reply { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t EventIndicator; - uint32_t EventData[1]; -} i2o_util_event_register_reply_t; - -/* ************************************************************************** */ - -/* UtilLock Function Message Frame structure. */ - -typedef struct i2o_util_lock_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_util_lock_message_t; - -/* ************************************************************************** */ - -/* UtilLockRelease Function Message Frame structure. */ - -typedef struct i2o_util_lock_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_util_lock_release_message_t; - -/* ************************************************************************** */ - -/* UtilNOP Function Message Frame structure. */ - -typedef struct i2o_util_nop_message { - i2o_message_frame_t StdMessageFrame; -} i2o_util_nop_message_t; - -/* ************************************************************************** */ - -/* UtilParamsGet Message Frame structure. */ - -typedef struct i2o_util_params_get_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t OperationFlags; - i2o_sg_element_t SGL; -} i2o_util_params_get_message_t; - -/* ************************************************************************** */ - -/* UtilParamsSet Message Frame structure. */ - -typedef struct i2o_util_params_set_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint32_t OperationFlags; - i2o_sg_element_t SGL; -} i2o_util_params_set_message_t; - - -/* ************************************************************************** */ - -/* UtilReplyFaultNotify Message for Message Failure. */ - -#if defined(_BIT_FIELDS_LTOH) && defined(_LITTLE_ENDIAN) - -typedef struct i2o_util_reply_fault_notify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t LowestVersion; - uint8_t HighestVersion; - uint8_t Severity; - uint8_t FailureCode; - union { - struct { - uint16_t FailingIOP_ID:12; - uint16_t reserved:4; - } s; - uint16_t h1; - } u1; - uint16_t FailingHostUnitID; - uint32_t AgeLimit; -#if I2O_64BIT_CONTEXT - i2o_message_frame_t *OriginalMFA; -#else - i2o_message_frame_t *OriginalMFALowPart; - uint32_t OriginalMFAHighPart; /* Always 0000 */ -#endif -} i2o_util_reply_fault_notify_message_t; - -#define get_i2o_util_FailingIOP_ID(p, hdl) (p)->u1.s.FailingIOP_ID - -#endif - -#if defined(_BIT_FIELDS_HTOL) && defined(_BIG_ENDIAN) - -typedef struct i2o_util_reply_fault_notify_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; - uint8_t LowestVersion; - uint8_t HighestVersion; - uint8_t Severity; - uint8_t FailureCode; - union { - struct { - uint16_t reserved:4; - uint16_t FailingIOP_ID:12; - } s; - uint32_t h1; - } u1; - uint16_t FailingHostUnitID; - uint32_t AgeLimit; -#if I2O_64BIT_CONTEXT - i2o_message_frame_t *OriginalMFA; -#else - i2o_message_frame_t *OriginalMFALowPart; - uint32_t OriginalMFAHighPart; /* Always 0000 */ -#endif -} i2o_util_reply_fault_notify_message_t; - -#define get_i2o_util_FailingIOP_ID(p, hdl) \ - (ddi_get16(hdl, &(p)->u1.h1) & 0xFFF) - -#endif - -/* ************************************************************************** */ - -/* Device Reserve Function Message Frame structure. */ -/* NOTE: This was previously called the Reserve Message */ - -typedef struct i2o_util_device_reserve_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_util_device_reserve_message_t; - -/* ************************************************************************** */ - -/* Device Release Function Message Frame structure. */ -/* NOTE: This was previously called the ReserveRelease Message */ - -typedef struct i2o_util_device_release_message { - i2o_message_frame_t StdMessageFrame; - i2o_transaction_context_t TransactionContext; -} i2o_util_device_release_message_t; - -/* ************************************************************************** */ - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_I2OUTIL_H */ |