Commit cab841c6 authored by James Bottomley's avatar James Bottomley

Merge qboosh/emoore conflict

parents 0a912921 a6150587
...@@ -2,7 +2,7 @@ This file contains brief information about the SCSI tape driver. ...@@ -2,7 +2,7 @@ This file contains brief information about the SCSI tape driver.
The driver is currently maintained by Kai Mäkisara (email The driver is currently maintained by Kai Mäkisara (email
Kai.Makisara@kolumbus.fi) Kai.Makisara@kolumbus.fi)
Last modified: Thu Feb 19 21:57:30 2004 by makisara Last modified: Wed Feb 25 14:09:08 2004 by makisara
BASICS BASICS
...@@ -36,8 +36,9 @@ The user can override the parameters defined by the system ...@@ -36,8 +36,9 @@ The user can override the parameters defined by the system
manager. The changes persist until the defaults again come into manager. The changes persist until the defaults again come into
effect. effect.
3. Up to four modes can be defined and selected using the minor number 3. By default, up to four modes can be defined and selected using the minor
(bits 5 and 6). Mode 0 corresponds to the defaults discussed number (bits 5 and 6). The number of modes can be changed by changing
ST_NBR_MODE_BITS in st.h. Mode 0 corresponds to the defaults discussed
above. Additional modes are dormant until they are defined by the above. Additional modes are dormant until they are defined by the
system manager (root). When specification of a new mode is started, system manager (root). When specification of a new mode is started,
the configuration of mode 0 is used to provide a starting point for the configuration of mode 0 is used to provide a starting point for
...@@ -107,7 +108,7 @@ The minor numbers consist of the following bit fields: ...@@ -107,7 +108,7 @@ The minor numbers consist of the following bit fields:
dev_upper non-rew mode dev-lower dev_upper non-rew mode dev-lower
20 - 8 7 6 5 4 0 20 - 8 7 6 5 4 0
The non-rewind bit is always bit 7 (the uppermost bit in the lowermost The non-rewind bit is always bit 7 (the uppermost bit in the lowermost
byte). The bits defining the mode are next to the non-rewind bits. The byte). The bits defining the mode are below the non-rewind bit. The
remaining bits define the tape device number. This numbering is remaining bits define the tape device number. This numbering is
backward compatible with the numbering used when the minor number was backward compatible with the numbering used when the minor number was
only 8 bits wide. only 8 bits wide.
...@@ -117,10 +118,10 @@ SYSFS SUPPORT ...@@ -117,10 +118,10 @@ SYSFS SUPPORT
The driver creates the directory /sys/class/scsi_tape and populates it with The driver creates the directory /sys/class/scsi_tape and populates it with
directories corresponding to the existing tape devices. There are autorewind directories corresponding to the existing tape devices. There are autorewind
and non-rewind entries for each mode. The names are stxmy and stxmyn, where x and non-rewind entries for each mode. The names are stxy and nstxy, where x
is the tape number and y is the mode. For example, the directories for the is the tape number and y a character corresponding to the mode (none, l, m,
first tape device are (assuming four modes): st0m0 st0m0n st0m1 st0m1n a). For example, the directories for the first tape device are (assuming four
st0m2 st0m2n st0m3 st0m3n. modes): st0 nst0 st0l nst0l st0m nst0m st0a nst0a.
Each directory contains the entries: default_blksize default_compression Each directory contains the entries: default_blksize default_compression
default_density defined dev device driver. The file 'defined' contains 1 default_density defined dev device driver. The file 'defined' contains 1
...@@ -130,7 +131,7 @@ file 'dev' contains the device numbers corresponding to this device. The links ...@@ -130,7 +131,7 @@ file 'dev' contains the device numbers corresponding to this device. The links
'device' and 'driver' point to the SCSI device and driver entries. 'device' and 'driver' point to the SCSI device and driver entries.
A link named 'tape' is made from the SCSI device directory to the class A link named 'tape' is made from the SCSI device directory to the class
directory corresponding to the mode 0 auto-rewind device (e.g., st0m0). directory corresponding to the mode 0 auto-rewind device (e.g., st0).
BSD AND SYS V SEMANTICS BSD AND SYS V SEMANTICS
......
...@@ -3,7 +3,7 @@ menu "Fusion MPT device support" ...@@ -3,7 +3,7 @@ menu "Fusion MPT device support"
config FUSION config FUSION
tristate "Fusion MPT (base + ScsiHost) drivers" tristate "Fusion MPT (base + ScsiHost) drivers"
depends on BLK_DEV_SD && PCI depends on PCI
---help--- ---help---
LSI Logic Fusion(TM) Message Passing Technology (MPT) device support LSI Logic Fusion(TM) Message Passing Technology (MPT) device support
provides high performance SCSI host initiator, and LAN [1] interface provides high performance SCSI host initiator, and LAN [1] interface
...@@ -14,41 +14,6 @@ config FUSION ...@@ -14,41 +14,6 @@ config FUSION
[1] LAN is not supported on parallel SCSI medium. [1] LAN is not supported on parallel SCSI medium.
These drivers require a Fusion MPT compatible PCI adapter installed
in the host system. MPT adapters contain specialized I/O processors
to handle I/O workload, and more importantly to offload this work
from the host CPU(s).
If you have Fusion MPT hardware and want to use it, you can say
Y or M here to add MPT (base + ScsiHost) drivers.
<Y> = build lib (fusion), and link [static] into the kernel [2]
proper
<M> = compiled as [dynamic] modules [3] named: (mptbase,
mptscsih)
[2] In order enable capability to boot the linux kernel
natively from a Fusion MPT target device, you MUST
answer Y here! (currently requires CONFIG_BLK_DEV_SD)
[3] To compile this support as modules, choose M here.
If unsure, say N.
If you say Y or M here you will get a choice of these
additional protocol and support module options: Module Name:
<M> Enhanced SCSI error reporting (isense)
<M> Fusion MPT misc device (ioctl) driver (mptctl)
<M> Fusion MPT LAN driver (mptlan)
---
Fusion MPT is trademark of LSI Logic Corporation, and its
architecture is based on LSI Logic's Message Passing Interface (MPI)
specification.
config FUSION_BOOT
bool
depends on FUSION=y
default y
config FUSION_MAX_SGE config FUSION_MAX_SGE
int "Maximum number of scatter gather entries" int "Maximum number of scatter gather entries"
depends on FUSION depends on FUSION
...@@ -62,7 +27,6 @@ config FUSION_MAX_SGE ...@@ -62,7 +27,6 @@ config FUSION_MAX_SGE
necessary (or recommended) unless the user will be running necessary (or recommended) unless the user will be running
large I/O's via the raw interface. large I/O's via the raw interface.
# How can we force these options to module or nothing?
config FUSION_ISENSE config FUSION_ISENSE
tristate "Enhanced SCSI error reporting" tristate "Enhanced SCSI error reporting"
depends on MODULES && FUSION && m depends on MODULES && FUSION && m
...@@ -132,17 +96,4 @@ config FUSION_LAN ...@@ -132,17 +96,4 @@ config FUSION_LAN
If unsure whether you really want or need this, say N. If unsure whether you really want or need this, say N.
NOTES: This feature is NOT available nor supported for linux-2.2.x
kernels. You must be building a linux-2.3.x or linux-2.4.x kernel
in order to configure this option.
Support for building this feature into the linux kernel is not
yet available.
# if [ "$CONFIG_FUSION_LAN" != "n" ]; then
# define_bool CONFIG_NET_FC y
# fi
# These <should> be define_tristate, but we leave them define_bool
# for backward compatibility with pre-linux-2.2.15 kernels.
# (Bugzilla:fibrebugs, #384)
endmenu endmenu
...@@ -17,10 +17,16 @@ EXTRA_CFLAGS += ${MPT_CFLAGS} ...@@ -17,10 +17,16 @@ EXTRA_CFLAGS += ${MPT_CFLAGS}
# Fusion MPT drivers; recognized debug defines... # Fusion MPT drivers; recognized debug defines...
# MPT general: # MPT general:
#EXTRA_CFLAGS += -DDEBUG #EXTRA_CFLAGS += -DMPT_DEBUG_SCSI
#EXTRA_CFLAGS += -DMPT_DEBUG #EXTRA_CFLAGS += -DMPT_DEBUG
#EXTRA_CFLAGS += -DMPT_DEBUG_MSG_FRAME #EXTRA_CFLAGS += -DMPT_DEBUG_MSG_FRAME
#EXTRA_CFLAGS += -DMPT_DEBUG_SG #EXTRA_CFLAGS += -DMPT_DEBUG_SG
# This is a temporary fix for the reply/request fifo
# for some 64bit archs. Uncommenting this line
# will place the fifo's in 32bit space
#EXTRA_CFLAGS += -DMPTBASE_MEM_ALLOC_FIFO_FIX
# #
# driver/module specifics... # driver/module specifics...
# #
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* Error Report logging output. This module implements SCSI-3 * Error Report logging output. This module implements SCSI-3
* Opcode lookup and a sorted table of SCSI-3 ASC/ASCQ strings. * Opcode lookup and a sorted table of SCSI-3 ASC/ASCQ strings.
* *
* Copyright (c) 1991-2003 Steven J. Ralston * Copyright (c) 1991-2004 Steven J. Ralston
* Written By: Steven J. Ralston * Written By: Steven J. Ralston
* (yes I wrote some of the orig. code back in 1991!) * (yes I wrote some of the orig. code back in 1991!)
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
#endif #endif
#define MODULEAUTHOR "Steven J. Ralston" #define MODULEAUTHOR "Steven J. Ralston"
#define COPYRIGHT "Copyright (c) 2001-2003 " MODULEAUTHOR #define COPYRIGHT "Copyright (c) 2001-2004 " MODULEAUTHOR
#include "mptbase.h" #include "mptbase.h"
#include "isense.h" #include "isense.h"
......
...@@ -15,25 +15,7 @@ ...@@ -15,25 +15,7 @@
#define rwlock_init(x) do { *(x) = RW_LOCK_UNLOCKED; } while(0) #define rwlock_init(x) do { *(x) = RW_LOCK_UNLOCKED; } while(0)
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) #define SET_NICE(current,x) do {(current)->nice = (x);} while (0)
#define SET_NICE(current,x) do {(current)->nice = (x);} while (0)
#else
#define SET_NICE(current,x)
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
#define pci_enable_device(pdev) (0)
#define SCSI_DATA_UNKNOWN 0
#define SCSI_DATA_WRITE 1
#define SCSI_DATA_READ 2
#define SCSI_DATA_NONE 3
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4)
#define pci_set_dma_mask(pdev, mask) (0)
#define scsi_set_pci_device(sh, pdev) (0)
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
# if LINUX_VERSION_CODE < KERNEL_VERSION(2,2,18) # if LINUX_VERSION_CODE < KERNEL_VERSION(2,2,18)
...@@ -147,31 +129,9 @@ typedef void (*__cleanup_module_func_t)(void); ...@@ -147,31 +129,9 @@ typedef void (*__cleanup_module_func_t)(void);
/* PCI/driver subsystem { */ /* PCI/driver subsystem { */
#if 0 /* FIXME Don't know what to use to check for the proper kernel version */
#define DEVICE_COUNT_RESOURCE 6
#define PCI_BASEADDR_FLAGS(idx) base_address[idx]
#define PCI_BASEADDR_START(idx) base_address[idx] & ~0xFUL
/*
* We have to keep track of the original value using
* a temporary, and not by just sticking pdev->base_address[x]
* back. pdev->base_address[x] is an opaque cookie that can
* be used by the PCI implementation on a given Linux port
* for any purpose. -DaveM
*/
#define PCI_BASEADDR_SIZE(__pdev, __idx) \
({ unsigned int size, tmp; \
pci_read_config_dword(__pdev, PCI_BASE_ADDRESS_0 + (4*(__idx)), &tmp); \
pci_write_config_dword(__pdev, PCI_BASE_ADDRESS_0 + (4*(__idx)), 0xffffffff); \
pci_read_config_dword(__pdev, PCI_BASE_ADDRESS_0 + (4*(__idx)), &size); \
pci_write_config_dword(__pdev, PCI_BASE_ADDRESS_0 + (4*(__idx)), tmp); \
(4 - size); \
})
#else
#define PCI_BASEADDR_FLAGS(idx) resource[idx].flags #define PCI_BASEADDR_FLAGS(idx) resource[idx].flags
#define PCI_BASEADDR_START(idx) resource[idx].start #define PCI_BASEADDR_START(idx) resource[idx].start
#define PCI_BASEADDR_SIZE(dev,idx) (dev)->resource[idx].end - (dev)->resource[idx].start + 1 #define PCI_BASEADDR_SIZE(dev,idx) (dev)->resource[idx].end - (dev)->resource[idx].start + 1
#endif /* } ifndef 0 */
/* Compatability for the 2.3.x PCI DMA API. */ /* Compatability for the 2.3.x PCI DMA API. */
#ifndef PCI_DMA_BIDIRECTIONAL #ifndef PCI_DMA_BIDIRECTIONAL
...@@ -227,54 +187,10 @@ static __inline__ int __get_order(unsigned long size) ...@@ -227,54 +187,10 @@ static __inline__ int __get_order(unsigned long size)
/*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
#endif /* PCI_DMA_BIDIRECTIONAL */ #endif /* PCI_DMA_BIDIRECTIONAL */
/*
* With the new command queuing code in the SCSI mid-layer we no longer have
* to hold the io_request_lock spin lock when calling the scsi_done routine.
* For now we only do this with the 2.5.1 kernel or newer.
*/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,1)
#define MPT_HOST_LOCK(flags)
#define MPT_HOST_UNLOCK(flags)
#else
#define MPT_HOST_LOCK(flags) \
spin_lock_irqsave(&io_request_lock, flags)
#define MPT_HOST_UNLOCK(flags) \
spin_unlock_irqrestore(&io_request_lock, flags)
#endif
/*
* We use our new error handling code if the kernel version is 2.4.18 or newer.
*/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,18)
#define MPT_SCSI_USE_NEW_EH
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,41)
#define mpt_work_struct work_struct #define mpt_work_struct work_struct
#define MPT_INIT_WORK(_task, _func, _data) INIT_WORK(_task, _func, _data) #define MPT_INIT_WORK(_task, _func, _data) INIT_WORK(_task, _func, _data)
#else #define mpt_sync_irq(_irq) synchronize_irq(_irq)
#define mpt_work_struct tq_struct
#define MPT_INIT_WORK(_task, _func, _data) \
({ (_task)->sync = 0; \
(_task)->routine = (_func); \
(_task)->data = (void *) (_data); \
})
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,28)
#define mptscsih_sync_irq(_irq) synchronize_irq(_irq)
#else
#define mptscsih_sync_irq(_irq) synchronize_irq()
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,58)
#define mpt_inc_use_count()
#define mpt_dec_use_count()
#else
#define mpt_inc_use_count() MOD_INC_USE_COUNT
#define mpt_dec_use_count() MOD_DEC_USE_COUNT
#endif
/*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*}-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
#endif /* _LINUX_COMPAT_H */ #endif /* _LINUX_COMPAT_H */
......
This diff is collapsed.
This diff is collapsed.
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_FC.H * Name: mpi_fc.h
* Title: MPI Fibre Channel messages and structures * Title: MPI Fibre Channel messages and structures
* Creation Date: June 12, 2000 * Creation Date: June 12, 2000
* *
* MPI_FC.H Version: 01.02.03 * mpi_fc.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
/***************************************************************************** /*****************************************************************************
* *
* F C T a r g e t M o d e M e s s a g e s * F C D i r e c t A c c e s s M e s s a g e s
* *
*****************************************************************************/ *****************************************************************************/
...@@ -334,6 +334,7 @@ typedef struct _MSG_FC_PRIMITIVE_SEND_REQUEST ...@@ -334,6 +334,7 @@ typedef struct _MSG_FC_PRIMITIVE_SEND_REQUEST
FcPrimitiveSendRequest_t, MPI_POINTER pFcPrimitiveSendRequest_t; FcPrimitiveSendRequest_t, MPI_POINTER pFcPrimitiveSendRequest_t;
#define MPI_FC_PRIM_SEND_FLAGS_PORT_MASK (0x01) #define MPI_FC_PRIM_SEND_FLAGS_PORT_MASK (0x01)
#define MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK (0x02)
#define MPI_FC_PRIM_SEND_FLAGS_RESET_LINK (0x04) #define MPI_FC_PRIM_SEND_FLAGS_RESET_LINK (0x04)
#define MPI_FC_PRIM_SEND_FLAGS_STOP_SEND (0x08) #define MPI_FC_PRIM_SEND_FLAGS_STOP_SEND (0x08)
#define MPI_FC_PRIM_SEND_FLAGS_SEND_ONCE (0x10) #define MPI_FC_PRIM_SEND_FLAGS_SEND_ONCE (0x10)
......
/*
* Copyright (c) 2003 LSI Logic Corporation.
*
*
* Name: mpi_inb.h
* Title: MPI Inband structures and definitions
* Creation Date: September 30, 2003
*
* mpi_inb.h Version: 01.03.xx
*
* Version History
* ---------------
*
* Date Version Description
* -------- -------- ------------------------------------------------------
* ??-??-?? 01.03.01 Original release.
* --------------------------------------------------------------------------
*/
#ifndef MPI_INB_H
#define MPI_INB_H
/******************************************************************************
*
* I n b a n d M e s s a g e s
*
*******************************************************************************/
/****************************************************************************/
/* Inband Buffer Post Request */
/****************************************************************************/
typedef struct _MSG_INBAND_BUFFER_POST_REQUEST
{
U8 Reserved1; /* 00h */
U8 BufferCount; /* 01h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U32 Reserved4; /* 0Ch */
SGE_TRANS_SIMPLE_UNION SGL; /* 10h */
} MSG_INBAND_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REQUEST,
MpiInbandBufferPostRequest_t , MPI_POINTER pMpiInbandBufferPostRequest_t;
typedef struct _WWN_FC_FORMAT
{
U64 NodeName; /* 00h */
U64 PortName; /* 08h */
} WWN_FC_FORMAT, MPI_POINTER PTR_WWN_FC_FORMAT,
WwnFcFormat_t, MPI_POINTER pWwnFcFormat_t;
typedef struct _WWN_SAS_FORMAT
{
U64 WorldWideID; /* 00h */
U32 Reserved1; /* 08h */
U32 Reserved2; /* 0Ch */
} WWN_SAS_FORMAT, MPI_POINTER PTR_WWN_SAS_FORMAT,
WwnSasFormat_t, MPI_POINTER pWwnSasFormat_t;
typedef union _WWN_INBAND_FORMAT
{
WWN_FC_FORMAT Fc;
WWN_SAS_FORMAT Sas;
} WWN_INBAND_FORMAT, MPI_POINTER PTR_WWN_INBAND_FORMAT,
WwnInbandFormat, MPI_POINTER pWwnInbandFormat;
/* Inband Buffer Post reply message */
typedef struct _MSG_INBAND_BUFFER_POST_REPLY
{
U16 Reserved1; /* 00h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U16 Reserved4; /* 0Ch */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
U32 TransferLength; /* 14h */
U32 TransactionContext; /* 18h */
WWN_INBAND_FORMAT Wwn; /* 1Ch */
U32 IOCIdentifier[4]; /* 2Ch */
} MSG_INBAND_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_INBAND_BUFFER_POST_REPLY,
MpiInbandBufferPostReply_t, MPI_POINTER pMpiInbandBufferPostReply_t;
/****************************************************************************/
/* Inband Send Request */
/****************************************************************************/
typedef struct _MSG_INBAND_SEND_REQUEST
{
U16 Reserved1; /* 00h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U32 Reserved4; /* 0Ch */
WWN_INBAND_FORMAT Wwn; /* 10h */
U32 Reserved5; /* 20h */
SGE_IO_UNION SGL; /* 24h */
} MSG_INBAND_SEND_REQUEST, MPI_POINTER PTR_MSG_INBAND_SEND_REQUEST,
MpiInbandSendRequest_t , MPI_POINTER pMpiInbandSendRequest_t;
/* Inband Send reply message */
typedef struct _MSG_INBAND_SEND_REPLY
{
U16 Reserved1; /* 00h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U16 Reserved4; /* 0Ch */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
U32 ResponseLength; /* 14h */
} MSG_INBAND_SEND_REPLY, MPI_POINTER PTR_MSG_INBAND_SEND_REPLY,
MpiInbandSendReply_t, MPI_POINTER pMpiInbandSendReply_t;
/****************************************************************************/
/* Inband Response Request */
/****************************************************************************/
typedef struct _MSG_INBAND_RSP_REQUEST
{
U16 Reserved1; /* 00h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U32 Reserved4; /* 0Ch */
WWN_INBAND_FORMAT Wwn; /* 10h */
U32 IOCIdentifier[4]; /* 20h */
U32 ResponseLength; /* 30h */
SGE_IO_UNION SGL; /* 34h */
} MSG_INBAND_RSP_REQUEST, MPI_POINTER PTR_MSG_INBAND_RSP_REQUEST,
MpiInbandRspRequest_t , MPI_POINTER pMpiInbandRspRequest_t;
/* Inband Response reply message */
typedef struct _MSG_INBAND_RSP_REPLY
{
U16 Reserved1; /* 00h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U16 Reserved4; /* 0Ch */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
} MSG_INBAND_RSP_REPLY, MPI_POINTER PTR_MSG_INBAND_RSP_REPLY,
MpiInbandRspReply_t, MPI_POINTER pMpiInbandRspReply_t;
/****************************************************************************/
/* Inband Abort Request */
/****************************************************************************/
typedef struct _MSG_INBAND_ABORT_REQUEST
{
U8 Reserved1; /* 00h */
U8 AbortType; /* 01h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U32 Reserved4; /* 0Ch */
U32 ContextToAbort; /* 10h */
} MSG_INBAND_ABORT_REQUEST, MPI_POINTER PTR_MSG_INBAND_ABORT_REQUEST,
MpiInbandAbortRequest_t , MPI_POINTER pMpiInbandAbortRequest_t;
#define MPI_INBAND_ABORT_TYPE_ALL_BUFFERS (0x00)
#define MPI_INBAND_ABORT_TYPE_EXACT_BUFFER (0x01)
#define MPI_INBAND_ABORT_TYPE_SEND_REQUEST (0x02)
#define MPI_INBAND_ABORT_TYPE_RESPONSE_REQUEST (0x03)
/* Inband Abort reply message */
typedef struct _MSG_INBAND_ABORT_REPLY
{
U8 Reserved1; /* 00h */
U8 AbortType; /* 01h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U16 Reserved4; /* 0Ch */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
} MSG_INBAND_ABORT_REPLY, MPI_POINTER PTR_MSG_INBAND_ABORT_REPLY,
MpiInbandAbortReply_t, MPI_POINTER pMpiInbandAbortReply_t;
#endif
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_INIT.H * Name: mpi_init.h
* Title: MPI initiator mode messages and structures * Title: MPI initiator mode messages and structures
* Creation Date: June 8, 2000 * Creation Date: June 8, 2000
* *
* MPI_INIT.H Version: 01.02.05 * mpi_init.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
* 10-04-01 01.02.04 Added defines for SEP request Action field. * 10-04-01 01.02.04 Added defines for SEP request Action field.
* 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define * 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define
* for SCSI IO requests. * for SCSI IO requests.
* 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP.
* 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -45,7 +47,7 @@ ...@@ -45,7 +47,7 @@
*****************************************************************************/ *****************************************************************************/
/****************************************************************************/ /****************************************************************************/
/* SCSI IO messages and assocaited structures */ /* SCSI IO messages and associated structures */
/****************************************************************************/ /****************************************************************************/
typedef struct _MSG_SCSI_IO_REQUEST typedef struct _MSG_SCSI_IO_REQUEST
...@@ -78,6 +80,16 @@ typedef struct _MSG_SCSI_IO_REQUEST ...@@ -78,6 +80,16 @@ typedef struct _MSG_SCSI_IO_REQUEST
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00) #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00)
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02) #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02)
#define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) #define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04)
#define MPI_SCSIIO_MSGFLGS_EEDP_TYPE_MASK (0xE0)
#define MPI_SCSIIO_MSGFLGS_EEDP_NONE (0x00)
#define MPI_SCSIIO_MSGFLGS_EEDP_RDPROTECT_T10 (0x20)
#define MPI_SCSIIO_MSGFLGS_EEDP_VRPROTECT_T10 (0x40)
#define MPI_SCSIIO_MSGFLGS_EEDP_WRPROTECT_T10 (0x60)
#define MPI_SCSIIO_MSGFLGS_EEDP_520_READ_MODE1 (0x20)
#define MPI_SCSIIO_MSGFLGS_EEDP_520_WRITE_MODE1 (0x40)
#define MPI_SCSIIO_MSGFLGS_EEDP_8_9_READ_MODE1 (0x60)
#define MPI_SCSIIO_MSGFLGS_EEDP_8_9_WRITE_MODE1 (0x80)
/* SCSI IO LUN fields */ /* SCSI IO LUN fields */
...@@ -153,6 +165,10 @@ typedef struct _MSG_SCSI_IO_REPLY ...@@ -153,6 +165,10 @@ typedef struct _MSG_SCSI_IO_REPLY
#define MPI_SCSI_STATUS_TASK_SET_FULL (0x28) #define MPI_SCSI_STATUS_TASK_SET_FULL (0x28)
#define MPI_SCSI_STATUS_ACA_ACTIVE (0x30) #define MPI_SCSI_STATUS_ACA_ACTIVE (0x30)
#define MPI_SCSI_STATUS_FCPEXT_DEVICE_LOGGED_OUT (0x80)
#define MPI_SCSI_STATUS_FCPEXT_NO_LINK (0x81)
#define MPI_SCSI_STATUS_FCPEXT_UNASSIGNED (0x82)
/* SCSI IO Reply SCSIState values */ /* SCSI IO Reply SCSIState values */
...@@ -175,6 +191,33 @@ typedef struct _MSG_SCSI_IO_REPLY ...@@ -175,6 +191,33 @@ typedef struct _MSG_SCSI_IO_REPLY
#define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000) #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000)
/****************************************************************************/
/* SCSI IO 32 Request message structure */
/****************************************************************************/
typedef struct _MSG_SCSI_IO32_REQUEST
{
U8 TargetID; /* 00h */
U8 Bus; /* 01h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U8 CDBLength; /* 04h */
U8 SenseBufferLength; /* 05h */
U8 Reserved; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U8 LUN[8]; /* 0Ch */
U32 Control; /* 14h */
U8 CDB[32]; /* 18h */
U32 DataLength; /* 38h */
U32 SenseBufferLowAddr; /* 3Ch */
SGE_IO_UNION SGL; /* 40h */
} MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST,
SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t;
/* SCSI IO 32 uses the same defines as above for SCSI IO */
/****************************************************************************/ /****************************************************************************/
/* SCSI Task Management messages */ /* SCSI Task Management messages */
/****************************************************************************/ /****************************************************************************/
...@@ -203,6 +246,7 @@ typedef struct _MSG_SCSI_TASK_MGMT ...@@ -203,6 +246,7 @@ typedef struct _MSG_SCSI_TASK_MGMT
#define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03) #define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
#define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04) #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04)
#define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
#define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
/* MsgFlags bits */ /* MsgFlags bits */
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00) #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
......
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_IOC.H * Name: mpi_ioc.h
* Title: MPI IOC, Port, Event, FW Download, and FW Upload messages * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
* Creation Date: August 11, 2000 * Creation Date: August 11, 2000
* *
* MPI_IOC.H Version: 01.02.06 * mpi_ioc.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
...@@ -55,6 +55,8 @@ ...@@ -55,6 +55,8 @@
* 05-31-02 01.02.06 Added define for * 05-31-02 01.02.06 Added define for
* MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID. * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID.
* Added AliasIndex to EVENT_DATA_LOGOUT structure. * Added AliasIndex to EVENT_DATA_LOGOUT structure.
* 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_.
* 06-26-03 01.02.08 Added new values to the product family defines.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -87,19 +89,21 @@ typedef struct _MSG_IOC_INIT ...@@ -87,19 +89,21 @@ typedef struct _MSG_IOC_INIT
U8 Reserved1[2]; /* 0Eh */ U8 Reserved1[2]; /* 0Eh */
U32 HostMfaHighAddr; /* 10h */ U32 HostMfaHighAddr; /* 10h */
U32 SenseBufferHighAddr; /* 14h */ U32 SenseBufferHighAddr; /* 14h */
U32 ReplyFifoHostSignalingAddr; /* 18h */
} MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT, } MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
IOCInit_t, MPI_POINTER pIOCInit_t; IOCInit_t, MPI_POINTER pIOCInit_t;
/* WhoInit values */ /* WhoInit values */
#define MPI_WHOINIT_NO_ONE (0x00) #define MPI_WHOINIT_NO_ONE (0x00)
#define MPI_WHOINIT_SYSTEM_BIOS (0x01) #define MPI_WHOINIT_SYSTEM_BIOS (0x01)
#define MPI_WHOINIT_ROM_BIOS (0x02) #define MPI_WHOINIT_ROM_BIOS (0x02)
#define MPI_WHOINIT_PCI_PEER (0x03) #define MPI_WHOINIT_PCI_PEER (0x03)
#define MPI_WHOINIT_HOST_DRIVER (0x04) #define MPI_WHOINIT_HOST_DRIVER (0x04)
#define MPI_WHOINIT_MANUFACTURER (0x05) #define MPI_WHOINIT_MANUFACTURER (0x05)
/* Flags values */ /* Flags values */
#define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01) #define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01)
#define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
typedef struct _MSG_IOC_INIT_REPLY typedef struct _MSG_IOC_INIT_REPLY
{ {
...@@ -179,8 +183,10 @@ typedef struct _MSG_IOC_FACTS_REPLY ...@@ -179,8 +183,10 @@ typedef struct _MSG_IOC_FACTS_REPLY
U8 MaxDevices; /* 2Eh */ U8 MaxDevices; /* 2Eh */
U8 MaxBuses; /* 2Fh */ U8 MaxBuses; /* 2Fh */
U32 FWImageSize; /* 30h */ U32 FWImageSize; /* 30h */
U32 Reserved4; /* 34h */ U32 IOCCapabilities; /* 34h */
MPI_FW_VERSION FWVersion; /* 38h */ MPI_FW_VERSION FWVersion; /* 38h */
U16 HighPriorityQueueDepth; /* 3Ch */
U16 Reserved2; /* 3Eh */
} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY, } MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t; IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
...@@ -192,12 +198,22 @@ typedef struct _MSG_IOC_FACTS_REPLY ...@@ -192,12 +198,22 @@ typedef struct _MSG_IOC_FACTS_REPLY
#define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001) #define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
#define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002) #define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
#define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
#define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008)
#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01) #define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01)
#define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00) #define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00)
#define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01) #define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01)
#define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001)
#define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002)
#define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004)
#define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
#define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
#define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
#define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040)
/***************************************************************************** /*****************************************************************************
...@@ -253,6 +269,8 @@ typedef struct _MSG_PORT_FACTS_REPLY ...@@ -253,6 +269,8 @@ typedef struct _MSG_PORT_FACTS_REPLY
#define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00) #define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00)
#define MPI_PORTFACTS_PORTTYPE_SCSI (0x01) #define MPI_PORTFACTS_PORTTYPE_SCSI (0x01)
#define MPI_PORTFACTS_PORTTYPE_FC (0x10) #define MPI_PORTFACTS_PORTTYPE_FC (0x10)
#define MPI_PORTFACTS_PORTTYPE_ISCSI (0x20)
#define MPI_PORTFACTS_PORTTYPE_SAS (0x30)
/* ProtocolFlags values */ /* ProtocolFlags values */
...@@ -386,6 +404,10 @@ typedef struct _MSG_EVENT_ACK_REPLY ...@@ -386,6 +404,10 @@ typedef struct _MSG_EVENT_ACK_REPLY
#define MPI_EVENT_INTEGRATED_RAID (0x0000000B) #define MPI_EVENT_INTEGRATED_RAID (0x0000000B)
#define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C) #define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
#define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D) #define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D)
#define MPI_EVENT_QUEUE_FULL (0x0000000E)
#define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
#define MPI_EVENT_SAS_SES (0x00000010)
#define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
/* AckRequired field values */ /* AckRequired field values */
...@@ -433,6 +455,39 @@ typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE ...@@ -433,6 +455,39 @@ typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE
#define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04) #define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04)
#define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05) #define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05)
/* SAS Device Status Change Event data */
typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
{
U8 TargetID; /* 00h */
U8 Bus; /* 01h */
U8 ReasonCode; /* 02h */
U8 Reserved; /* 03h */
U8 ASC; /* 04h */
U8 ASCQ; /* 05h */
U16 DevHandle; /* 06h */
U32 DeviceInfo; /* 08h */
} EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
MpiEventDataSasDeviceStatusChange_t,
MPI_POINTER pMpiEventDataSasDeviceStatusChange_t;
/* MPI SAS Device Status Change Event data ReasonCode values */
#define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03)
#define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
#define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
#define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
/* SCSI Event data for Queue Full event */
typedef struct _EVENT_DATA_QUEUE_FULL
{
U8 TargetID; /* 00h */
U8 Bus; /* 01h */
U16 CurrentDepth; /* 02h */
} EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL,
EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t;
/* MPI Link Status Change Event data */ /* MPI Link Status Change Event data */
typedef struct _EVENT_DATA_LINK_STATUS typedef struct _EVENT_DATA_LINK_STATUS
...@@ -538,6 +593,7 @@ typedef struct _MSG_FW_DOWNLOAD ...@@ -538,6 +593,7 @@ typedef struct _MSG_FW_DOWNLOAD
#define MPI_FW_DOWNLOAD_ITYPE_FW (0x01) #define MPI_FW_DOWNLOAD_ITYPE_FW (0x01)
#define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02) #define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02)
#define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03) #define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03)
#define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04)
typedef struct _FWDownloadTCSGE typedef struct _FWDownloadTCSGE
...@@ -590,6 +646,7 @@ typedef struct _MSG_FW_UPLOAD ...@@ -590,6 +646,7 @@ typedef struct _MSG_FW_UPLOAD
#define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01) #define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02) #define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
#define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03) #define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
#define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
typedef struct _FWUploadTCSGE typedef struct _FWUploadTCSGE
{ {
...@@ -653,6 +710,11 @@ typedef struct _MPI_FW_HEADER ...@@ -653,6 +710,11 @@ typedef struct _MPI_FW_HEADER
#define MPI_FW_HEADER_PID_TYPE_MASK (0xF000) #define MPI_FW_HEADER_PID_TYPE_MASK (0xF000)
#define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000) #define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000)
#define MPI_FW_HEADER_PID_TYPE_FC (0x1000) #define MPI_FW_HEADER_PID_TYPE_FC (0x1000)
#define MPI_FW_HEADER_PID_TYPE_SAS (0x2000)
#define MPI_FW_HEADER_SIGNATURE_0 (0x5AEAA55A)
#define MPI_FW_HEADER_SIGNATURE_1 (0xA55AEAA5)
#define MPI_FW_HEADER_SIGNATURE_2 (0x5AA55AEA)
#define MPI_FW_HEADER_PID_PROD_MASK (0x0F00) #define MPI_FW_HEADER_PID_PROD_MASK (0x0F00)
#define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100) #define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100)
...@@ -663,6 +725,7 @@ typedef struct _MPI_FW_HEADER ...@@ -663,6 +725,7 @@ typedef struct _MPI_FW_HEADER
#define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600) #define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600)
#define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF) #define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF)
/* SCSI */
#define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001) #define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001)
#define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002) #define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002)
#define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003) #define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003)
...@@ -673,9 +736,17 @@ typedef struct _MPI_FW_HEADER ...@@ -673,9 +736,17 @@ typedef struct _MPI_FW_HEADER
#define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008) #define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008)
#define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009) #define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009)
#define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A) #define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A)
#define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI (0x000B)
#define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C)
/* Fibre Channel */
#define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000) #define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000)
#define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001) #define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001)
#define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002) #define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002)
#define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003)
#define MPI_FW_HEADER_PID_FAMILY_949_FC (0x0004)
#define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005)
/* SAS */
#define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001)
typedef struct _MPI_EXT_IMAGE_HEADER typedef struct _MPI_EXT_IMAGE_HEADER
{ {
...@@ -694,5 +765,6 @@ typedef struct _MPI_EXT_IMAGE_HEADER ...@@ -694,5 +765,6 @@ typedef struct _MPI_EXT_IMAGE_HEADER
#define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00) #define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00)
#define MPI_EXT_IMAGE_TYPE_FW (0x01) #define MPI_EXT_IMAGE_TYPE_FW (0x01)
#define MPI_EXT_IMAGE_TYPE_NVDATA (0x03) #define MPI_EXT_IMAGE_TYPE_NVDATA (0x03)
#define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
#endif #endif
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_LAN.H * Name: mpi_lan.h
* Title: MPI LAN messages and structures * Title: MPI LAN messages and structures
* Creation Date: June 30, 2000 * Creation Date: June 30, 2000
* *
* MPI_LAN.H Version: 01.02.01 * mpi_lan.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
......
/* /*
* Copyright (c) 2001-2002 LSI Logic Corporation. * Copyright (c) 2001-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_RAID.H * Name: mpi_raid.h
* Title: MPI RAID message and structures * Title: MPI RAID message and structures
* Creation Date: February 27, 2001 * Creation Date: February 27, 2001
* *
* MPI_RAID.H Version: 01.02.07 * mpi_raid.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
* MPI_RAID_ACTION_INACTIVATE_VOLUME, and * MPI_RAID_ACTION_INACTIVATE_VOLUME, and
* MPI_RAID_ACTION_ADATA_INACTIVATE_ALL. * MPI_RAID_ACTION_ADATA_INACTIVATE_ALL.
* 07-12-02 01.02.07 Added structures for Mailbox request and reply. * 07-12-02 01.02.07 Added structures for Mailbox request and reply.
* 11-15-02 01.02.08 Added missing MsgContext field to MSG_MAILBOX_REQUEST.
* 04-01-03 01.02.09 New action data option flag for
* MPI_RAID_ACTION_DELETE_VOLUME.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -40,7 +43,7 @@ ...@@ -40,7 +43,7 @@
/****************************************************************************/ /****************************************************************************/
/* RAID Volume Request */ /* RAID Action Request */
/****************************************************************************/ /****************************************************************************/
typedef struct _MSG_RAID_ACTION typedef struct _MSG_RAID_ACTION
...@@ -90,6 +93,9 @@ typedef struct _MSG_RAID_ACTION ...@@ -90,6 +93,9 @@ typedef struct _MSG_RAID_ACTION
#define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS (0x00000000) #define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS (0x00000000)
#define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS (0x00000001) #define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS (0x00000001)
#define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
#define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002)
/* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */ /* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */
#define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001) #define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001)
...@@ -184,7 +190,7 @@ typedef struct _MSG_SCSI_IO_RAID_PT_REPLY ...@@ -184,7 +190,7 @@ typedef struct _MSG_SCSI_IO_RAID_PT_REPLY
/****************************************************************************/ /****************************************************************************/
/* Mailbox request structure */ /* Mailbox reqeust structure */
/****************************************************************************/ /****************************************************************************/
typedef struct _MSG_MAILBOX_REQUEST typedef struct _MSG_MAILBOX_REQUEST
...@@ -195,6 +201,7 @@ typedef struct _MSG_MAILBOX_REQUEST ...@@ -195,6 +201,7 @@ typedef struct _MSG_MAILBOX_REQUEST
U16 Reserved2; U16 Reserved2;
U8 Reserved3; U8 Reserved3;
U8 MsgFlags; U8 MsgFlags;
U32 MsgContext;
U8 Command[10]; U8 Command[10];
U16 Reserved4; U16 Reserved4;
SGE_IO_UNION SGL; SGE_IO_UNION SGL;
......
/*
* Copyright (c) 2003 LSI Logic Corporation.
*
*
* Name: mpi_sas.h
* Title: MPI Serial Attached SCSI structures and definitions
* Creation Date: April 23, 2003
*
* mpi_sas.h Version: 01.05.xx
*
* Version History
* ---------------
*
* Date Version Description
* -------- -------- ------------------------------------------------------
* xx-yy-zz 01.05.01 Original release.
* --------------------------------------------------------------------------
*/
#ifndef MPI_SAS_H
#define MPI_SAS_H
/*****************************************************************************
*
* S e r i a l A t t a c h e d S C S I M e s s a g e s
*
*****************************************************************************/
/****************************************************************************/
/* Serial Management Protocol Passthrough Request */
/****************************************************************************/
typedef struct _MSG_SMP_PASSTHROUGH_REQUEST
{
U8 PassthroughFlags; /* 00h */
U8 PhysicalPort; /* 01h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 RequestDataLength; /* 04h */
U8 ConnectionRate; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U32 Reserved1; /* 0Ch */
U64 SASAddress; /* 10h */
U32 Reserved2; /* 18h */
U32 Reserved3; /* 1Ch */
SGE_SIMPLE_UNION SGL; /* 20h */
} MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST,
SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t;
#define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
#define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
#define MPI_SMP_PT_REQ_CONNECT_RATE_1_5 (0x08)
#define MPI_SMP_PT_REQ_CONNECT_RATE_3_0 (0x09)
/* Serial Management Protocol Passthrough Reply */
typedef struct _MSG_SMP_PASSTHROUGH_REPLY
{
U8 PassthroughFlags; /* 00h */
U8 PhysicalPort; /* 01h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 ResponseDataLength; /* 04h */
U8 Reserved1; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U8 Reserved2; /* 0Ch */
U8 SASStatus; /* 0Dh */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
U32 Reserved3; /* 14h */
U8 ResponseData[4]; /* 18h */
} MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY,
SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t;
#define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
/* values for the SASStatus field */
#define MPI_SASSTATUS_SUCCESS (0x00)
#define MPI_SASSTATUS_UNKNOWN_ERROR (0x01)
#define MPI_SASSTATUS_INVALID_FRAME (0x02)
#define MPI_SASSTATUS_UTC_BAD_DEST (0x03)
#define MPI_SASSTATUS_UTC_BREAK_RECEIVED (0x04)
#define MPI_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05)
#define MPI_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06)
#define MPI_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07)
#define MPI_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08)
#define MPI_SASSTATUS_UTC_WRONG_DESTINATION (0x09)
#define MPI_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A)
#define MPI_SASSTATUS_LONG_INFORMATION_UNIT (0x0B)
#define MPI_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C)
#define MPI_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D)
#define MPI_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E)
#define MPI_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F)
#define MPI_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10)
#define MPI_SASSTATUS_DATA_OFFSET_ERROR (0x11)
#define MPI_SASSTATUS_SDSF_NAK_RECEIVED (0x12)
#define MPI_SASSTATUS_SDSF_CONNECTION_FAILED (0x13)
#define MPI_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14)
/*
* Values for the SAS DeviceInfo field used in SAS Device Status Change Event
* data and SAS IO Unit Configuration pages.
*/
#define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000)
#define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000)
#define MPI_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800)
#define MPI_SAS_DEVICE_INFO_SSP_TARGET (0x00000400)
#define MPI_SAS_DEVICE_INFO_STP_TARGET (0x00000200)
#define MPI_SAS_DEVICE_INFO_SMP_TARGET (0x00000100)
#define MPI_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080)
#define MPI_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040)
#define MPI_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020)
#define MPI_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010)
#define MPI_SAS_DEVICE_INFO_SATA_HOST (0x00000008)
#define MPI_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007)
#define MPI_SAS_DEVICE_INFO_NO_DEVICE (0x00000000)
#define MPI_SAS_DEVICE_INFO_END_DEVICE (0x00000001)
#define MPI_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002)
#define MPI_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003)
/****************************************************************************/
/* SAS IO Unit Control Request */
/****************************************************************************/
typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
{
U8 Operation; /* 00h */
U8 Reserved1; /* 01h */
U8 ChainOffset; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U8 TargetID; /* 0Ch */
U8 Bus; /* 0Dh */
U8 PhyNum; /* 0Eh */
U8 Reserved4; /* 0Fh */
U32 Reserved5; /* 10h */
U64 SASAddress; /* 14h */
U32 Reserved6; /* 1Ch */
} MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST,
SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t;
/* values for the ... field */
#define MPI_SAS_OP_CLEAR_NOT_PRESENT (0x01)
#define MPI_SAS_OP_CLEAR_ALL (0x02)
#define MPI_SAS_OP_MAP (0x03)
#define MPI_SAS_OP_MOVE (0x04)
#define MPI_SAS_OP_CLEAR (0x05)
#define MPI_SAS_OP_PHY_LINK_RESET (0x06)
#define MPI_SAS_OP_PHY_HARD_RESET (0x07)
#define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
/* SAS IO Unit Control Reply */
typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY
{
U8 Operation; /* 00h */
U8 Reserved1; /* 01h */
U8 MsgLength; /* 02h */
U8 Function; /* 03h */
U16 Reserved2; /* 04h */
U8 Reserved3; /* 06h */
U8 MsgFlags; /* 07h */
U32 MsgContext; /* 08h */
U16 Reserved4; /* 0Ch */
U16 IOCStatus; /* 0Eh */
U32 IOCLogInfo; /* 10h */
} MSG_SAS_IOUNIT_CONTROL_REPLY, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REPLY,
SasIoUnitControlReply_t, MPI_POINTER pSasIoUnitControlReply_t;
#endif
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_TARG.H * Name: mpi_targ.h
* Title: MPI Target mode messages and structures * Title: MPI Target mode messages and structures
* Creation Date: June 22, 2000 * Creation Date: June 22, 2000
* *
* MPI_TARG.H Version: 01.02.07 * mpi_targ.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
* Added AliasIndex field to MPI_TARGET_FCP_CMD_BUFFER. * Added AliasIndex field to MPI_TARGET_FCP_CMD_BUFFER.
* 09-16-02 01.02.07 Added flags for confirmed completion. * 09-16-02 01.02.07 Added flags for confirmed completion.
* Added PRIORITY_REASON_TARGET_BUSY. * Added PRIORITY_REASON_TARGET_BUSY.
* 11-15-02 01.02.08 Added AliasID field to MPI_TARGET_SCSI_SPI_CMD_BUFFER.
* 04-01-03 01.02.09 Added OptionalOxid field to MPI_TARGET_FCP_CMD_BUFFER.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -171,7 +173,7 @@ typedef struct _MPI_TARGET_FCP_CMD_BUFFER ...@@ -171,7 +173,7 @@ typedef struct _MPI_TARGET_FCP_CMD_BUFFER
U32 FcpDl; /* 1Ch */ U32 FcpDl; /* 1Ch */
U8 AliasIndex; /* 20h */ U8 AliasIndex; /* 20h */
U8 Reserved1; /* 21h */ U8 Reserved1; /* 21h */
U16 Reserved2; /* 22h */ U16 OptionalOxid; /* 22h */
} MPI_TARGET_FCP_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_FCP_CMD_BUFFER, } MPI_TARGET_FCP_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_FCP_CMD_BUFFER,
MpiTargetFcpCmdBuffer, MPI_POINTER pMpiTargetFcpCmdBuffer; MpiTargetFcpCmdBuffer, MPI_POINTER pMpiTargetFcpCmdBuffer;
...@@ -190,6 +192,10 @@ typedef struct _MPI_TARGET_SCSI_SPI_CMD_BUFFER ...@@ -190,6 +192,10 @@ typedef struct _MPI_TARGET_SCSI_SPI_CMD_BUFFER
U8 TaskManagementFlags; /* 12h */ U8 TaskManagementFlags; /* 12h */
U8 AdditionalCDBLength; /* 13h */ U8 AdditionalCDBLength; /* 13h */
U8 CDB[16]; /* 14h */ U8 CDB[16]; /* 14h */
/* Alias ID */
U8 AliasID; /* 24h */
U8 Reserved1; /* 25h */
U16 Reserved2; /* 26h */
} MPI_TARGET_SCSI_SPI_CMD_BUFFER, } MPI_TARGET_SCSI_SPI_CMD_BUFFER,
MPI_POINTER PTR_MPI_TARGET_SCSI_SPI_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_SCSI_SPI_CMD_BUFFER,
MpiTargetScsiSpiCmdBuffer, MPI_POINTER pMpiTargetScsiSpiCmdBuffer; MpiTargetScsiSpiCmdBuffer, MPI_POINTER pMpiTargetScsiSpiCmdBuffer;
......
This diff is collapsed.
/* /*
* Copyright (c) 2000-2002 LSI Logic Corporation. * Copyright (c) 2000-2003 LSI Logic Corporation.
* *
* *
* Name: MPI_TYPE.H * Name: mpi_type.h
* Title: MPI Basic type definitions * Title: MPI Basic type definitions
* Creation Date: June 6, 2000 * Creation Date: June 6, 2000
* *
* MPI Version: 01.02.01 * mpi_type.h Version: 01.05.xx
* *
* Version History * Version History
* --------------- * ---------------
......
This diff is collapsed.
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Credits: * Credits:
* (see mptbase.c) * (see mptbase.c)
* *
* Copyright (c) 1999-2003 LSI Logic Corporation * Copyright (c) 1999-2004 LSI Logic Corporation
* Originally By: Steven J. Ralston * Originally By: Steven J. Ralston
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:mpt_linux_developer@lsil.com) * (mailto:mpt_linux_developer@lsil.com)
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
#include "lsi/mpi_fc.h" /* Fibre Channel (lowlevel) support */ #include "lsi/mpi_fc.h" /* Fibre Channel (lowlevel) support */
#include "lsi/mpi_targ.h" /* SCSI/FCP Target protcol support */ #include "lsi/mpi_targ.h" /* SCSI/FCP Target protcol support */
#include "lsi/mpi_tool.h" /* Tools support */
#include "lsi/fc_log.h" #include "lsi/fc_log.h"
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
...@@ -77,11 +78,11 @@ ...@@ -77,11 +78,11 @@
#endif #endif
#ifndef COPYRIGHT #ifndef COPYRIGHT
#define COPYRIGHT "Copyright (c) 1999-2003 " MODULEAUTHOR #define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR
#endif #endif
#define MPT_LINUX_VERSION_COMMON "3.00.03" #define MPT_LINUX_VERSION_COMMON "3.01.00"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.00.03" #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.00"
#define WHAT_MAGIC_STRING "@" "(" "#" ")" #define WHAT_MAGIC_STRING "@" "(" "#" ")"
#define show_mptmod_ver(s,ver) \ #define show_mptmod_ver(s,ver) \
...@@ -93,10 +94,10 @@ ...@@ -93,10 +94,10 @@
*/ */
#define MPT_MAX_ADAPTERS 18 #define MPT_MAX_ADAPTERS 18
#define MPT_MAX_PROTOCOL_DRIVERS 16 #define MPT_MAX_PROTOCOL_DRIVERS 16
#define MPT_MAX_BUS 1 #define MPT_MAX_BUS 1 /* Do not change */
#define MPT_MAX_FC_DEVICES 255 #define MPT_MAX_FC_DEVICES 255
#define MPT_MAX_SCSI_DEVICES 16 #define MPT_MAX_SCSI_DEVICES 16
#define MPT_LAST_LUN 31 #define MPT_LAST_LUN 255
#define MPT_SENSE_BUFFER_ALLOC 64 #define MPT_SENSE_BUFFER_ALLOC 64
/* allow for 256 max sense alloc, but only 255 max request */ /* allow for 256 max sense alloc, but only 255 max request */
#if MPT_SENSE_BUFFER_ALLOC >= 256 #if MPT_SENSE_BUFFER_ALLOC >= 256
...@@ -127,6 +128,8 @@ ...@@ -127,6 +128,8 @@
#define MPT_MAX_FRAME_SIZE 128 #define MPT_MAX_FRAME_SIZE 128
#define MPT_DEFAULT_FRAME_SIZE 128 #define MPT_DEFAULT_FRAME_SIZE 128
#define MPT_REPLY_FRAME_SIZE 0x40 /* Must be a multiple of 8 */
#define MPT_SG_REQ_128_SCALE 1 #define MPT_SG_REQ_128_SCALE 1
#define MPT_SG_REQ_96_SCALE 2 #define MPT_SG_REQ_96_SCALE 2
#define MPT_SG_REQ_64_SCALE 4 #define MPT_SG_REQ_64_SCALE 4
...@@ -150,6 +153,9 @@ ...@@ -150,6 +153,9 @@
#define MPT_NARROW 0 #define MPT_NARROW 0
#define MPT_WIDE 1 #define MPT_WIDE 1
#define C0_1030 0x08
#define XL_929 0x01
#ifdef __KERNEL__ /* { */ #ifdef __KERNEL__ /* { */
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
...@@ -185,8 +191,8 @@ struct mpt_pci_driver{ ...@@ -185,8 +191,8 @@ struct mpt_pci_driver{
void (*remove) (struct pci_dev *dev); void (*remove) (struct pci_dev *dev);
void (*shutdown) (struct device * dev); void (*shutdown) (struct device * dev);
#ifdef CONFIG_PM #ifdef CONFIG_PM
int (*suspend) (struct pci_dev *dev, u32 state);
int (*resume) (struct pci_dev *dev); int (*resume) (struct pci_dev *dev);
int (*suspend) (struct pci_dev *dev, u32 state);
#endif #endif
}; };
...@@ -201,9 +207,6 @@ typedef union _MPT_FRAME_TRACKER { ...@@ -201,9 +207,6 @@ typedef union _MPT_FRAME_TRACKER {
u32 arg1; u32 arg1;
u32 pad; u32 pad;
void *argp1; void *argp1;
#ifndef MPT_SCSI_USE_NEW_EH
void *argp2;
#endif
} linkage; } linkage;
/* /*
* NOTE: When request frames are free, on the linkage structure * NOTE: When request frames are free, on the linkage structure
...@@ -255,6 +258,7 @@ typedef struct _MPT_FRAME_HDR { ...@@ -255,6 +258,7 @@ typedef struct _MPT_FRAME_HDR {
MPIHeader_t hdr; MPIHeader_t hdr;
SCSIIORequest_t scsireq; SCSIIORequest_t scsireq;
SCSIIOReply_t sreply; SCSIIOReply_t sreply;
ConfigReply_t configreply;
MPIDefaultReply_t reply; MPIDefaultReply_t reply;
MPT_FRAME_TRACKER frame; MPT_FRAME_TRACKER frame;
} u; } u;
...@@ -408,12 +412,9 @@ typedef struct _VirtDevice { ...@@ -408,12 +412,9 @@ typedef struct _VirtDevice {
ScsiCmndTracker SentQ; ScsiCmndTracker SentQ;
ScsiCmndTracker DoneQ; ScsiCmndTracker DoneQ;
u32 num_luns; u32 num_luns;
//--- LUN split here? u32 luns[8]; /* Max LUNs is 256 */
u32 luns; /* Max LUNs is 32 */ u8 pad[4];
u8 inq_data[SCSI_STD_INQUIRY_BYTES]; /* 36 */ u8 inq_data[8];
u8 pad0[4];
u8 inq00_data[20];
u8 pad1[4];
/* IEEE Registered Extended Identifier /* IEEE Registered Extended Identifier
obtained via INQUIRY VPD page 0x83 */ obtained via INQUIRY VPD page 0x83 */
/* NOTE: Do not separate uniq_prepad and uniq_data /* NOTE: Do not separate uniq_prepad and uniq_data
...@@ -421,26 +422,17 @@ typedef struct _VirtDevice { ...@@ -421,26 +422,17 @@ typedef struct _VirtDevice {
u8 uniq_prepad[8]; u8 uniq_prepad[8];
u8 uniq_data[20]; u8 uniq_data[20];
u8 pad2[4]; u8 pad2[4];
u8 inqC3_data[12];
u8 pad3[4];
u8 inqC9_data[12];
u8 pad4[4];
u8 dev_vol_name[64];
} VirtDevice; } VirtDevice;
/* /*
* Fibre Channel (SCSI) target device and associated defines... * Fibre Channel (SCSI) target device and associated defines...
*/ */
#define MPT_TARGET_DEFAULT_DV_STATUS 0 #define MPT_TARGET_DEFAULT_DV_STATUS 0x00
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,55)
#define MPT_TARGET_FLAGS_CONFIGURED 0x02
#define MPT_TARGET_FLAGS_Q_YES 0x08
#else
#define MPT_TARGET_FLAGS_VALID_NEGO 0x01 #define MPT_TARGET_FLAGS_VALID_NEGO 0x01
#define MPT_TARGET_FLAGS_VALID_INQUIRY 0x02 #define MPT_TARGET_FLAGS_VALID_INQUIRY 0x02
#define MPT_TARGET_FLAGS_Q_YES 0x08 #define MPT_TARGET_FLAGS_Q_YES 0x08
#define MPT_TARGET_FLAGS_VALID_56 0x10 #define MPT_TARGET_FLAGS_VALID_56 0x10
#endif #define MPT_TARGET_FLAGS_SAF_TE_ISSUED 0x20
#define MPT_TARGET_NO_NEGO_WIDE 0x01 #define MPT_TARGET_NO_NEGO_WIDE 0x01
#define MPT_TARGET_NO_NEGO_SYNC 0x02 #define MPT_TARGET_NO_NEGO_SYNC 0x02
...@@ -539,8 +531,13 @@ typedef struct _mpt_ioctl_events { ...@@ -539,8 +531,13 @@ typedef struct _mpt_ioctl_events {
/* #define MPT_SCSICFG_BLK_NEGO 0x10 WriteSDP1 with WDTR and SDTR disabled */ /* #define MPT_SCSICFG_BLK_NEGO 0x10 WriteSDP1 with WDTR and SDTR disabled */
typedef struct _ScsiCfgData { typedef struct _ScsiCfgData {
u32 PortFlags;
int *nvram; /* table of device NVRAM values */ int *nvram; /* table of device NVRAM values */
IOCPage2_t *pIocPg2; /* table of Raid Volumes */
IOCPage3_t *pIocPg3; /* table of physical disks */ IOCPage3_t *pIocPg3; /* table of physical disks */
IOCPage4_t *pIocPg4; /* SEP devices addressing */
dma_addr_t IocPg4_dma; /* Phys Addr of IOCPage4 data */
int IocPg4Sz; /* IOCPage4 size */
u8 dvStatus[MPT_MAX_SCSI_DEVICES]; u8 dvStatus[MPT_MAX_SCSI_DEVICES];
int isRaid; /* bit field, 1 if RAID */ int isRaid; /* bit field, 1 if RAID */
u8 minSyncFactor; /* 0xFF if async */ u8 minSyncFactor; /* 0xFF if async */
...@@ -554,7 +551,8 @@ typedef struct _ScsiCfgData { ...@@ -554,7 +551,8 @@ typedef struct _ScsiCfgData {
u8 dvScheduled; /* 1 if scheduled */ u8 dvScheduled; /* 1 if scheduled */
u8 forceDv; /* 1 to force DV scheduling */ u8 forceDv; /* 1 to force DV scheduling */
u8 noQas; /* Disable QAS for this adapter */ u8 noQas; /* Disable QAS for this adapter */
u8 rsvd[2]; u8 Saf_Te; /* 1 to force all Processors as SAF-TE if Inquiry data length is too short to check for SAF-TE */
u8 rsvd[1];
} ScsiCfgData; } ScsiCfgData;
typedef struct _fw_image { typedef struct _fw_image {
...@@ -610,6 +608,9 @@ typedef struct _MPT_ADAPTER ...@@ -610,6 +608,9 @@ typedef struct _MPT_ADAPTER
u32 sense_buf_low_dma; u32 sense_buf_low_dma;
int mtrr_reg; int mtrr_reg;
struct pci_dev *pcidev; /* struct pci_dev pointer */ struct pci_dev *pcidev; /* struct pci_dev pointer */
#if defined(MPTBASE_MEM_ALLOC_FIFO_FIX)
struct pci_dev pcidev32; /* struct pci_dev pointer */
#endif
u8 *memmap; /* mmap address */ u8 *memmap; /* mmap address */
struct Scsi_Host *sh; /* Scsi Host pointer */ struct Scsi_Host *sh; /* Scsi Host pointer */
ScsiCfgData spi_data; /* Scsi config. data */ ScsiCfgData spi_data; /* Scsi config. data */
...@@ -622,6 +623,12 @@ typedef struct _MPT_ADAPTER ...@@ -622,6 +623,12 @@ typedef struct _MPT_ADAPTER
int eventTypes; /* Event logging parameters */ int eventTypes; /* Event logging parameters */
int eventContext; /* Next event context */ int eventContext; /* Next event context */
int eventLogSize; /* Max number of cached events */ int eventLogSize; /* Max number of cached events */
#ifdef MPTSCSIH_DBG_TIMEOUT
int timeout_hard;
int timeout_delta;
int timeout_cnt;
int timeout_maxcnt;
#endif
struct _mpt_ioctl_events *events; /* pointer to event log */ struct _mpt_ioctl_events *events; /* pointer to event log */
fw_image_t **cached_fw; /* Pointer to FW SG List */ fw_image_t **cached_fw; /* Pointer to FW SG List */
Q_TRACKER configQ; /* linked list of config. requests */ Q_TRACKER configQ; /* linked list of config. requests */
...@@ -665,6 +672,7 @@ typedef int (*MPT_RESETHANDLER)(MPT_ADAPTER *ioc, int reset_phase); ...@@ -665,6 +672,7 @@ typedef int (*MPT_RESETHANDLER)(MPT_ADAPTER *ioc, int reset_phase);
/* reset_phase defs */ /* reset_phase defs */
#define MPT_IOC_PRE_RESET 0 #define MPT_IOC_PRE_RESET 0
#define MPT_IOC_POST_RESET 1 #define MPT_IOC_POST_RESET 1
#define MPT_IOC_SETUP_RESET 2
/* /*
* Invent MPT host event (super-set of MPI Events) * Invent MPT host event (super-set of MPI Events)
...@@ -880,14 +888,12 @@ typedef struct _MPT_LOCAL_REPLY { ...@@ -880,14 +888,12 @@ typedef struct _MPT_LOCAL_REPLY {
#define MPT_NVRAM_WIDE_DISABLE (0x00100000) #define MPT_NVRAM_WIDE_DISABLE (0x00100000)
#define MPT_NVRAM_BOOT_CHOICE (0x00200000) #define MPT_NVRAM_BOOT_CHOICE (0x00200000)
#ifdef MPT_SCSI_USE_NEW_EH
/* The TM_STATE variable is used to provide strict single threading of TM /* The TM_STATE variable is used to provide strict single threading of TM
* requests as well as communicate TM error conditions. * requests as well as communicate TM error conditions.
*/ */
#define TM_STATE_NONE (0) #define TM_STATE_NONE (0)
#define TM_STATE_IN_PROGRESS (1) #define TM_STATE_IN_PROGRESS (1)
#define TM_STATE_ERROR (2) #define TM_STATE_ERROR (2)
#endif
typedef struct _MPT_SCSI_HOST { typedef struct _MPT_SCSI_HOST {
MPT_ADAPTER *ioc; MPT_ADAPTER *ioc;
...@@ -928,12 +934,8 @@ typedef struct _MPT_SCSI_HOST { ...@@ -928,12 +934,8 @@ typedef struct _MPT_SCSI_HOST {
u8 is_spi; /* Parallel SCSI i/f */ u8 is_spi; /* Parallel SCSI i/f */
u8 negoNvram; /* DV disabled, nego NVRAM */ u8 negoNvram; /* DV disabled, nego NVRAM */
u8 is_multipath; /* Multi-path compatible */ u8 is_multipath; /* Multi-path compatible */
#ifdef MPT_SCSI_USE_NEW_EH
u8 tmState; u8 tmState;
u8 rsvd[1]; u8 rsvd[1];
#else
u8 rsvd[2];
#endif
MPT_FRAME_HDR *tmPtr; /* Ptr to TM request*/ MPT_FRAME_HDR *tmPtr; /* Ptr to TM request*/
MPT_FRAME_HDR *cmdPtr; /* Ptr to nonOS request */ MPT_FRAME_HDR *cmdPtr; /* Ptr to nonOS request */
struct scsi_cmnd *abortSCpnt; struct scsi_cmnd *abortSCpnt;
...@@ -1033,8 +1035,10 @@ extern u32 mpt_GetIocState(MPT_ADAPTER *ioc, int cooked); ...@@ -1033,8 +1035,10 @@ extern u32 mpt_GetIocState(MPT_ADAPTER *ioc, int cooked);
extern void mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buf, int *size, int len, int showlan); extern void mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buf, int *size, int len, int showlan);
extern int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag); extern int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag);
extern int mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *cfg); extern int mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *cfg);
extern int mpt_toolbox(MPT_ADAPTER *ioc, CONFIGPARMS *cfg);
extern void *mpt_alloc_fw_memory(MPT_ADAPTER *ioc, int size, int *frags, int *alloc_sz); extern void *mpt_alloc_fw_memory(MPT_ADAPTER *ioc, int size, int *frags, int *alloc_sz);
extern void mpt_free_fw_memory(MPT_ADAPTER *ioc, fw_image_t **alt_img); extern void mpt_free_fw_memory(MPT_ADAPTER *ioc, fw_image_t **alt_img);
extern int mpt_findImVolumes(MPT_ADAPTER *ioc);
extern int mpt_read_ioc_pg_3(MPT_ADAPTER *ioc); extern int mpt_read_ioc_pg_3(MPT_ADAPTER *ioc);
/* /*
......
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* *
* (see also mptbase.c) * (see also mptbase.c)
* *
* Copyright (c) 1999-2003 LSI Logic Corporation * Copyright (c) 1999-2004 LSI Logic Corporation
* Originally By: Steven J. Ralston * Originally By: Steven J. Ralston
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:mpt_linux_developer@lsil.com) * (mailto:mpt_linux_developer@lsil.com)
...@@ -342,6 +342,7 @@ struct mpt_ioctl_command32 { ...@@ -342,6 +342,7 @@ struct mpt_ioctl_command32 {
#define CPQFCTS_IOC_MAGIC 'Z' #define CPQFCTS_IOC_MAGIC 'Z'
#define HP_IOC_MAGIC 'Z' #define HP_IOC_MAGIC 'Z'
#define HP_GETHOSTINFO _IOR(HP_IOC_MAGIC, 20, hp_host_info_t) #define HP_GETHOSTINFO _IOR(HP_IOC_MAGIC, 20, hp_host_info_t)
#define HP_GETHOSTINFO1 _IOR(HP_IOC_MAGIC, 20, hp_host_info_rev0_t)
#define HP_GETTARGETINFO _IOR(HP_IOC_MAGIC, 21, hp_target_info_t) #define HP_GETTARGETINFO _IOR(HP_IOC_MAGIC, 21, hp_target_info_t)
/* All HP IOCTLs must include this header /* All HP IOCTLs must include this header
...@@ -357,7 +358,7 @@ typedef struct _hp_header { ...@@ -357,7 +358,7 @@ typedef struct _hp_header {
/* /*
* Header: * Header:
* iocnum required (input) * iocnum required (input)
* host ignored * host ignored
* channe ignored * channe ignored
* id ignored * id ignored
* lun ignored * lun ignored
...@@ -371,9 +372,9 @@ typedef struct _hp_host_info { ...@@ -371,9 +372,9 @@ typedef struct _hp_host_info {
u8 devfn; u8 devfn;
u8 bus; u8 bus;
ushort host_no; /* SCSI Host number, if scsi driver not loaded*/ ushort host_no; /* SCSI Host number, if scsi driver not loaded*/
u8 fw_version[16]; /* string */ u8 fw_version[16]; /* string */
u8 serial_number[24]; /* string */ u8 serial_number[24]; /* string */
u32 ioc_status; u32 ioc_status;
u32 bus_phys_width; u32 bus_phys_width;
u32 base_io_addr; u32 base_io_addr;
u32 rsvd; u32 rsvd;
...@@ -382,10 +383,33 @@ typedef struct _hp_host_info { ...@@ -382,10 +383,33 @@ typedef struct _hp_host_info {
unsigned int timeouts; /* num timeouts */ unsigned int timeouts; /* num timeouts */
} hp_host_info_t; } hp_host_info_t;
/* replace ulongs with uints, need to preserve backwards
* compatibility.
*/
typedef struct _hp_host_info_rev0 {
hp_header_t hdr;
u16 vendor;
u16 device;
u16 subsystem_vendor;
u16 subsystem_id;
u8 devfn;
u8 bus;
ushort host_no; /* SCSI Host number, if scsi driver not loaded*/
u8 fw_version[16]; /* string */
u8 serial_number[24]; /* string */
u32 ioc_status;
u32 bus_phys_width;
u32 base_io_addr;
u32 rsvd;
unsigned long hard_resets; /* driver initiated resets */
unsigned long soft_resets; /* ioc, external resets */
unsigned long timeouts; /* num timeouts */
} hp_host_info_rev0_t;
/* /*
* Header: * Header:
* iocnum required (input) * iocnum required (input)
* host required * host required
* channel required (bus number) * channel required (bus number)
* id required * id required
* lun ignored * lun ignored
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
* *
* (see also mptbase.c) * (see also mptbase.c)
* *
* Copyright (c) 2000-2003 LSI Logic Corporation * Copyright (c) 2000-2004 LSI Logic Corporation
* Originally By: Noah Romer * Originally By: Noah Romer
* (mailto:mpt_linux_developer@lsil.com) * (mailto:mpt_linux_developer@lsil.com)
* *
...@@ -340,12 +340,15 @@ mpt_lan_ioc_reset(MPT_ADAPTER *ioc, int reset_phase) ...@@ -340,12 +340,15 @@ mpt_lan_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
struct mpt_lan_priv *priv = (struct mpt_lan_priv *) dev->priv; struct mpt_lan_priv *priv = (struct mpt_lan_priv *) dev->priv;
dlprintk((KERN_INFO MYNAM ": IOC %s_reset routed to LAN driver!\n", dlprintk((KERN_INFO MYNAM ": IOC %s_reset routed to LAN driver!\n",
reset_phase==MPT_IOC_PRE_RESET ? "pre" : "post")); reset_phase==MPT_IOC_SETUP_RESET ? "setup" : (
reset_phase==MPT_IOC_PRE_RESET ? "pre" : "post")));
if (priv->mpt_rxfidx == NULL) if (priv->mpt_rxfidx == NULL)
return (1); return (1);
if (reset_phase == MPT_IOC_PRE_RESET) { if (reset_phase == MPT_IOC_SETUP_RESET) {
;
} else if (reset_phase == MPT_IOC_PRE_RESET) {
int i; int i;
unsigned long flags; unsigned long flags;
......
This diff is collapsed.
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
* *
* (see also mptbase.c) * (see also mptbase.c)
* *
* Copyright (c) 1999-2003 LSI Logic Corporation * Copyright (c) 1999-2004 LSI Logic Corporation
* Originally By: Steven J. Ralston * Originally By: Steven J. Ralston
* (mailto:netscape.net) * (mailto:netscape.net)
* (mailto:mpt_linux_developer@lsil.com) * (mailto:mpt_linux_developer@lsil.com)
...@@ -70,11 +70,7 @@ ...@@ -70,11 +70,7 @@
* Try to keep these at 2^N-1 * Try to keep these at 2^N-1
*/ */
#define MPT_FC_CAN_QUEUE 127 #define MPT_FC_CAN_QUEUE 127
#if defined MPT_SCSI_USE_NEW_EH #define MPT_SCSI_CAN_QUEUE 127
#define MPT_SCSI_CAN_QUEUE 127
#else
#define MPT_SCSI_CAN_QUEUE 63
#endif
#define MPT_SCSI_CMD_PER_DEV_HIGH 31 #define MPT_SCSI_CMD_PER_DEV_HIGH 31
#define MPT_SCSI_CMD_PER_DEV_LOW 7 #define MPT_SCSI_CMD_PER_DEV_LOW 7
...@@ -98,7 +94,7 @@ ...@@ -98,7 +94,7 @@
#define MPT_SCSI_SG_DEPTH 40 #define MPT_SCSI_SG_DEPTH 40
#endif #endif
/* To disable domain validation, comment the /* To disable domain validation, uncomment the
* following line. No effect for FC devices. * following line. No effect for FC devices.
* For SCSI devices, driver will negotiate to * For SCSI devices, driver will negotiate to
* NVRAM settings (if available) or to maximum adapter * NVRAM settings (if available) or to maximum adapter
...@@ -114,12 +110,14 @@ ...@@ -114,12 +110,14 @@
#define MPTSCSIH_DOMAIN_VALIDATION 1 #define MPTSCSIH_DOMAIN_VALIDATION 1
#define MPTSCSIH_MAX_WIDTH 1 #define MPTSCSIH_MAX_WIDTH 1
#define MPTSCSIH_MIN_SYNC 0x08 #define MPTSCSIH_MIN_SYNC 0x08
#define MPTSCSIH_SAF_TE 0
struct mptscsih_driver_setup struct mptscsih_driver_setup
{ {
u8 dv; u8 dv;
u8 max_width; u8 max_width;
u8 min_sync_fac; u8 min_sync_fac;
u8 saf_te;
}; };
...@@ -128,6 +126,7 @@ struct mptscsih_driver_setup ...@@ -128,6 +126,7 @@ struct mptscsih_driver_setup
MPTSCSIH_DOMAIN_VALIDATION, \ MPTSCSIH_DOMAIN_VALIDATION, \
MPTSCSIH_MAX_WIDTH, \ MPTSCSIH_MAX_WIDTH, \
MPTSCSIH_MIN_SYNC, \ MPTSCSIH_MIN_SYNC, \
MPTSCSIH_SAF_TE, \
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* (Ultimately) SCSI-3 definitions; for now, inheriting * (Ultimately) SCSI-3 definitions; for now, inheriting
* SCSI-2 definitions. * SCSI-2 definitions.
* *
* Copyright (c) 1996-2003 Steven J. Ralston * Copyright (c) 1996-2004 Steven J. Ralston
* Written By: Steven J. Ralston (19960517) * Written By: Steven J. Ralston (19960517)
* (mailto:sjralston1@netscape.net) * (mailto:sjralston1@netscape.net)
* (mailto:mpt_linux_developer@lsil.com) * (mailto:mpt_linux_developer@lsil.com)
......
This diff is collapsed.
...@@ -99,18 +99,8 @@ struct NCR_700_SG_List { ...@@ -99,18 +99,8 @@ struct NCR_700_SG_List {
#define NCR_700_DEV_NEGOTIATED_SYNC (1<<16) #define NCR_700_DEV_NEGOTIATED_SYNC (1<<16)
#define NCR_700_DEV_BEGIN_SYNC_NEGOTIATION (1<<17) #define NCR_700_DEV_BEGIN_SYNC_NEGOTIATION (1<<17)
#define NCR_700_DEV_BEGIN_TAG_QUEUEING (1<<18) #define NCR_700_DEV_BEGIN_TAG_QUEUEING (1<<18)
#define NCR_700_DEV_TAG_STARVATION_WARNED (1<<19) #define NCR_700_DEV_PRINT_SYNC_NEGOTIATION (1<<19)
static inline void
NCR_700_set_SXFER(Scsi_Device *SDp, __u8 sxfer)
{
SDp->hostdata = (void *)(((long)SDp->hostdata & 0xffffff00) |
(sxfer & 0xff));
}
static inline __u8 NCR_700_get_SXFER(Scsi_Device *SDp)
{
return (((unsigned long)SDp->hostdata) & 0xff);
}
static inline void static inline void
NCR_700_set_depth(Scsi_Device *SDp, __u8 depth) NCR_700_set_depth(Scsi_Device *SDp, __u8 depth)
{ {
...@@ -215,6 +205,7 @@ struct NCR_700_Host_Parameters { ...@@ -215,6 +205,7 @@ struct NCR_700_Host_Parameters {
__u8 tag_negotiated; __u8 tag_negotiated;
__u8 rev; __u8 rev;
__u8 reselection_id; __u8 reselection_id;
__u8 min_period;
/* Free list, singly linked by ITL_forw elements */ /* Free list, singly linked by ITL_forw elements */
struct NCR_700_command_slot *free_list; struct NCR_700_command_slot *free_list;
...@@ -439,6 +430,7 @@ struct NCR_700_Host_Parameters { ...@@ -439,6 +430,7 @@ struct NCR_700_Host_Parameters {
} \ } \
} }
static inline __u8 static inline __u8
NCR_700_mem_readb(struct Scsi_Host *host, __u32 reg) NCR_700_mem_readb(struct Scsi_Host *host, __u32 reg)
{ {
......
...@@ -140,7 +140,7 @@ static char *BusLogic_CommandFailureReason; ...@@ -140,7 +140,7 @@ static char *BusLogic_CommandFailureReason;
Name, Copyright Notice, and Electronic Mail Address. Name, Copyright Notice, and Electronic Mail Address.
*/ */
static void __init BusLogic_AnnounceDriver(struct BusLogic_HostAdapter *HostAdapter) static void BusLogic_AnnounceDriver(struct BusLogic_HostAdapter *HostAdapter)
{ {
BusLogic_Announce("***** BusLogic SCSI Driver Version " BusLogic_Announce("***** BusLogic SCSI Driver Version "
BusLogic_DriverVersion " of " BusLogic_DriverVersion " of "
......
...@@ -196,6 +196,25 @@ config SCSI_LOGGING ...@@ -196,6 +196,25 @@ config SCSI_LOGGING
there should be no noticeable performance impact as long as you have there should be no noticeable performance impact as long as you have
logging turned off. logging turned off.
menu "SCSI Transport Attributes"
depends on SCSI
config SCSI_SPI_ATTRS
tristate "Parallel SCSI (SPI) Transport Attributes"
depends on SCSI
help
If you wish to export transport-specific information about
each attached SCSI device to sysfs, say Y. Otherwise, say N.
config SCSI_FC_ATTRS
tristate "FiberChannel Transport Attributes"
depends on SCSI
help
If you wish to export transport-specific information about
each attached FiberChannel device to sysfs, say Y.
Otherwise, say N.
endmenu
menu "SCSI low-level drivers" menu "SCSI low-level drivers"
depends on SCSI!=n depends on SCSI!=n
...@@ -845,6 +864,7 @@ config SCSI_NCR53C406A ...@@ -845,6 +864,7 @@ config SCSI_NCR53C406A
config SCSI_NCR_D700 config SCSI_NCR_D700
tristate "NCR Dual 700 MCA SCSI support" tristate "NCR Dual 700 MCA SCSI support"
depends on MCA && SCSI depends on MCA && SCSI
select SCSI_SPI_ATTRS
help help
This is a driver for the MicroChannel Dual 700 card produced by This is a driver for the MicroChannel Dual 700 card produced by
NCR and commonly used in 345x/35xx/4100 class machines. It always NCR and commonly used in 345x/35xx/4100 class machines. It always
...@@ -861,6 +881,7 @@ config 53C700_IO_MAPPED ...@@ -861,6 +881,7 @@ config 53C700_IO_MAPPED
config SCSI_LASI700 config SCSI_LASI700
tristate "HP Lasi SCSI support for 53c700/710" tristate "HP Lasi SCSI support for 53c700/710"
depends on GSC && SCSI depends on GSC && SCSI
select SCSI_SPI_ATTRS
help help
This is a driver for the SCSI controller in the Lasi chip found in This is a driver for the SCSI controller in the Lasi chip found in
many PA-RISC workstations & servers. If you do not know whether you many PA-RISC workstations & servers. If you do not know whether you
...@@ -1212,6 +1233,7 @@ config SCSI_SEAGATE ...@@ -1212,6 +1233,7 @@ config SCSI_SEAGATE
config SCSI_SIM710 config SCSI_SIM710
tristate "Simple 53c710 SCSI support (Compaq, NCR machines)" tristate "Simple 53c710 SCSI support (Compaq, NCR machines)"
depends on (EISA || MCA) && SCSI depends on (EISA || MCA) && SCSI
select SCSI_SPI_ATTRS
---help--- ---help---
This driver for NCR53c710 based SCSI host adapters. This driver for NCR53c710 based SCSI host adapters.
......
...@@ -22,6 +22,14 @@ subdir-$(CONFIG_PCMCIA) += pcmcia ...@@ -22,6 +22,14 @@ subdir-$(CONFIG_PCMCIA) += pcmcia
obj-$(CONFIG_SCSI) += scsi_mod.o obj-$(CONFIG_SCSI) += scsi_mod.o
# --- NOTE ORDERING HERE ---
# For kernel non-modular link, transport attributes need to
# be initialised before drivers
# --------------------------
obj-$(CONFIG_SCSI_SPI_ATTRS) += scsi_transport_spi.o
obj-$(CONFIG_SCSI_FC_ATTRS) += scsi_transport_fc.o
obj-$(CONFIG_SCSI_AMIGA7XX) += amiga7xx.o 53c7xx.o obj-$(CONFIG_SCSI_AMIGA7XX) += amiga7xx.o 53c7xx.o
obj-$(CONFIG_A3000_SCSI) += a3000.o wd33c93.o obj-$(CONFIG_A3000_SCSI) += a3000.o wd33c93.o
obj-$(CONFIG_A2091_SCSI) += a2091.o wd33c93.o obj-$(CONFIG_A2091_SCSI) += a2091.o wd33c93.o
...@@ -41,7 +49,7 @@ obj-$(CONFIG_SCSI_MAC_ESP) += mac_esp.o NCR53C9x.o ...@@ -41,7 +49,7 @@ obj-$(CONFIG_SCSI_MAC_ESP) += mac_esp.o NCR53C9x.o
obj-$(CONFIG_SUN3_SCSI) += sun3_scsi.o sun3_scsi_vme.o obj-$(CONFIG_SUN3_SCSI) += sun3_scsi.o sun3_scsi_vme.o
obj-$(CONFIG_MVME16x_SCSI) += mvme16x.o 53c7xx.o obj-$(CONFIG_MVME16x_SCSI) += mvme16x.o 53c7xx.o
obj-$(CONFIG_BVME6000_SCSI) += bvme6000.o 53c7xx.o obj-$(CONFIG_BVME6000_SCSI) += bvme6000.o 53c7xx.o
obj-$(CONFIG_SCSI_SIM710) += sim710.o 53c700.o obj-$(CONFIG_SCSI_SIM710) += 53c700.o sim710.o
obj-$(CONFIG_SCSI_ADVANSYS) += advansys.o obj-$(CONFIG_SCSI_ADVANSYS) += advansys.o
obj-$(CONFIG_SCSI_PCI2000) += pci2000.o obj-$(CONFIG_SCSI_PCI2000) += pci2000.o
obj-$(CONFIG_SCSI_PCI2220I) += pci2220i.o obj-$(CONFIG_SCSI_PCI2220I) += pci2220i.o
...@@ -64,7 +72,7 @@ obj-$(CONFIG_SCSI_IN2000) += in2000.o ...@@ -64,7 +72,7 @@ obj-$(CONFIG_SCSI_IN2000) += in2000.o
obj-$(CONFIG_SCSI_GENERIC_NCR5380) += g_NCR5380.o obj-$(CONFIG_SCSI_GENERIC_NCR5380) += g_NCR5380.o
obj-$(CONFIG_SCSI_GENERIC_NCR5380_MMIO) += g_NCR5380_mmio.o obj-$(CONFIG_SCSI_GENERIC_NCR5380_MMIO) += g_NCR5380_mmio.o
obj-$(CONFIG_SCSI_NCR53C406A) += NCR53c406a.o obj-$(CONFIG_SCSI_NCR53C406A) += NCR53c406a.o
obj-$(CONFIG_SCSI_NCR_D700) += NCR_D700.o 53c700.o obj-$(CONFIG_SCSI_NCR_D700) += 53c700.o NCR_D700.o
obj-$(CONFIG_SCSI_NCR_Q720) += NCR_Q720_mod.o obj-$(CONFIG_SCSI_NCR_Q720) += NCR_Q720_mod.o
obj-$(CONFIG_SCSI_SYM53C416) += sym53c416.o obj-$(CONFIG_SCSI_SYM53C416) += sym53c416.o
obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicfas.o obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicfas.o
...@@ -107,7 +115,7 @@ obj-$(CONFIG_SUN3X_ESP) += NCR53C9x.o sun3x_esp.o ...@@ -107,7 +115,7 @@ obj-$(CONFIG_SUN3X_ESP) += NCR53C9x.o sun3x_esp.o
obj-$(CONFIG_SCSI_DEBUG) += scsi_debug.o obj-$(CONFIG_SCSI_DEBUG) += scsi_debug.o
obj-$(CONFIG_SCSI_FCAL) += fcal.o obj-$(CONFIG_SCSI_FCAL) += fcal.o
obj-$(CONFIG_SCSI_CPQFCTS) += cpqfc.o obj-$(CONFIG_SCSI_CPQFCTS) += cpqfc.o
obj-$(CONFIG_SCSI_LASI700) += lasi700.o 53c700.o obj-$(CONFIG_SCSI_LASI700) += 53c700.o lasi700.o
obj-$(CONFIG_SCSI_NSP32) += nsp32.o obj-$(CONFIG_SCSI_NSP32) += nsp32.o
obj-$(CONFIG_SCSI_SATA_SVW) += libata.o sata_svw.o obj-$(CONFIG_SCSI_SATA_SVW) += libata.o sata_svw.o
obj-$(CONFIG_SCSI_ATA_PIIX) += libata.o ata_piix.o obj-$(CONFIG_SCSI_ATA_PIIX) += libata.o ata_piix.o
...@@ -130,7 +138,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \ ...@@ -130,7 +138,7 @@ scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
scsi_mod-$(CONFIG_X86_PC9800) += scsi_pc98.o scsi_mod-$(CONFIG_X86_PC9800) += scsi_pc98.o
sd_mod-objs := sd.o sd_mod-objs := sd.o
sr_mod-objs := sr.o sr_ioctl.o sr_vendor.o sr_mod-objs := sr.o sr_ioctl.o sr_vendor.o
initio-objs := ini9100u.o i91uscsi.o initio-objs := ini9100u.o i91uscsi.o
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# #
config SCSI_AIC79XX config SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support" tristate "Adaptec AIC79xx U320 support"
depends on PCI depends on PCI && SCSI
help help
This driver supports all of Adaptec's Ultra 320 PCI-X This driver supports all of Adaptec's Ultra 320 PCI-X
based SCSI controllers. based SCSI controllers.
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# #
config SCSI_AIC7XXX config SCSI_AIC7XXX
tristate "Adaptec AIC7xxx Fast -> U160 support (New Driver)" tristate "Adaptec AIC7xxx Fast -> U160 support (New Driver)"
depends on PCI || EISA depends on (PCI || EISA) && SCSI
---help--- ---help---
This driver supports all of Adaptec's Fast through Ultra 160 PCI This driver supports all of Adaptec's Fast through Ultra 160 PCI
based SCSI controllers as well as the aic7770 based EISA and VLB based SCSI controllers as well as the aic7770 based EISA and VLB
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment