1 1.19 matt /* $NetBSD: scsi_all.h,v 1.19 2003/01/06 21:02:18 matt Exp $ */ 2 1.5 cgd 3 1.1 cgd /* 4 1.16 wiz * SCSI-specific interface description. 5 1.3 mycroft */ 6 1.3 mycroft 7 1.3 mycroft /* 8 1.1 cgd * Largely written by Julian Elischer (julian (at) tfs.com) 9 1.1 cgd * for TRW Financial Systems. 10 1.1 cgd * 11 1.1 cgd * TRW Financial Systems, in accordance with their agreement with Carnegie 12 1.1 cgd * Mellon University, makes this software available to CMU to distribute 13 1.12 enami * or use in any manner that they see fit as long as this message is kept with 14 1.1 cgd * the software. For this reason TFS also grants any other persons or 15 1.1 cgd * organisations permission to use or modify this software. 16 1.1 cgd * 17 1.1 cgd * TFS supplies this software to be publicly redistributed 18 1.1 cgd * on the understanding that TFS is not responsible for the correct 19 1.1 cgd * functioning of this software in any circumstances. 20 1.1 cgd * 21 1.3 mycroft * Ported to run under 386BSD by Julian Elischer (julian (at) tfs.com) Sept 1992 22 1.1 cgd */ 23 1.1 cgd 24 1.19 matt #ifndef _DEV_SCSIPI_SCSI_ALL_H_ 25 1.19 matt #define _DEV_SCSIPI_SCSI_ALL_H_ 26 1.19 matt 27 1.1 cgd /* 28 1.3 mycroft * SCSI command format 29 1.1 cgd */ 30 1.1 cgd 31 1.1 cgd /* 32 1.3 mycroft * Define dome bits that are in ALL (or a lot of) scsi commands 33 1.1 cgd */ 34 1.12 enami #define SCSI_CTL_LINK 0x01 35 1.12 enami #define SCSI_CTL_FLAG 0x02 36 1.12 enami #define SCSI_CTL_VENDOR 0xC0 37 1.9 thorpej 38 1.9 thorpej 39 1.9 thorpej /* 40 1.9 thorpej * Some old SCSI devices need the LUN to be set in the top 3 bits of the 41 1.9 thorpej * second byte of the CDB. 42 1.9 thorpej */ 43 1.9 thorpej #define SCSI_CMD_LUN_MASK 0xe0 44 1.9 thorpej #define SCSI_CMD_LUN_SHIFT 5 45 1.1 cgd 46 1.11 bouyer /* 47 1.11 bouyer * XXX 48 1.11 bouyer * Actually some SCSI driver expects this structure to be 12 bytes, so 49 1.11 bouyer * don't change it unless you really know what you are doing 50 1.11 bouyer */ 51 1.1 cgd 52 1.6 mycroft struct scsi_generic { 53 1.6 mycroft u_int8_t opcode; 54 1.6 mycroft u_int8_t bytes[11]; 55 1.6 mycroft }; 56 1.6 mycroft 57 1.11 bouyer /* XXX Is this a command ? What's its opcode ? */ 58 1.6 mycroft struct scsi_send_diag { 59 1.6 mycroft u_int8_t opcode; 60 1.6 mycroft u_int8_t byte2; 61 1.3 mycroft #define SSD_UOL 0x01 62 1.3 mycroft #define SSD_DOL 0x02 63 1.3 mycroft #define SSD_SELFTEST 0x04 64 1.3 mycroft #define SSD_PF 0x10 65 1.6 mycroft u_int8_t unused[1]; 66 1.6 mycroft u_int8_t paramlen[2]; 67 1.6 mycroft u_int8_t control; 68 1.6 mycroft }; 69 1.6 mycroft 70 1.12 enami #define SCSI_RESERVE 0x16 71 1.6 mycroft struct scsi_reserve { 72 1.6 mycroft u_int8_t opcode; 73 1.6 mycroft u_int8_t byte2; 74 1.6 mycroft u_int8_t unused[2]; 75 1.6 mycroft u_int8_t length; 76 1.6 mycroft u_int8_t control; 77 1.6 mycroft }; 78 1.6 mycroft 79 1.12 enami #define SCSI_RELEASE 0x17 80 1.6 mycroft struct scsi_release { 81 1.6 mycroft u_int8_t opcode; 82 1.6 mycroft u_int8_t byte2; 83 1.6 mycroft u_int8_t unused[2]; 84 1.6 mycroft u_int8_t length; 85 1.6 mycroft u_int8_t control; 86 1.6 mycroft }; 87 1.6 mycroft 88 1.11 bouyer #define SCSI_CHANGE_DEFINITION 0x40 89 1.6 mycroft struct scsi_changedef { 90 1.6 mycroft u_int8_t opcode; 91 1.6 mycroft u_int8_t byte2; 92 1.6 mycroft u_int8_t unused1; 93 1.6 mycroft u_int8_t how; 94 1.6 mycroft u_int8_t unused[4]; 95 1.6 mycroft u_int8_t datalen; 96 1.6 mycroft u_int8_t control; 97 1.3 mycroft }; 98 1.12 enami #define SC_SCSI_1 0x01 99 1.12 enami #define SC_SCSI_2 0x03 100 1.1 cgd 101 1.18 bouyer /* block descriptor, for mode sense/mode select */ 102 1.6 mycroft struct scsi_blk_desc { 103 1.6 mycroft u_int8_t density; 104 1.6 mycroft u_int8_t nblocks[3]; 105 1.6 mycroft u_int8_t reserved; 106 1.6 mycroft u_int8_t blklen[3]; 107 1.6 mycroft }; 108 1.1 cgd 109 1.1 cgd /* 110 1.1 cgd * Status Byte 111 1.1 cgd */ 112 1.15 ad #define SCSI_OK 0x00 113 1.15 ad #define SCSI_CHECK 0x02 114 1.15 ad #define SCSI_BUSY 0x08 115 1.15 ad #define SCSI_INTERM 0x10 116 1.15 ad #define SCSI_RESV_CONFLICT 0x18 117 1.15 ad #define SCSI_TERMINATED 0x22 118 1.15 ad #define SCSI_QUEUE_FULL 0x28 119 1.15 ad #define SCSI_ACA_ACTIVE 0x30 120 1.19 matt 121 1.19 matt #endif /* _DEV_SCSIPI_SCSI_ALL_H_ */ 122