 cddc0ab711
			
		
	
	
	cddc0ab711
	
	
	
		
			
			Updating copyright statement to include the year 2008 Signed-off-by: Sathya Prakash <sathya.prakash@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
		
			
				
	
	
		
			467 lines
		
	
	
	
		
			14 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			467 lines
		
	
	
	
		
			14 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  linux/drivers/message/fusion/mptioctl.h
 | |
|  *      Fusion MPT misc device (ioctl) driver.
 | |
|  *      For use with PCI chip/adapter(s):
 | |
|  *          LSIFC9xx/LSI409xx Fibre Channel
 | |
|  *      running LSI Fusion MPT (Message Passing Technology) firmware.
 | |
|  *
 | |
|  *  Copyright (c) 1999-2008 LSI Corporation
 | |
|  *  (mailto:DL-MPTFusionLinux@lsi.com)
 | |
|  *
 | |
|  */
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| /*
 | |
|     This program is free software; you can redistribute it and/or modify
 | |
|     it under the terms of the GNU General Public License as published by
 | |
|     the Free Software Foundation; version 2 of the License.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|     GNU General Public License for more details.
 | |
| 
 | |
|     NO WARRANTY
 | |
|     THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
 | |
|     CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
 | |
|     LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
 | |
|     MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
 | |
|     solely responsible for determining the appropriateness of using and
 | |
|     distributing the Program and assumes all risks associated with its
 | |
|     exercise of rights under this Agreement, including but not limited to
 | |
|     the risks and costs of program errors, damage to or loss of data,
 | |
|     programs or equipment, and unavailability or interruption of operations.
 | |
| 
 | |
|     DISCLAIMER OF LIABILITY
 | |
|     NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
 | |
|     DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
|     DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
 | |
|     ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 | |
|     TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 | |
|     USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
 | |
|     HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
 | |
| 
 | |
|     You should have received a copy of the GNU General Public License
 | |
|     along with this program; if not, write to the Free Software
 | |
|     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| */
 | |
| 
 | |
| #ifndef MPTCTL_H_INCLUDED
 | |
| #define MPTCTL_H_INCLUDED
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| 
 | |
| 
 | |
| 
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| /*
 | |
|  *
 | |
|  */
 | |
| #define MPT_MISCDEV_BASENAME            "mptctl"
 | |
| #define MPT_MISCDEV_PATHNAME            "/dev/" MPT_MISCDEV_BASENAME
 | |
| 
 | |
| #define MPT_PRODUCT_LENGTH              12
 | |
| 
 | |
| /*
 | |
|  *  Generic MPT Control IOCTLs and structures
 | |
|  */
 | |
| #define MPT_MAGIC_NUMBER	'm'
 | |
| 
 | |
| #define MPTRWPERF		_IOWR(MPT_MAGIC_NUMBER,0,struct mpt_raw_r_w)
 | |
| 
 | |
| #define MPTFWDOWNLOAD		_IOWR(MPT_MAGIC_NUMBER,15,struct mpt_fw_xfer)
 | |
| #define MPTCOMMAND		_IOWR(MPT_MAGIC_NUMBER,20,struct mpt_ioctl_command)
 | |
| 
 | |
| #if defined(__KERNEL__) && defined(CONFIG_COMPAT)
 | |
| #define MPTFWDOWNLOAD32		_IOWR(MPT_MAGIC_NUMBER,15,struct mpt_fw_xfer32)
 | |
| #define MPTCOMMAND32		_IOWR(MPT_MAGIC_NUMBER,20,struct mpt_ioctl_command32)
 | |
| #endif
 | |
| 
 | |
| #define MPTIOCINFO		_IOWR(MPT_MAGIC_NUMBER,17,struct mpt_ioctl_iocinfo)
 | |
| #define MPTIOCINFO1		_IOWR(MPT_MAGIC_NUMBER,17,struct mpt_ioctl_iocinfo_rev0)
 | |
| #define MPTIOCINFO2		_IOWR(MPT_MAGIC_NUMBER,17,struct mpt_ioctl_iocinfo_rev1)
 | |
