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