^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 */