| #define MPTTARGETINFO		_IOWR(MPT_MAGIC_NUMBER,18,struct mpt_ioctl_targetinfo)
 | |
| #define MPTTEST			_IOWR(MPT_MAGIC_NUMBER,19,struct mpt_ioctl_test)
 | |
| #define MPTEVENTQUERY		_IOWR(MPT_MAGIC_NUMBER,21,struct mpt_ioctl_eventquery)
 | |
| #define MPTEVENTENABLE		_IOWR(MPT_MAGIC_NUMBER,22,struct mpt_ioctl_eventenable)
 | |
| #define MPTEVENTREPORT		_IOWR(MPT_MAGIC_NUMBER,23,struct mpt_ioctl_eventreport)
 | |
| #define MPTHARDRESET		_IOWR(MPT_MAGIC_NUMBER,24,struct mpt_ioctl_diag_reset)
 | |
| #define MPTFWREPLACE		_IOWR(MPT_MAGIC_NUMBER,25,struct mpt_ioctl_replace_fw)
 | |
| 
 | |
| /*
 | |
|  * SPARC PLATFORM REMARKS:
 | |
|  * IOCTL data structures that contain pointers
 | |
|  * will have different sizes in the driver and applications
 | |
|  * (as the app. will not use 8-byte pointers).
 | |
|  * Apps should use MPTFWDOWNLOAD and MPTCOMMAND.
 | |
|  * The driver will convert data from
 | |
|  * mpt_fw_xfer32 (mpt_ioctl_command32) to mpt_fw_xfer (mpt_ioctl_command)
 | |
|  * internally.
 | |
|  *
 | |
|  * If data structures change size, must handle as in IOCGETINFO.
 | |
|  */
 | |
| struct mpt_fw_xfer {
 | |
| 	unsigned int	 iocnum;	/* IOC unit number */
 | |
| 	unsigned int	 fwlen;
 | |
| 	void		__user *bufp;	/* Pointer to firmware buffer */
 | |
| };
 | |
| 
 | |
| #if defined(__KERNEL__) && defined(CONFIG_COMPAT)
 | |
| struct mpt_fw_xfer32 {
 | |
| 	unsigned int iocnum;
 | |
| 	unsigned int fwlen;
 | |
| 	u32 bufp;
 | |
| };
 | |
| #endif	/*}*/
 | |
| 
 | |
| /*
 | |
|  *  IOCTL header structure.
 | |
|  *  iocnum - must be defined.
 | |
|  *  port - must be defined for all IOCTL commands other than MPTIOCINFO
 | |
|  *  maxDataSize - ignored on MPTCOMMAND commands
 | |
|  *		- ignored on MPTFWREPLACE commands
 | |
|  *		- on query commands, reports the maximum number of bytes to be returned
 | |
|  *		  to the host driver (count includes the header).
 | |
|  *		  That is, set to sizeof(struct mpt_ioctl_iocinfo) for fixed sized commands.
 | |
|  *		  Set to sizeof(struct mpt_ioctl_targetinfo) + datasize for variable
 | |
|  *			sized commands. (MPTTARGETINFO, MPTEVENTREPORT)
 | |
|  */
 | |
| typedef struct _mpt_ioctl_header {
 | |
| 	unsigned int	 iocnum;	/* IOC unit number */
 | |
| 	unsigned int	 port;		/* IOC port number */
 | |
| 	int		 maxDataSize;	/* Maximum Num. bytes to transfer on read */
 | |
| } mpt_ioctl_header;
 | |
| 
 | |
| /*
 | |
|  * Issue a diagnostic reset
 | |
|  */
 | |
| struct mpt_ioctl_diag_reset {
 | |
| 	mpt_ioctl_header hdr;
 | |
| };
 | |
| 
 | |
| 
 | |
| /*
 | |
|  *  PCI bus/device/function information structure.
 | |
|  */
 | |
| struct mpt_ioctl_pci_info {
 | |
| 	union {
 | |
| 		struct {
 | |
| 			unsigned int  deviceNumber   :  5;
 | |
| 			unsigned int  functionNumber :  3;
 | |
| 			unsigned int  busNumber      : 24;
 | |
| 		} bits;
 | |
| 		unsigned int  asUlong;
 | |
| 	} u;
 | |
| };
 | |
