/* * scsi.h * * General scsi and linux scsi specific defines and structs. * * Copyright (C) IBM Corp. 2003 * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of the * License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ #include struct scsi_ioctl_command { unsigned int inlen; /* excluding scsi command length */ unsigned int outlen; unsigned char data[1]; /* on input, scsi command starts here then opt. data */ }; /* * Default 5 second timeout */ #define DEF_TIMEOUT 5000 #define SENSE_BUFF_LEN 32 /* * SCSI INQUIRY vendor and model (really product) lengths. */ #define VENDOR_LENGTH 8 #define MODEL_LENGTH 16 #define INQUIRY_CMD 0x12 #define INQUIRY_CMDLEN 6 /* * INQUIRY VPD page 0x83 identifier descriptor related values. Reference the * SCSI Primary Commands specification for details. */ /* * id type values of id descriptors. These are assumed to fit in 4 bits. */ #define SCSI_ID_VENDOR_SPECIFIC 0 #define SCSI_ID_T10_VENDOR 1 #define SCSI_ID_EUI_64 2 #define SCSI_ID_NAA 3 /* * Supported NAA values. These fit in 4 bits, so the "don't care" value * cannot conflict with real values. */ #define SCSI_ID_NAA_DONT_CARE 0xff #define SCSI_ID_NAA_IEEE_REG 5 #define SCSI_ID_NAA_IEEE_REG_EXTENDED 6 /* * Supported Code Set values. */ #define SCSI_ID_BINARY 1 #define SCSI_ID_ASCII 2 struct scsi_id_search_values { u_char id_type; u_char naa_type; u_char code_set; }; /* * Following are the "true" SCSI status codes. Linux has traditionally * used a 1 bit right and masked version of these. So now CHECK_CONDITION * and friends (in ) are deprecated. */ #define SCSI_CHECK_CONDITION 0x2 #define SCSI_CONDITION_MET 0x4 #define SCSI_BUSY 0x8 #define SCSI_IMMEDIATE 0x10 #define SCSI_IMMEDIATE_CONDITION_MET 0x14 #define SCSI_RESERVATION_CONFLICT 0x18 #define SCSI_COMMAND_TERMINATED 0x22 #define SCSI_TASK_SET_FULL 0x28 #define SCSI_ACA_ACTIVE 0x30 #define SCSI_TASK_ABORTED 0x40