1 /* 2 * HISTORY 3 * 4 * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE 5 * -------------------- ----- ---------------------- 6 * CURRENT PATCH LEVEL: 1 00098 7 * -------------------- ----- ---------------------- 8 * 9 * 16 Feb 93 Julian Elischer ADDED for SCSI system 10 * 11 */ 12 13 /* 14 * SCSI changer interface description 15 */ 16 17 /* 18 * Written by Stefan Grefen (grefen (at) goofy.zdv.uni-mainz.de soon grefen (at) convex.com) 19 * based on the SCSI System by written Julian Elischer (julian (at) tfs.com) 20 * for TRW Financial Systems. 21 * 22 * TRW Financial Systems, in accordance with their agreement with Carnegie 23 * Mellon University, makes this software available to CMU to distribute 24 * or use in any manner that they see fit as long as this message is kept with 25 * the software. For this reason TFS also grants any other persons or 26 * organisations permission to use or modify this software. 27 * 28 * TFS supplies this software to be publicly redistributed 29 * on the understanding that TFS is not responsible for the correct 30 * functioning of this software in any circumstances. 31 * 32 */ 33 34 /* 35 * Ported to run under 386BSD by Julian Elischer (julian (at) tfs.com) Sept 1992 36 */ 37 38 /* 39 * SCSI command format 40 */ 41 struct scsi_read_element_status 42 { 43 u_char op_code; 44 u_char element_type_code:4; 45 u_char voltag:1; 46 u_char lun:3; 47 u_char starting_element_addr[2]; 48 u_char number_of_elements[2]; 49 u_char resv1; 50 u_char allocation_length[3]; 51 u_char resv2; 52 u_char link:1; 53 u_char flag:1; 54 u_char :6; 55 }; 56 #define RE_ALL_ELEMENTS 0 57 #define RE_MEDIUM_TRANSPORT_ELEMENT 1 58 #define RE_STORAGE_ELEMENT 2 59 #define RE_IMPORT_EXPORT 3 60 #define RE_DATA_TRANSFER_ELEMENT 4 61 62 struct scsi_move_medium 63 { 64 u_char op_code; 65 u_char :5; 66 u_char lun:3; 67 u_char transport_element_address[2]; 68 u_char source_address[2]; 69 u_char destination_address[2]; 70 u_char rsvd[2]; 71 u_char invert:1; 72 u_char :7; 73 u_char link:1; 74 u_char flag:1; 75 u_char :6; 76 }; 77 78 struct scsi_position_to_element 79 { 80 u_char op_code; 81 u_char :5; 82 u_char lun:3; 83 u_char transport_element_address[2]; 84 u_char source_address[2]; 85 u_char rsvd[2]; 86 u_char invert:1; 87 u_char :7; 88 u_char link:1; 89 u_char flag:1; 90 u_char :6; 91 }; 92 93 /* 94 * Opcodes 95 */ 96 #define POSITION_TO_ELEMENT 0x2b 97 #define MOVE_MEDIUM 0xa5 98 #define READ_ELEMENT_STATUS 0xb8 99 100 struct scsi_element_status_data 101 { 102 u_char first_element_reported[2]; 103 u_char number_of_elements_reported[2]; 104 u_char rsvd; 105 u_char byte_count_of_report[3]; 106 }; 107 108 struct element_status_page 109 { 110 u_char element_type_code; 111 u_char :5; 112 u_char avoltag:1; 113 u_char pvoltag:1; 114 u_char element_descriptor_length[2]; 115 u_char rsvd; 116 u_char byte_count_of_descriptor_data[3]; 117 }; 118 119