| 
 | |
| struct mpt_ioctl_pci_info2 {
 | |
| 	union {
 | |
| 		struct {
 | |
| 			unsigned int  deviceNumber   :  5;
 | |
| 			unsigned int  functionNumber :  3;
 | |
| 			unsigned int  busNumber      : 24;
 | |
| 		} bits;
 | |
| 		unsigned int  asUlong;
 | |
| 	} u;
 | |
|   int segmentID;
 | |
| };
 | |
| 
 | |
| /*
 | |
|  *  Adapter Information Page
 | |
|  *  Read only.
 | |
|  *  Data starts at offset 0xC
 | |
|  */
 | |
| #define MPT_IOCTL_INTERFACE_SCSI	(0x00)
 | |
| #define MPT_IOCTL_INTERFACE_FC		(0x01)
 | |
| #define MPT_IOCTL_INTERFACE_FC_IP	(0x02)
 | |
| #define MPT_IOCTL_INTERFACE_SAS		(0x03)
 | |
| #define MPT_IOCTL_VERSION_LENGTH	(32)
 | |
| 
 | |
| struct mpt_ioctl_iocinfo {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		 adapterType;	/* SCSI or FCP */
 | |
| 	int		 port;		/* port number */
 | |
| 	int		 pciId;		/* PCI Id. */
 | |
| 	int		 hwRev;		/* hardware revision */
 | |
| 	int		 subSystemDevice;	/* PCI subsystem Device ID */
 | |
| 	int		 subSystemVendor;	/* PCI subsystem Vendor ID */
 | |
| 	int		 numDevices;		/* number of devices */
 | |
| 	int		 FWVersion;		/* FW Version (integer) */
 | |
| 	int		 BIOSVersion;		/* BIOS Version (integer) */
 | |
| 	char		 driverVersion[MPT_IOCTL_VERSION_LENGTH];	/* Driver Version (string) */
 | |
| 	char		 busChangeEvent;
 | |
| 	char		 hostId;
 | |
| 	char		 rsvd[2];
 | |
| 	struct mpt_ioctl_pci_info2  pciInfo; /* Added Rev 2 */
 | |
| };
 | |
| 
 | |
| struct mpt_ioctl_iocinfo_rev1 {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		 adapterType;	/* SCSI or FCP */
 | |
| 	int		 port;		/* port number */
 | |
| 	int		 pciId;		/* PCI Id. */
 | |
| 	int		 hwRev;		/* hardware revision */
 | |
| 	int		 subSystemDevice;	/* PCI subsystem Device ID */
 | |
| 	int		 subSystemVendor;	/* PCI subsystem Vendor ID */
 | |
| 	int		 numDevices;		/* number of devices */
 | |
| 	int		 FWVersion;		/* FW Version (integer) */
 | |
| 	int		 BIOSVersion;		/* BIOS Version (integer) */
 | |
| 	char		 driverVersion[MPT_IOCTL_VERSION_LENGTH];	/* Driver Version (string) */
 | |
| 	char		 busChangeEvent;
 | |
| 	char		 hostId;
 | |
| 	char		 rsvd[2];
 | |
| 	struct mpt_ioctl_pci_info  pciInfo; /* Added Rev 1 */
 | |
| };
 | |
| 
 | |
| /* Original structure, must always accept these
 | |
|  * IOCTLs. 4 byte pads can occur based on arch with
 | |
|  * above structure. Wish to re-align, but cannot.
 | |
|  */
 | |
