aboutsummaryrefslogtreecommitdiff
path: root/sys/scsi/scsi_all.h
diff options
context:
space:
mode:
authorRodney W. Grimes <rgrimes@FreeBSD.org>1993-08-20 09:23:30 +0000
committerRodney W. Grimes <rgrimes@FreeBSD.org>1993-08-20 09:23:30 +0000
commite5cf9f61346bb19bea9b303d39faea1442785d9a (patch)
tree5dcbce83587cfd32b34f8a919c3f679ce971a405 /sys/scsi/scsi_all.h
parentb6105e6d2ab899c5f0afd990c1bbde159e509aee (diff)
Update scsi code to the latest from Julian. This code is now identical
to the last copy from Julian. After this commit I will be commiting the local fixes and makeing diffs to send back to Julian so he can update his code. ---- From julian@jules.DIALix.oz.au Thu Aug 5 09:25:23 1993 To: hd@world.std.com, julian@jules.DIALix.oz.au Cc: nate@bsd.coe.montana.edu Subject: Re: new scsi ---- From julian@jules.DIALix.oz.au Sat Aug 7 04:13:17 1993 To: hd@world.std.com (HD Associates) Cc: nate@bsd.coe.montana.edu Subject: Re: timeout diffs Here are the diffs to take the scsi stuff to my latest tree from what Nate and you received.. the changes remove all the local timeout stuff and use (un)timeout(), ---- From julian@jules.DIALix.oz.au Sat Aug 7 04:13:45 1993 To: hd@world.std.com (HD Associates) Cc: nate@bsd.coe.montana.edu, briggs@csugrad.cs.vt.edu here is a fix for a silly bug in the scsiconf I just sent out and a similar fix for st.c
Notes
Notes: svn path=/head/; revision=305
Diffstat (limited to 'sys/scsi/scsi_all.h')
-rw-r--r--sys/scsi/scsi_all.h223
1 files changed, 105 insertions, 118 deletions
diff --git a/sys/scsi/scsi_all.h b/sys/scsi/scsi_all.h
index 3d9a829b2968..2a1b6a6ad842 100644
--- a/sys/scsi/scsi_all.h
+++ b/sys/scsi/scsi_all.h
@@ -1,15 +1,31 @@
/*
* HISTORY
* $Log: scsi_all.h,v $
- * Revision 1.1.1.1 1993/06/12 14:57:27 rgrimes
- * Initial import, 0.1 + pk 0.2.4-B1
- *
+ * Revision 1.4 93/08/05 21:37:37 julian
+ * fix the definitionof the last byte of each scsi command.
+ *
+ * Revision 1.3 93/08/01 02:39:21 julian
+ * compiles.. no mode bitfields
+ *
+ * Revision 1.2 93/07/31 22:52:26 julian
+ * removed all bitfields
+ *
+ * Revision 1.1 93/04/12 21:51:01 root
+ * checkin for 'jules'
+ *
* Revision 1.2 1992/11/20 23:07:13 julian
* add a definition for device type T_NODEVICE
*
* Revision 1.1 1992/09/26 22:14:02 julian
* Initial revision
*
+ *
+ * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
+ * -------------------- ----- ----------------------
+ * CURRENT PATCH LEVEL: 1 00098
+ * -------------------- ----- ----------------------
+ *
+ * 16 Feb 93 Julian Elischer ADDED for SCSI system
*
*/
@@ -42,6 +58,15 @@
* SCSI command format
*/
+/*
+ * Define dome bits that are in ALL (or a lot of) scsi commands
+ */
+#define SCSI_CTL_LINK 0x01
+#define SCSI_CTL_FLAG 0x02
+#define SCSI_CTL_VENDOR 0xC0
+#define SCSI_CMD_LUN 0xA0 /*these two should not be needed*/
+#define SCSI_CMD_LUN_SHIFT 5 /* LUN in the cmd is no longer SCSI */
+
struct scsi_generic
{
@@ -52,152 +77,117 @@ struct scsi_generic
struct scsi_test_unit_ready
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[3];
- u_char link:1;
- u_char flag:4;
- u_char :3;
+ u_char control;
};
struct scsi_send_diag
{
u_char op_code;
- u_char uol:1;
- u_char dol:1;
- u_char selftest:1;
- u_char :1;
- u_char pf:1;
- u_char lun:3;
+ u_char byte2;
+#define SSD_UOL 0x01
+#define SSD_DOL 0x02
+#define SSD_SELFTEST 0x04
+#define SSD_PF 0x10
u_char unused[1];
u_char paramlen[2];
- u_char link:1;
- u_char flag:4;
- u_char :3;
+ u_char control;
};
struct scsi_sense
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[2];
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_inquiry
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[2];
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_mode_sense
{
u_char op_code;
- u_char :3;
- u_char dbd:1;
- u_char rsvd:1;
- u_char lun:3;
- u_char page_code:6;
- u_char page_ctrl:2;
+ u_char byte2;
+#define SMS_DBD 0x08
+ u_char page;
+#define SMS_PAGE_CODE 0x3F
+#define SMS_PAGE_CTRL 0xC0
+#define SMS_PAGE_CTRL_CURRENT 0x00
+#define SMS_PAGE_CTRL_CHANGEABLE 0x40
+#define SMS_PAGE_CTRL_DEFAULT 0x80
+#define SMS_PAGE_CTRL_SAVED 0xC0
u_char unused;
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_mode_sense_big
{
u_char op_code;
- u_char :3;
- u_char dbd:1;
- u_char rsvd:1;
- u_char lun:3;
- u_char page_code:6;
- u_char page_ctrl:2;
+ u_char byte2; /* same bits as small version */
+ u_char page; /* same bits as small version */
u_char unused[4];
u_char length[2];
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_mode_select
{
u_char op_code;
- u_char sp:1;
- u_char :3;
- u_char pf:1;
- u_char lun:3;
+ u_char byte2;
+#define SMS_SP 0x01
+#define SMS_PF 0x10
u_char unused[2];
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_mode_select_big
{
u_char op_code;
- u_char sp:1;
- u_char :3;
- u_char pf:1;
- u_char lun:3;
+ u_char byte2; /* same bits as small version */
u_char unused[5];
u_char length[2];
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_reserve
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[2];
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_release
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[2];
u_char length;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char control;
};
struct scsi_prevent
{
u_char op_code;
- u_char :5;
- u_char lun:3;
+ u_char byte2;
u_char unused[2];
- u_char prevent:1;
- u_char :7;
- u_char link:1;
- u_char flag:1;
- u_char :6;
+ u_char how;
+ u_char control;
};
-#define PR_PREVENT 1
-#define PR_ALLOW 0
+#define PR_PREVENT 0x01
+#define PR_ALLOW 0x00
/*
* Opcodes
@@ -240,19 +230,31 @@ struct scsi_prevent
struct scsi_inquiry_data
{
- u_char device_type:5;
- u_char device_qualifier:3;
- u_char dev_qual2:7;
- u_char removable:1;
- u_char ansii_version:3;
- u_char :5;
+ u_char device;
+#define SID_TYPE 0x1F
+#define SID_QUAL 0xE0
+#define SID_QUAL_LU_OK 0x00
+#define SID_QUAL_LU_OFFLINE 0x20
+#define SID_QUAL_RSVD 0x40
+#define SID_QUAL_BAD_LU 0x60
+ u_char dev_qual2;
+#define SID_QUAL2 0x7F
+#define SID_REMOVABLE 0x80
+ u_char version;
+#define SID_ANSII 0x07
+#define SID_ECMA 0x38
+#define SID_ISO 0xC0
u_char response_format;
u_char additional_length;
u_char unused[2];
- u_char :3;
- u_char can_link:1;
- u_char can_sync:1;
- u_char :3;
+ u_char flags;
+#define SID_SftRe 0x01
+#define SID_CmdQue 0x02
+#define SID_Linked 0x08
+#define SID_Sync 0x10
+#define SID_WBus16 0x20
+#define SID_WBus32 0x40
+#define SID_RelAdr 0x80
char vendor[8];
char product[16];
char revision[4];
@@ -262,37 +264,22 @@ struct scsi_inquiry_data
struct scsi_sense_data
{
- u_char error_code:4;
- u_char error_class:3;
- u_char valid:1;
+ u_char error_code; /* same bits as new version */
union
{
struct
{
- u_char blockhi:5;
- u_char vendor:3;
+ u_char blockhi;
u_char blockmed;
u_char blocklow;
} unextended;
struct
{
u_char segment;
- u_char sense_key:4;
- u_char :1;
- u_char ili:1;
- u_char eom:1;
- u_char filemark:1;
+ u_char flags; /* same bits as new version */
u_char info[4];
u_char extra_len;
/* allocate enough room to hold new stuff
- u_char cmd_spec_info[4];
- u_char add_sense_code;
- u_char add_sense_code_qual;
- u_char fru;
- u_char sense_key_spec_1:7;
- u_char sksv:1;
- u_char sense_key_spec_2;
- u_char sense_key_spec_3;
( by increasing 16 to 26 below) */
u_char extra_bytes[26];
} extended;
@@ -300,33 +287,33 @@ struct scsi_sense_data
};
struct scsi_sense_data_new
{
- u_char error_code:7;
- u_char valid:1;
+ u_char error_code;
+#define SSD_ERRCODE 0x7F
+#define SSD_ERRCODE_VALID 0x80
union
{
- struct
+ struct /* this is depreciated, the standard says "DON'T"*/
{
- u_char blockhi:5;
- u_char vendor:3;
+ u_char blockhi;
u_char blockmed;
u_char blocklow;
} unextended;
struct
{
u_char segment;
- u_char sense_key:4;
- u_char :1;
- u_char ili:1;
- u_char eom:1;
- u_char filemark:1;
+ u_char flags;
+#define SSD_KEY 0x0F
+#define SSD_ILI 0x20
+#define SSD_EOM 0x40
+#define SSD_FILEMARK 0x80
u_char info[4];
u_char extra_len;
u_char cmd_spec_info[4];
u_char add_sense_code;
u_char add_sense_code_qual;
u_char fru;
- u_char sense_key_spec_1:7;
- u_char sksv:1;
+ u_char sense_key_spec_1;
+#define SSD_SCS_VALID 0x80
u_char sense_key_spec_2;
u_char sense_key_spec_3;
u_char extra_bytes[16];