Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #ifndef _SCSI_I2O_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define _SCSI_I2O_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) /* I2O kernel space accessible structures/APIs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * (c) Copyright 1999, 2000 Red Hat Software
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  *************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  * This header file defined the I2O APIs/structures for use by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * the I2O kernel modules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #ifdef __KERNEL__       /* This file to be included by kernel only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #include <linux/i2o-dev.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #include <linux/notifier.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #include <linux/atomic.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)  *	Tunable parameters first
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) /* How many different OSM's are we allowing */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define MAX_I2O_MODULES		64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define I2O_EVT_CAPABILITY_OTHER		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define I2O_EVT_CAPABILITY_CHANGED		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define I2O_EVT_SENSOR_STATE_CHANGED		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) //#ifdef __KERNEL__   /* ioctl stuff only thing exported to users */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define I2O_MAX_MANAGERS	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)  *	I2O Interface Objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #include <linux/wait.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) typedef wait_queue_head_t adpt_wait_queue_head_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define ADPT_DECLARE_WAIT_QUEUE_HEAD(wait) DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wait)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) typedef wait_queue_entry_t adpt_wait_queue_entry_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49)  * message structures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) struct i2o_message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	u8	version_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	u8	flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	u16	size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	u32	target_tid:12;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	u32	init_tid:12;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	u32	function:8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	u32	initiator_context;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	/* List follows */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) struct adpt_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) struct _adpt_hba;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) struct i2o_device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	struct i2o_device *next;	/* Chain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	struct i2o_device *prev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	char dev_name[8];		/* linux /dev name if available */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	i2o_lct_entry lct_data;/* Device LCT information */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	struct proc_dir_entry* proc_entry;	/* /proc dir */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	struct adpt_device *owner;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	struct _adpt_hba *controller;	/* Controlling IOP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)  *	Each I2O controller has one of these objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) struct i2o_controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	char name[16];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	int unit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	int type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	int enabled;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	struct notifier_block *event_notifer;	/* Events */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	atomic_t users;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	struct i2o_device *devices;		/* I2O device chain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	struct i2o_controller *next;		/* Controller chain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98)  * I2O System table entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) struct i2o_sys_tbl_entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	u16	org_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	u16	reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	u32	iop_id:12;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	u32	reserved2:20;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	u16	seg_num:12;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	u16	i2o_version:4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	u8	iop_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	u8	msg_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	u16	frame_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	u16	reserved3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	u32	last_changed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	u32	iop_capabilities;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	u32	inbound_low;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	u32	inbound_high;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) struct i2o_sys_tbl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	u8	num_entries;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	u8	version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	u16	reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	u32	change_ind;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	u32	reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	u32	reserved3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	struct i2o_sys_tbl_entry iops[0];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)  *	I2O classes / subclasses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) /*  Class ID and Code Assignments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)  *  (LCT.ClassID.Version field)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define    I2O_CLASS_VERSION_10                        0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define    I2O_CLASS_VERSION_11                        0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) /*  Class code names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)  *  (from v1.5 Table 6-1 Class Code Assignments.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define    I2O_CLASS_EXECUTIVE                         0x000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define    I2O_CLASS_DDM                               0x001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define    I2O_CLASS_RANDOM_BLOCK_STORAGE              0x010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define    I2O_CLASS_SEQUENTIAL_STORAGE                0x011
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define    I2O_CLASS_LAN                               0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define    I2O_CLASS_WAN                               0x030
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define    I2O_CLASS_FIBRE_CHANNEL_PORT                0x040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define    I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL          0x041
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define    I2O_CLASS_SCSI_PERIPHERAL                   0x051
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define    I2O_CLASS_ATE_PORT                          0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define    I2O_CLASS_ATE_PERIPHERAL                    0x061
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define    I2O_CLASS_FLOPPY_CONTROLLER                 0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define    I2O_CLASS_FLOPPY_DEVICE                     0x071
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define    I2O_CLASS_BUS_ADAPTER_PORT                  0x080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define    I2O_CLASS_PEER_TRANSPORT_AGENT              0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define    I2O_CLASS_PEER_TRANSPORT                    0x091
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) /*  Rest of 0x092 - 0x09f reserved for peer-to-peer classes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define    I2O_CLASS_MATCH_ANYCLASS                    0xffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) /*  Subclasses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define    I2O_SUBCLASS_i960                           0x001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define    I2O_SUBCLASS_HDM                            0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define    I2O_SUBCLASS_ISM                            0x021
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) /* Operation functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) #define I2O_PARAMS_FIELD_GET	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define I2O_PARAMS_LIST_GET	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define I2O_PARAMS_MORE_GET	0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define I2O_PARAMS_SIZE_GET	0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define I2O_PARAMS_TABLE_GET	0x0005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define I2O_PARAMS_FIELD_SET	0x0006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define I2O_PARAMS_LIST_SET	0x0007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define I2O_PARAMS_ROW_ADD	0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define I2O_PARAMS_ROW_DELETE	0x0009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define I2O_PARAMS_TABLE_CLEAR	0x000A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)  *	I2O serial number conventions / formats
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)  *	(circa v1.5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) #define    I2O_SNFORMAT_UNKNOWN                        0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define    I2O_SNFORMAT_BINARY                         1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define    I2O_SNFORMAT_ASCII                          2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define    I2O_SNFORMAT_UNICODE                        3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define    I2O_SNFORMAT_LAN48_MAC                      4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define    I2O_SNFORMAT_WAN                            5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) /* Plus new in v2.0 (Yellowstone pdf doc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define    I2O_SNFORMAT_LAN64_MAC                      6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define    I2O_SNFORMAT_DDM                            7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define    I2O_SNFORMAT_IEEE_REG64                     8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define    I2O_SNFORMAT_IEEE_REG128                    9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define    I2O_SNFORMAT_UNKNOWN2                       0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) /* Transaction Reply Lists (TRL) Control Word structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define TRL_SINGLE_FIXED_LENGTH		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #define TRL_SINGLE_VARIABLE_LENGTH	0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) #define TRL_MULTIPLE_FIXED_LENGTH	0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)  *	Messaging API values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define	I2O_CMD_ADAPTER_ASSIGN		0xB3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define	I2O_CMD_ADAPTER_READ		0xB2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define	I2O_CMD_ADAPTER_RELEASE		0xB5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define	I2O_CMD_BIOS_INFO_SET		0xA5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define	I2O_CMD_BOOT_DEVICE_SET		0xA7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define	I2O_CMD_CONFIG_VALIDATE		0xBB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define	I2O_CMD_CONN_SETUP		0xCA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define	I2O_CMD_DDM_DESTROY		0xB1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define	I2O_CMD_DDM_ENABLE		0xD5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define	I2O_CMD_DDM_QUIESCE		0xC7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #define	I2O_CMD_DDM_RESET		0xD9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define	I2O_CMD_DDM_SUSPEND		0xAF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #define	I2O_CMD_DEVICE_ASSIGN		0xB7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define	I2O_CMD_DEVICE_RELEASE		0xB9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define	I2O_CMD_HRT_GET			0xA8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #define	I2O_CMD_ADAPTER_CLEAR		0xBE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define	I2O_CMD_ADAPTER_CONNECT		0xC9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define	I2O_CMD_ADAPTER_RESET		0xBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define	I2O_CMD_LCT_NOTIFY		0xA2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define	I2O_CMD_OUTBOUND_INIT		0xA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define	I2O_CMD_PATH_ENABLE		0xD3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define	I2O_CMD_PATH_QUIESCE		0xC5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define	I2O_CMD_PATH_RESET		0xD7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #define	I2O_CMD_STATIC_MF_CREATE	0xDD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) #define	I2O_CMD_STATIC_MF_RELEASE	0xDF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) #define	I2O_CMD_STATUS_GET		0xA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define	I2O_CMD_SW_DOWNLOAD		0xA9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define	I2O_CMD_SW_UPLOAD		0xAB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define	I2O_CMD_SW_REMOVE		0xAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define	I2O_CMD_SYS_ENABLE		0xD1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define	I2O_CMD_SYS_MODIFY		0xC1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define	I2O_CMD_SYS_QUIESCE		0xC3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define	I2O_CMD_SYS_TAB_SET		0xA3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define I2O_CMD_UTIL_NOP		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define I2O_CMD_UTIL_ABORT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define I2O_CMD_UTIL_CLAIM		0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define I2O_CMD_UTIL_RELEASE		0x0B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define I2O_CMD_UTIL_PARAMS_GET		0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define I2O_CMD_UTIL_PARAMS_SET		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define I2O_CMD_UTIL_EVT_REGISTER	0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) #define I2O_CMD_UTIL_EVT_ACK		0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) #define I2O_CMD_UTIL_CONFIG_DIALOG	0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) #define I2O_CMD_UTIL_DEVICE_RESERVE	0x0D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define I2O_CMD_UTIL_DEVICE_RELEASE	0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #define I2O_CMD_UTIL_LOCK		0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #define I2O_CMD_UTIL_LOCK_RELEASE	0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define I2O_CMD_UTIL_REPLY_FAULT_NOTIFY	0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) #define I2O_CMD_SCSI_EXEC		0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define I2O_CMD_SCSI_ABORT		0x83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #define I2O_CMD_SCSI_BUSRESET		0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) #define I2O_CMD_BLOCK_READ		0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) #define I2O_CMD_BLOCK_WRITE		0x31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) #define I2O_CMD_BLOCK_CFLUSH		0x37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) #define I2O_CMD_BLOCK_MLOCK		0x49
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) #define I2O_CMD_BLOCK_MUNLOCK		0x4B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #define I2O_CMD_BLOCK_MMOUNT		0x41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) #define I2O_CMD_BLOCK_MEJECT		0x43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #define I2O_PRIVATE_MSG			0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)  *	Init Outbound Q status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) #define I2O_CMD_OUTBOUND_INIT_IN_PROGRESS	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) #define I2O_CMD_OUTBOUND_INIT_REJECTED		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) #define I2O_CMD_OUTBOUND_INIT_FAILED		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) #define I2O_CMD_OUTBOUND_INIT_COMPLETE		0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)  *	I2O Get Status State values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #define	ADAPTER_STATE_INITIALIZING		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) #define	ADAPTER_STATE_RESET			0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define	ADAPTER_STATE_HOLD			0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) #define ADAPTER_STATE_READY			0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define	ADAPTER_STATE_OPERATIONAL		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #define	ADAPTER_STATE_FAILED			0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define	ADAPTER_STATE_FAULTED			0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) /* I2O API function return values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #define I2O_RTN_NO_ERROR			0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #define I2O_RTN_NOT_INIT			1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) #define I2O_RTN_FREE_Q_EMPTY			2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) #define I2O_RTN_TCB_ERROR			3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #define I2O_RTN_TRANSACTION_ERROR		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) #define I2O_RTN_ADAPTER_ALREADY_INIT		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) #define I2O_RTN_MALLOC_ERROR			6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) #define I2O_RTN_ADPTR_NOT_REGISTERED		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) #define I2O_RTN_MSG_REPLY_TIMEOUT		8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) #define I2O_RTN_NO_STATUS			9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) #define I2O_RTN_NO_FIRM_VER			10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) #define	I2O_RTN_NO_LINK_SPEED			11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) /* Reply message status defines for all messages */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) #define I2O_REPLY_STATUS_SUCCESS			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #define I2O_REPLY_STATUS_ABORT_DIRTY			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER		0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define	I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define	I2O_REPLY_STATUS_ERROR_DIRTY			0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define	I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER		0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define	I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER		0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #define	I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY		0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) #define	I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER	0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #define	I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER	0x0A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #define	I2O_REPLY_STATUS_TRANSACTION_ERROR		0x0B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) #define	I2O_REPLY_STATUS_PROGRESS_REPORT		0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) /* Status codes and Error Information for Parameter functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define I2O_PARAMS_STATUS_SUCCESS		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define I2O_PARAMS_STATUS_BAD_KEY_ABORT		0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define I2O_PARAMS_STATUS_BUFFER_FULL		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL	0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) #define I2O_PARAMS_STATUS_FIELD_UNREADABLE	0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE	0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS	0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #define I2O_PARAMS_STATUS_INVALID_GROUP_ID	0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #define I2O_PARAMS_STATUS_INVALID_OPERATION	0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) #define I2O_PARAMS_STATUS_NO_KEY_FIELD		0x0A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define I2O_PARAMS_STATUS_NO_SUCH_FIELD		0x0B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP	0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #define I2O_PARAMS_STATUS_OPERATION_ERROR	0x0D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #define I2O_PARAMS_STATUS_SCALAR_ERROR		0x0E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #define I2O_PARAMS_STATUS_TABLE_ERROR		0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE	0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) /* DetailedStatusCode defines for Executive, DDM, Util and Transaction error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)  * messages: Table 3-2 Detailed Status Codes.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) #define I2O_DSC_SUCCESS                        0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) #define I2O_DSC_BAD_KEY                        0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define I2O_DSC_TCL_ERROR                      0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #define I2O_DSC_REPLY_BUFFER_FULL              0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #define I2O_DSC_NO_SUCH_PAGE                   0x0005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) #define I2O_DSC_INSUFFICIENT_RESOURCE_SOFT     0x0006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) #define I2O_DSC_INSUFFICIENT_RESOURCE_HARD     0x0007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #define I2O_DSC_CHAIN_BUFFER_TOO_LARGE         0x0009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #define I2O_DSC_UNSUPPORTED_FUNCTION           0x000A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define I2O_DSC_DEVICE_LOCKED                  0x000B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #define I2O_DSC_DEVICE_RESET                   0x000C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #define I2O_DSC_INAPPROPRIATE_FUNCTION         0x000D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) #define I2O_DSC_INVALID_INITIATOR_ADDRESS      0x000E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #define I2O_DSC_INVALID_MESSAGE_FLAGS          0x000F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define I2O_DSC_INVALID_OFFSET                 0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define I2O_DSC_INVALID_PARAMETER              0x0011
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define I2O_DSC_INVALID_REQUEST                0x0012
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define I2O_DSC_INVALID_TARGET_ADDRESS         0x0013
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define I2O_DSC_MESSAGE_TOO_LARGE              0x0014
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define I2O_DSC_MESSAGE_TOO_SMALL              0x0015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define I2O_DSC_MISSING_PARAMETER              0x0016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #define I2O_DSC_TIMEOUT                        0x0017
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define I2O_DSC_UNKNOWN_ERROR                  0x0018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define I2O_DSC_UNKNOWN_FUNCTION               0x0019
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) #define I2O_DSC_UNSUPPORTED_VERSION            0x001A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define I2O_DSC_DEVICE_BUSY                    0x001B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #define I2O_DSC_DEVICE_NOT_AVAILABLE           0x001C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) /* Device Claim Types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #define	I2O_CLAIM_PRIMARY					0x01000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) #define	I2O_CLAIM_MANAGEMENT					0x02000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) #define	I2O_CLAIM_AUTHORIZED					0x03000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #define	I2O_CLAIM_SECONDARY					0x04000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) /* Message header defines for VersionOffset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) #define I2OVER15	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) #define I2OVER20	0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) /* Default is 1.5, FIXME: Need support for both 1.5 and 2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) #define I2OVERSION	I2OVER15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) #define SGL_OFFSET_0    I2OVERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) #define SGL_OFFSET_4    (0x0040 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) #define SGL_OFFSET_5    (0x0050 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) #define SGL_OFFSET_6    (0x0060 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define SGL_OFFSET_7    (0x0070 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) #define SGL_OFFSET_8    (0x0080 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #define SGL_OFFSET_9    (0x0090 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) #define SGL_OFFSET_10   (0x00A0 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #define SGL_OFFSET_12   (0x00C0 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) #define TRL_OFFSET_5    (0x0050 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #define TRL_OFFSET_6    (0x0060 | I2OVERSION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)  /* msg header defines for MsgFlags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #define MSG_STATIC	0x0100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) #define MSG_64BIT_CNTXT	0x0200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #define MSG_MULTI_TRANS	0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) #define MSG_FAIL	0x2000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #define MSG_LAST	0x4000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) #define MSG_REPLY	0x8000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413)  /* minimum size msg */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) #define THREE_WORD_MSG_SIZE	0x00030000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) #define FOUR_WORD_MSG_SIZE	0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) #define FIVE_WORD_MSG_SIZE	0x00050000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) #define SIX_WORD_MSG_SIZE	0x00060000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) #define SEVEN_WORD_MSG_SIZE	0x00070000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) #define EIGHT_WORD_MSG_SIZE	0x00080000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) #define NINE_WORD_MSG_SIZE	0x00090000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) #define TEN_WORD_MSG_SIZE	0x000A0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) #define I2O_MESSAGE_SIZE(x)	((x)<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) /* Special TID Assignments */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) #define ADAPTER_TID		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) #define HOST_TID		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) #define MSG_FRAME_SIZE		128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) #define NMBR_MSG_FRAMES		128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) #define MSG_POOL_SIZE		16384
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) #define I2O_POST_WAIT_OK	0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) #define I2O_POST_WAIT_TIMEOUT	-ETIMEDOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) #endif /* _SCSI_I2O_H */