| struct mpt_ioctl_iocinfo_rev0 {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		 adapterType;	/* SCSI or FCP */
 | |
| 	int		 port;		/* port number */
 | |
| 	int		 pciId;		/* PCI Id. */
 | |
| 	int		 hwRev;		/* hardware revision */
 | |
| 	int		 subSystemDevice;	/* PCI subsystem Device ID */
 | |
| 	int		 subSystemVendor;	/* PCI subsystem Vendor ID */
 | |
| 	int		 numDevices;		/* number of devices */
 | |
| 	int		 FWVersion;		/* FW Version (integer) */
 | |
| 	int		 BIOSVersion;		/* BIOS Version (integer) */
 | |
| 	char		 driverVersion[MPT_IOCTL_VERSION_LENGTH];	/* Driver Version (string) */
 | |
| 	char		 busChangeEvent;
 | |
| 	char		 hostId;
 | |
| 	char		 rsvd[2];
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * Device Information Page
 | |
|  * Report the number of, and ids of, all targets
 | |
|  * on this IOC.  The ids array is a packed structure
 | |
|  * of the known targetInfo.
 | |
|  * bits 31-24: reserved
 | |
|  *      23-16: LUN
 | |
|  *      15- 8: Bus Number
 | |
|  *       7- 0: Target ID
 | |
|  */
 | |
| struct mpt_ioctl_targetinfo {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		 numDevices;	/* Num targets on this ioc */
 | |
| 	int		 targetInfo[1];
 | |
| };
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Event reporting IOCTL's.  These IOCTL's will
 | |
|  * use the following defines:
 | |
|  */
 | |
| struct mpt_ioctl_eventquery {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	unsigned short	 eventEntries;
 | |
| 	unsigned short	 reserved;
 | |
| 	unsigned int	 eventTypes;
 | |
| };
 | |
| 
 | |
| struct mpt_ioctl_eventenable {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	unsigned int	 eventTypes;
 | |
| };
 | |
| 
 | |
| #ifndef __KERNEL__
 | |
| typedef struct {
 | |
| 	uint	event;
 | |
| 	uint	eventContext;
 | |
| 	uint	data[2];
 | |
| } MPT_IOCTL_EVENTS;
 | |
| #endif
 | |
| 
 | |
| struct mpt_ioctl_eventreport {
 | |
| 	mpt_ioctl_header	hdr;
 | |
| 	MPT_IOCTL_EVENTS	eventData[1];
 | |
| };
 | |
| 
 | |
| #define MPT_MAX_NAME	32
 | |
| struct mpt_ioctl_test {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	u8		 name[MPT_MAX_NAME];
 | |
| 	int		 chip_type;
 | |
| 	u8		 product [MPT_PRODUCT_LENGTH];
 | |
| };
 | |
| 
 | |
| /* Replace the FW image cached in host driver memory
 | |
|  * newImageSize - image size in bytes
 | |
|  * newImage - first byte of the new image
 | |
|  */
 | |
| typedef struct mpt_ioctl_replace_fw {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		 newImageSize;
 | |
| 	u8		 newImage[1];
 | |
| } mpt_ioctl_replace_fw_t;
 | |
| 
 | |
| /* General MPT Pass through data strucutre
 | |
|  *
 | |
|  * iocnum
 | |
|  * timeout - in seconds, command timeout. If 0, set by driver to
 | |
|  *		default value.
 | |
|  * replyFrameBufPtr - reply location
 | |
|  * dataInBufPtr - destination for read
 | |
|  * dataOutBufPtr - data source for write
 | |
|  * senseDataPtr - sense data location
 | |
|  * maxReplyBytes - maximum number of reply bytes to be sent to app.
 | |
|  * dataInSize - num bytes for data transfer in (read)
 | |
|  * dataOutSize - num bytes for data transfer out (write)
 | |
|  * dataSgeOffset - offset in words from the start of the request message
 | |
|  *		to the first SGL
 | |
|  * MF[1];
 | |
|  *
 | |
|  * Remark:  Some config pages have bi-directional transfer,
 | |
|  * both a read and a write. The basic structure allows for
 | |
|  * a bidirectional set up. Normal messages will have one or
 | |
|  * both of these buffers NULL.
 | |
|  */
 | |
| struct mpt_ioctl_command {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int		timeout;	/* optional (seconds) */
 | |
| 	char		__user *replyFrameBufPtr;
 | |
| 	char		__user *dataInBufPtr;
 | |
| 	char		__user *dataOutBufPtr;
 | |
| 	char		__user *senseDataPtr;
 | |
| 	int		maxReplyBytes;
 | |
| 	int		dataInSize;
 | |
| 	int		dataOutSize;
 | |
| 	int		maxSenseBytes;
 | |
| 	int		dataSgeOffset;
 | |
| 	char		MF[1];
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * SPARC PLATFORM: See earlier remark.
 | |
|  */
 | |
| #if defined(__KERNEL__) && defined(CONFIG_COMPAT)
 | |
| struct mpt_ioctl_command32 {
 | |
| 	mpt_ioctl_header hdr;
 | |
| 	int	timeout;
 | |
| 	u32	replyFrameBufPtr;
 | |
| 	u32	dataInBufPtr;
 | |
| 	u32	dataOutBufPtr;
 | |
| 	u32	senseDataPtr;
 | |
| 	int	maxReplyBytes;
 | |
| 	int	dataInSize;
 | |
| 	int	dataOutSize;
 | |
| 	int	maxSenseBytes;
 | |
| 	int	dataSgeOffset;
 | |
| 	char	MF[1];
 | |
| };
 | |
| #endif	/*}*/
 | |
| 
 | |
| 
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| 
 | |
| #define CPQFCTS_IOC_MAGIC 'Z'
 | |
| #define HP_IOC_MAGIC 'Z'
 | |
| #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)
 | |
| 
 | |
| typedef struct _hp_header {
 | |
| 	unsigned int iocnum;
 | |
| 	unsigned int host;
 | |
| 	unsigned int channel;
 | |
| 	unsigned int id;
 | |
| 	unsigned int lun;
 | |
| } hp_header_t;
 | |
| 
 | |
| /*
 | |
|  *  Header:
 | |
|  *  iocnum 	required (input)
 | |
|  *  host 	ignored
 | |
|  *  channe	ignored
 | |
|  *  id		ignored
 | |
|  *  lun		ignored
 | |
|  */
 | |
| typedef struct _hp_host_info {
 | |
| 	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 int	 hard_resets;		/* driver initiated resets */
 | |
| 	unsigned int	 soft_resets;		/* ioc, external resets */
 | |
| 	unsigned int	 timeouts;		/* num timeouts */
 | |
| } 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:
 | |
|  *  iocnum 	required (input)
 | |
|  *  host 	required
 | |
|  *  channel	required	(bus number)
 | |
|  *  id		required
 | |
|  *  lun		ignored
 | |
|  *
 | |
|  *  All error values between 0 and 0xFFFF in size.
 | |
|  */
 | |
| typedef struct _hp_target_info {
 | |
| 	hp_header_t	 hdr;
 | |
| 	u32 parity_errors;
 | |
| 	u32 phase_errors;
 | |
| 	u32 select_timeouts;
 | |
| 	u32 message_rejects;
 | |
| 	u32 negotiated_speed;
 | |
| 	u8  negotiated_width;
 | |
| 	u8  rsvd[7];				/* 8 byte alignment */
 | |
| } hp_target_info_t;
 | |
| 
 | |
| #define HP_STATUS_OTHER		1
 | |
| #define HP_STATUS_OK		2
 | |
| #define HP_STATUS_FAILED	3
 | |
| 
 | |
| #define HP_BUS_WIDTH_UNK	1
 | |
| #define HP_BUS_WIDTH_8		2
 | |
| #define HP_BUS_WIDTH_16		3
 | |
| #define HP_BUS_WIDTH_32		4
 | |
| 
 | |
| #define HP_DEV_SPEED_ASYNC	2
 | |
| #define HP_DEV_SPEED_FAST	3
 | |
| #define HP_DEV_SPEED_ULTRA	4
 | |
| #define HP_DEV_SPEED_ULTRA2	5
 | |
| #define HP_DEV_SPEED_ULTRA160	6
 | |
| #define HP_DEV_SPEED_SCSI1	7
 | |
| #define HP_DEV_SPEED_ULTRA320	8
 | |
| 
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| 
 | |
| 
 | |
| /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 | |
| 
 | |
| #endif
 | |
| 
 |